Muskampen 2025: Segraren korad!

Nybörjare inom programmering söker svar !

Permalänk
Medlem

Nybörjare inom programmering söker svar !

Tjo !

Jag började läsa Programmering 1 förra veckan och körde fast direkt, heja. Jag håller på med en uppgift och jobbar i Microsoft Visual C++ 2010 Express. Tycker personligen att kurslitteraturen innehåller för lite information för att klara uppgiften och de sidor jag letat efter hjälp på har ingen specifik lösning på just det problem jag (tror att jag) stöter på.

Det jag vill få ut är ett program som låter mig skriva in hur mycket jag vill sätta in på banken varje år, vad mitt sparmål är och hur hög räntan är. Programmet ska därefter räkna ut hur många år det tar för mig att nå upp till sparmålet och hur mycket jag då kommer att ha.

Någon som kan se mitt fel och en lösning på detta:

#include <iostream> using namespace std; float main() { int yearCounter; // Åren som går float rate; // Ränta float bank; // Det jag har sparat float nr1, nr2, nr3; // Insättningssumma, sparmål, räntesats { cout << "Ange hur mycket du vill sätta in varje år: "; // ex 3000 cin >> nr1; cout << "Ange ditt sparmål: "; // ex 50000 cin >> nr2; cout << "Ange räntesatsen i procent: "; // 4.2 cin >> nr3; } rate = nr3/100; // Räntan på 4.2% blir då 0.042 så jag kan gångra in det bank = nr1; // Efter första insättningen blir det jag har på banken då insättningssumman yearCounter = 0; // Än har inget år passerat while (bank < nr2) // Medan jag har mindre än 50000 på banken vill jag att: { bank*(rate+1); // Det som sparats går upp med räntan, alltså gångras med 1.042 bank+nr1; // Nya 3000 sätts in yearCounter++; // Visar att ett år har gått vid varje insättning } cout << "Ditt sparmål uppnås efter " << yearCounter << "år.\n"; cout << "Ditt saldo kommer då att vara " << bank << "kr.\n"; cin.get(); cin.get(); return 0; }

Tack på förhand !

/Harasse

Omformulering
Permalänk
Hedersmedlem

jag la till code-taggar så att koden är mer läsbar.

Mvh
Moderator Shimonu

Permalänk
Hedersmedlem
Skrivet av Harasse:

Jag misstänker att detta (att beräkna något men inte använda resultatet) sannolikt inte är vad du vill. Dessutom skulle man kunna anse att variabelnamnen (när de väl har ordentliga namn) har märkliga namn (varför heter räntan sum?).

Permalänk
Medlem

Försök att börja direkt med att namnge dina variabler på ett mer lämpligt sätt som beskriver vad de faktiskt gör.
Tänk att en annan person ska kunna lista ut vad de gör.

Sen så ska det inte vara nån semikolon på din while

while( nr4 < nr2) { ............ }

Visa signatur

Corsair 16GB (4x4096MB) CL9 1600Mhz | Asus P8Z77-V PRO |
Samsung SSD Basic 830-Series 256GB | Intel Core i7 3770K 3,5Ghz |
Asus Xonar Essence STX | Noctua NH-U9B SE2 | Antec Performance One P280 | Corsair HX 850W 80+ Gold Modulär | MSI GTX 770

Permalänk
Medlem

Sant, jag har hållit på och ändrat och testat saker så därför har variablerna väldigt konstiga namn. Jag ändrade dom och la till kommentarer (hamnade lite på sniskan när jag la in dom, vänligen ha överseende!) och hoppas att det ska göra det lättare att tolka.

Permalänk

Vad får du felkoder?

Vid inläsning av ränta är det bättre om du skriver det i decimalform direkt, då kan ert inte bli missförstånd med komma och punkter.

Permalänk
Medlem

Som Elgot skrev, du sparar inte dina beräkningar. Därför får du en evig loop.

Skickades från m.sweclockers.com

Visa signatur

Fractal Design Define R3 | Asus Z170 Pro Gaming | Intel Core i7 6700K | 32 GB Corsair Vengaeance LPX DDR4 2666 MHz | Asus Radeon RX 580 | EVGA SuperNova 850 G2 | Kingston A400 480 GB SSD | 2 x WD Caviar Black 1TB | 2 x Crucial MX500 500 GB SSD

Permalänk
Medlem

Eftersom du använder dig av cin >> x för att hämta input så rekommenderar jag att du också lägger till cin.ignore(); för att rensa inputstreamen från eventuella kvarvarande tecken.

EX:
cin >> x;
cin.ignore();

Permalänk
Medlem

Det här är felkoderna så ja, det sitter i loopen.

