Permalänk
Medlem

c++ error

Jag gjorde ett enkelt c++ script (är nybörjade på just c++) utifrån ett assignment jag fick i en bok ;D

varför fungerar inte följande:

earthpounds * 0.17 = moonpounds;

= error C2106: '=' : left operand must be l-value

dubble earthpounds is not modigiable lvalue

http://pastebin.com/4uQGUmQi (koden)

/* *C++ A Beginner´s Guide* *ASSIGNMENT* *Module 1 Master Check, number 14* "The moons gravity is about 17 percent that of Earths. Write a program that displays a table that shows Earth pounds and their equivalent moon weight. Have the table run from 1 to 100 punds. Output a newline ever 25 punds. */ #include <iostream> using namespace std; int main (){ double moonpounds; int earthpounds; moonpounds = 0.0; earthpounds = 0; int counter; counter = 0; if(earthpounds < 100.0) { earthpounds++; earthpounds * 0.17 = moonpounds; cout << "If you weight " << earthpounds << " pounds on earth, you will weight" << moonpounds << " on the moon. :D"; counter++; if(counter = 25) { cout << "\n"; counter = 0; } } return 0; }

Permalänk
Medlem

= i C++ står för tilldelning, inte ekvivalens. Det betyder att du nu försöker tilldela värdet av moonpunds till earthpunds * 0.17, vilket ju givetvis inte går eftersom earthpounds * 0.17 inte är en variabel utan ett multiplicerings-uttryck.

Jag antar att syftet var att tilldela earthpounds * 0.17 till moonpounds? I så fall så får du helt enkelt vända på uttrycket så att tilldelningen sker till moonpounds istället.

Permalänk
Medlem
Skrivet av perost:

= i C++ står för tilldelning, inte ekvivalens. Det betyder att du nu försöker tilldela värdet av moonpunds till earthpunds * 0.17, vilket ju givetvis inte går eftersom earthpounds * 0.17 inte är en variabel utan ett multiplicerings-uttryck.

Jag antar att syftet var att tilldela earthpounds * 0.17 till moonpounds? I så fall så får du helt enkelt vända på uttrycket så att tilldelningen sker till moonpounds istället.

Jag vill ju att
earthpounds gånger 0.17 blir = moonpounds
och om jag ökar earthpounds med en vill jag att den ska dra den uträkningen igen (gångra varibeln earthpounds med 0.17 och svaret blir moonpounds nya värde)

alltså precis det du sa*