1>c:\users\hasse\documents\visual studio 2010\projects\spar\spar\main.cpp(26): warning C4552: '*' : operator has no effect; expected operator with side-effect
1>c:\users\hasse\documents\visual studio 2010\projects\spar\spar\main.cpp(27): warning C4552: '+' : operator has no effect; expected operator with side-effect

Oliros, grejen är att programmet ska vara riktat till en annan person och inte bara vara så praktiskt som möjligt för mig att göra om du förstår vad jag menar. Alltså att det ska vara lätt för någon att kunna läsa frågan om vilken ränta det är och bara kunna svara "5" istället för att jag skulle skriva "Ange ränta i decimalform" och man var tvungen att skriva "0.05".

Exakt hur jag ska åtgärda det här är mitt största problem, jag har helt slut på idéer om hur det ska se ut inuti loopen för att det ska vara korrekt.. Hjälp !

Permalänk
Medlem

Det är tre saker som är fel.

Vanligtvis använder man int main() istället för float main(), då felkoder för operativsystem är heltal (0 om det fungerar, 1 om det skiter sig)

Du öppnar ett variabelscope med
{
}

Edit: Nvm, du deklarerade dem inte där. Men värt att tänka på att det kan ske!

så när du går utanför ditt scope där du läser in variabler från inströmmen slutar de existera. Du använder nr3, nr1 och nr2 utanför scopet efter det, när de inte längre finns, vilket leder till lite problem :). Ta bort måsvingarna runt där du läser in lite grejer.

Du borde även ändra så att
bank+=(nr1*(rate+1));
bank+=nr1;
dvs lägg till ett = efter.

Resten ser väl bra ut I guess, har inte orkat testköra, utan sneglade endast ett par sekunder.

FYI, kod är till för att läsas för människor -- kompilatorn bryr sig inte om variabelnamn. Det finns lite att jobba på där. Var inte rädd för långa, tydliga namn. Lönar sig som fan när man får skumma fel.

Permalänk
Hedersmedlem
Skrivet av Harasse:

Jag började läsa Programmering 1 förra veckan och körde fast direkt, heja. Jag håller på med en uppgift och jobbar i Microsoft Visual C++ 2010 Express. Tycker personligen att kurslitteraturen innehåller för lite information för att klara uppgiften och de sidor jag letat efter hjälp på har ingen specifik lösning på just det problem jag (tror att jag) stöter på.

Det är väl klart att kurslitteraturen inte ger dig svar på specifika frågor, men det får vara en sällsynt dålig litteratur om den inte går igenom hur man sparar undan värden i variabler.

Det finns inga genvägar till att lära sig programmering. Det är precis som med alla andra saker, hårt jobb att lära sig tänket. Genom att bara slänga upp hela uppgiften här och be någon annan lösa uppgiften till dig så lär du dig inte mycket.

Jag rekommenderar dig att ta ett problem i taget och fokusera på det. Behöver du hjälp kan du ställa en specifik fråga här i tråden. Typ: "Jag har skrivit denna koden som är tänkt att spara värdet X i variabel Y, men på något sätt innehåller inte Y rätt värde." och så inkluderar du koden i fråga.

Visa signatur

Använd gilla för att markera nyttiga inlägg!

Permalänk
Skrivet av Harasse:

Oliros, grejen är att programmet ska vara riktat till en annan person och inte bara vara så praktiskt som möjligt för mig att göra om du förstår vad jag menar. Alltså att det ska vara lätt för någon att kunna läsa frågan om vilken ränta det är och bara kunna svara "5" istället för att jag skulle skriva "Ange ränta i decimalform" och man var tvungen att skriva "0.05".

Hahaha, sorry. Tappade hjärnan där ett tag! Det du skrivit är korrekt!

Permalänk
Medlem

Fluffets tips om att lägga in ett = där inne i loopen gjorde susen, jag kollade upp på cplusplus.com vad det betydde och det ordnade operatorn jag ville ha som inte fanns i boken.

Tro mig Giplet, jag hade provat allt innan jag kom hit för att rätt och slätt be om hjälp (det är långt ifrån min natur att göra det). Jag var så säker på att jag gjort allt rätt men det var den här lilla detaljen som saknades. Om jag måste fråga andra om vad jag ska göra efter att ha läst programmering i en vecka så ringer varningsklockorna, jag ska hitta fler källor till information så ska nog det här gå bra.

Permalänk
Hedersmedlem
Skrivet av Harasse:

Fluffets tips om att lägga in ett = där inne i loopen gjorde susen, jag kollade upp på cplusplus.com vad det betydde och det ordnade operatorn jag ville ha som inte fanns i boken.

Tro mig Giplet, jag hade provat allt innan jag kom hit för att rätt och slätt be om hjälp (det är långt ifrån min natur att göra det). Jag var så säker på att jag gjort allt rätt men det var den här lilla detaljen som saknades. Om jag måste fråga andra om vad jag ska göra efter att ha läst programmering i en vecka så ringer varningsklockorna, jag ska hitta fler källor till information så ska nog det här gå bra.