Hur ska jag göra då? (:

Permalänk
Medlem

moonpounds = earthpounds * 0.17;

Däremot behöver du en loop för att återanvända koden i det syftet du gav.
Ta en titt på For, while, do-while loopar.

Permalänk
Medlem
Skrivet av Xergon:

moonpounds = earthpounds * 0.17;

tack, så varför funkar det inte med min variant då?

Permalänk
Medlem

Det finns vissa regler som säger hur man ska göra när man ger en variabel ett värde, en av dessa är att variabeln ska stå till vänster;

variabel = värde;

vilket kan beskrivas, variabel tilldelas värdet värde, så anledning till att du fick ett felmeddelande är som tidigare nämnts
kompilatorn antog att "earthpounds * 0.17" = variabel och moonpounds = värde.

Permalänk
Medlem
Skrivet av Xergon:

Det finns vissa regler som säger hur man ska göra när man ger en variabel ett värde, en av dessa är att variabeln ska stå till vänster;

variabel = värde;

vilket kan beskrivas, variabel tilldelas värdet värde, så anledning till att du fick ett felmeddelande är som tidigare nämnts
kompilatorn antog att "earthpounds * 0.17" = variabel och moonpounds = värde.

Okej tack (:

Varför visar den bara vad 1 earthpound är lika med, och inte alla till hundra?

if(earthpounds < 100.0) { earthpounds++; earthpounds * 0.17 = moonpounds; cout << "If you weight " << earthpounds << " pounds on earth, you will weight" << moonpounds << " on the moon. :D"; counter++; if(counter = 25) { cout << "\n"; counter = 0; } }

är min loop dålig? eller de är klart det funkar inte så

Permalänk
Medlem

Det är ingen loop, det är en if-sats, du kanske skulle läsa lite, kolla på lite tutorials och faktiskt lägga några timmar innan du frågar ytterst triviala frågor?:P Allt finns på nätet, sök och du skola finna.
lycka till!

Visa signatur

Spelrigg: 800D| i7 3930K@4,7 GHz - Custom WC | 32 GB Kingston HyperX Beast | 7970 GHz X-Edition |1x30 Dell U3011, 2x27" | Sennheiser HD650 | Xonar Essence STX |
Laptop: G74SX 17,3" 120 Hz 3D |
Server: Phenom II X4 955BE | Corsair XMS3 8 GB | 16 HDDs, 27 TB |
HTPCs: ASUS EEE Box 1.8 Ghz | Blu-Ray | OCZ Vertex 2 60 GB | 4 GB RAM |

Permalänk
Medlem
Permalänk
Medlem
Skrivet av Gnejs:

Det är ingen loop, det är en if-sats, du kanske skulle läsa lite, kolla på lite tutorials och faktiskt lägga några timmar innan du frågar ytterst triviala frågor?:P Allt finns på nätet, sök och du skola finna.
lycka till!

även om det inte är en loop så kan man väl kalla den det då den används istället för f.ex. en for-loop :/

Skrivet av MarcusW:

Tack .D
Men jag har massor att läsa om c++, jag undrar bara varför inte den delen av skriptet funkade :3

Skrivet av Xergon:

moonpounds = earthpounds * 0.17;

Däremot behöver du en loop för att återanvända koden i det syftet du gav.
Ta en titt på For, while, do-while loopar.

Gör gärna ett nytt post istället för lägga till massa information efter, för jag såg det du skrev först nu ^^
Om det var det du gjorde för annars så läser jag otroligt slarvigt P:

Mm men i det här fallet kan det också göras med en If sats? Jag är van vid programmerings språket autoit, så det kanske blir lite skumt ibland :l

Permalänk
Medlem
Skrivet av spel565:

även om det inte är en loop så kan man väl kalla den det då den används istället för f.ex. en for-loop :/

Nej, det kan man inte, för det är inte på något sätt en loop. En if-sats kontrollerar om villkoret är sant eller falskt, och om det är sant så körs innehållet i satsen. Detta görs endast en gång, så koden i din if-sats kommer att köras en gång efterom earthpounds är mindre än 100. Om du vill upprepa något så är det en for-, while- eller do-loop du vill ha.

I det här fallet så är det förmodligen bäst med en enkel for-loop. counter-variabeln är också överflödig, du kan använda modulo-operatorn % för att kontrollera om loop-variabeln är en multipel av 25.

Permalänk
Medlem
Skrivet av spel565:

Jag är van vid programmerings språket autoit, så det kanske blir lite skumt ibland :l

Jag känner inte till autoit, däremot känner jag till en hel del andra språk, och inga av dom liknar det du skriver. Det känns som du åtminstone borde läsa på lite om språket så att du kan det mesta grundläggande, vilket inte borde ta över en timme eller två.

Permalänk
Medlem
Skrivet av Dalton Sleeper:

Jag känner inte till autoit, däremot känner jag till en hel del andra språk, och inga av dom liknar det du skriver. Det känns som du åtminstone borde läsa på lite om språket så att du kan det mesta grundläggande, vilket inte borde ta över en timme eller två.

Jag håller på att läsa diverse böcker, och har gjort lite uppgifter från dom. Jag skapade tråden då jag absolut inte kunde förstå varför inte "variabel1 * 0.17 = variabel2" inte var giltigt. Jag vet varför nu, och jag har fått svar på frågan.
Och nu när jag ändå har en tråd så postar jag och undrar varför vissa delar inte funkar, istället för göra research.

Permalänk
Medlem

Vet inte varför jag orkar ta mig tid att skriva i den här tråden igen men men -.-
Du har ju uppenbarligen knappt försökt hitta lösningar själv, du läser din egen tråd slarvigt och kommenterar hur folk skall svara på den för att du inte kan läsa igenom den ordentligt och ta in informationen. Du har även mage att ifrågasätta det folk skriver när de försöker hjälpa, då du antagligen inte kan någonting om C++ och någon skriver att det är si eller så, då är det oftast någon som vet vad han talar om. Ta emot informationen och gör något vettigt av den. Som t.ex. att skriva en loop... googla på "C++ for loop" och du lär få fram tusentals exempel på hur en loop kan se ut, ändå gör du något helt annat och frågar direkt efter hjälp varför det inte funkar. Du bör ju ha någon egen förmåga att lösa problem själv, annars förstår jag inte varför du inte ens försöka programmera, om du ska fråga efter hjälp vid varje litet fel så är det bättre att hitta på något annat.
Tänk på att det är folk som faktiskt tar sig tid att hjälpa till, försök vara lite trevligare och inte fråga om småsaker du faktiskt kan lösa själv om du försöker i 10 minuter.
Sen är det inget skript.... -.-
gl hf

Visa signatur

Spelrigg: 800D| i7 3930K@4,7 GHz - Custom WC | 32 GB Kingston HyperX Beast | 7970 GHz X-Edition |1x30 Dell U3011, 2x27" | Sennheiser HD650 | Xonar Essence STX |
Laptop: G74SX 17,3" 120 Hz 3D |
Server: Phenom II X4 955BE | Corsair XMS3 8 GB | 16 HDDs, 27 TB |
HTPCs: ASUS EEE Box 1.8 Ghz | Blu-Ray | OCZ Vertex 2 60 GB | 4 GB RAM |

Permalänk
Medlem
Skrivet av Gnejs:

Vet inte varför jag orkar ta mig tid att skriva i den här tråden igen men men -.-
Du har ju uppenbarligen knappt försökt hitta lösningar själv, du läser din egen tråd slarvigt och kommenterar hur folk skall svara på den för att du inte kan läsa igenom den ordentligt och ta in informationen. Du har även mage att ifrågasätta det folk skriver när de försöker hjälpa, då du antagligen inte kan någonting om C++ och någon skriver att det är si eller så, då är det oftast någon som vet vad han talar om. Ta emot informationen och gör något vettigt av den. Som t.ex. att skriva en loop... googla på "C++ for loop" och du lär få fram tusentals exempel på hur en loop kan se ut, ändå gör du något helt annat och frågar direkt efter hjälp varför det inte funkar. Du bör ju ha någon egen förmåga att lösa problem själv, annars förstår jag inte varför du inte ens försöka programmera, om du ska fråga efter hjälp vid varje litet fel så är det bättre att hitta på något annat.
Tänk på att det är folk som faktiskt tar sig tid att hjälpa till, försök vara lite trevligare och inte fråga om småsaker du faktiskt kan lösa själv om du försöker i 10 minuter.
Sen är det inget skript.... -.-
gl hf

Jag skapade tråden då jag undrade varför "earthpounds * 0.17 = moonpounds;" inte funkade, då jag inte kunde se något fel på den. Jag googlade utan svar, nu fick jag mitt svar på det. Tack till alla medverkande... tack och hej.