Ärligt talat så vägrar jag tro att din bok inte beskriver hur man tilldelar variabler.

Min poäng är att du inte har bemödat dig ens om att beskriva vilket problemet är i ditt originalinlägg. Du bara slänger ut hela koden och säger att det inte funkar. Ska du hitta svaret i en bok eller mha google så måste du veta vad ditt problem är.

Visa signatur

Använd gilla för att markera nyttiga inlägg!

Permalänk
Medlem
Skrivet av giplet:

Det är väl klart att kurslitteraturen inte ger dig svar på specifika frågor, men det får vara en sällsynt dålig litteratur om den inte går igenom hur man sparar undan värden i variabler.

Det finns inga genvägar till att lära sig programmering. Det är precis som med alla andra saker, hårt jobb att lära sig tänket. Genom att bara slänga upp hela uppgiften här och be någon annan lösa uppgiften till dig så lär du dig inte mycket.

Jag rekommenderar dig att ta ett problem i taget och fokusera på det. Behöver du hjälp kan du ställa en specifik fråga här i tråden. Typ: "Jag har skrivit denna koden som är tänkt att spara värdet X i variabel Y, men på något sätt innehåller inte Y rätt värde." och så inkluderar du koden i fråga.

Programmering som nybörjare är inget eldprov. Precis som att folk glömmer semikolon kanske folk glömmer sina shorthand operators. Hur ska man lära sig om vad som orsakade problemet om man inte ens vet vad som är fel? Jag kommer också ihåg att det var konstigt i början. Varför inte bara hjälpa till? Nu när han läst på vad som är fel och varför det var fel kommer han ju inte göra det misstaget igen.

Permalänk
Hedersmedlem
Skrivet av Fluffet:

Programmering som nybörjare är inget eldprov. Precis som att folk glömmer semikolon kanske folk glömmer sina shorthand operators. Hur ska man lära sig om vad som orsakade problemet om man inte ens vet vad som är fel? Jag kommer också ihåg att det var konstigt i början. Varför inte bara hjälpa till? Nu när han läst på vad som är fel och varför det var fel kommer han ju inte göra det misstaget igen.

Jag förstår vad du menar. Men går man en programmeringskurs så lär man få det mesta av den kunskap som behövs genom litteratur och föreläsningar. En uppgift ska vara utmanande men inte helt ny. Därför tycker jag inte att det är för mycket begärt att kunna förklara vad felet är. Det är en hel del här som ställer frågor här och påstår att deras böcker inte tar upp ämnet eller att läraren inte beskrivit vad de ska göra. Om inte informationen hade funnits i materialet så hade nästan ingen kunnat klara kurserna.

Kompilatorn säger följande om rad X. Jag ser inget fel.
Jag försöker öka värdet på kontot med årets ränta, men värdet ökar inte. Vad kan vara fel?
Jag har skrivit följande kod, men den levererar fel svar. Kan jag på något sätt se vad som händer så att jag kan förstå problemet?

Kan man inte komma med en adekvat felbeskrivning har man missat något grundläggande. SweClockers är inte ett forum för att på enklast möjliga vis få sina skoluppgifter lösta.

Visa signatur

Använd gilla för att markera nyttiga inlägg!

Permalänk
Medlem
Skrivet av giplet:

Jag förstår vad du menar. Men går man en programmeringskurs så lär man få det mesta av den kunskap som behövs genom litteratur och föreläsningar. En uppgift ska vara utmanande men inte helt ny. Därför tycker jag inte att det är för mycket begärt att kunna förklara vad felet är. Det är en hel del här som ställer frågor här och påstår att deras böcker inte tar upp ämnet eller att läraren inte beskrivit vad de ska göra. Om inte informationen hade funnits i materialet så hade nästan ingen kunnat klara kurserna.

Kompilatorn säger följande om rad X. Jag ser inget fel.
Jag försöker öka värdet på kontot med årets ränta, men värdet ökar inte. Vad kan vara fel?
Jag har skrivit följande kod, men den levererar fel svar. Kan jag på något sätt se vad som händer så att jag kan förstå problemet?

Kan man inte komma med en adekvat felbeskrivning har man missat något grundläggande. SweClockers är inte ett forum för att på enklast möjliga vis få sina skoluppgifter lösta.

Jag köper att ni inte uppskattar mitt sätt att hantera situationen men jag vill bara tillägga att jag pluggar på distans samt skickade en liknande fråga till läraren för sex dagar sedan som jag inte fått besvarad än. Jag valde att vända mig hit för att det var den sista utvägen jag såg men jag tar åt mig av alla tips ni gett och förhoppningsvis ska det inte upprepas.

Tack för mig !

Skickades från m.sweclockers.com