Vinnaren i pepparkakshustävlingen!
  • 1
  • 2
2014-11-07, 00:34
  #13
Medlem
Citat:
Ursprungligen postat av heh420
Hej, tillbaks igen med ännu en fråga, denna gång förmodligen lika simpel som förut men tycker att min lärobok inte går igenom vissa saker särskilt noga (kanske för att det inte behövs och jag bara är trög.)

Det är så att jag har den här uppgfiten som ska vara klar imorrn och jag tycker att det går relativt bra just nu men har stött på ett litet problem när det kommer till den här koden:
Kod:
// Inlämningsuppgift 1.1.cpp : main project file.

#include "stdafx.h"
#include <iostream>

using namespace System;
using namespace std;

int main()
{
	cout << "Ange hur mycket du vill sätta in varje år: ";
	float kr;	//Hur mycket du vill spara varje år.
	cin >> kr;
	cout << "Ange ditt sparmål: ";
	float sparmal;	//Vad ditt sparmål är.
	cin >> sparmal;
	cout << "Ange rantesatsen i procent: ";
	float ranta;	//Din ränta i decimalform.
	cin >> ranta;
	float rantaProcent = ranta / 100;	//Omvandlar räntan till procentform.
	int ar = 0;	//Hur många år det tar att nå ditt sparmål.

	do 
	{
		(kr * rantaProcent);	//Räknar ut hur många år det tar att nå ditt sparmål.
		ar ++;	//Lägger till ett år varje gång loopen körs tills sparmålet är uppnåt.
	}
	while (kr < sparmal);

	cout << "Ditt sparmal uppnas efter: " << ar << " ar." << endl;
	cout << "Ditt saldo kommer da att vara: " << kr << " kr.";

	system("PAUSE");
}

Det är så att koden slutar "svara" när jag matat in räntesatsen och då förmodar jag att det är något fel med hur jag hanterar uträkningen dvs "(kr * rantaProcent);

EDIT: Är inte särskilt skarp när det kommer till matematik överhuvudtaget, läser upp den vid sidan av det här.

Eftersom kr < sparmal alltid kommer att vara sant så kommer den köra loopen i all oändlighet. Ingenstans ändrar du på kr eller sparmal i loopen.
Citera
2014-11-07, 00:38
  #14
Medlem
Citat:
Ursprungligen postat av Gottisborgen
Eftersom kr < sparmal alltid kommer att vara sant så kommer den köra loopen i all oändlighet. Ingenstans ändrar du på kr eller sparmal i loopen.
Verkar inte så, om jag byter ut kr * rantaProcent; till kr++; så funkar koden och när sparmålet är uppnåt så fortsätter koden med cout <<...
Citera
2014-11-07, 00:43
  #15
Medlem
Ondves avatar
(kr * rantaProcent);

Där har du felet gissar jag på... Du multiplicerar, men vart tar resultatet vägen?
Citera
2014-11-07, 01:12
  #16
Medlem
Citat:
Ursprungligen postat av heh420
Verkar inte så, om jag byter ut kr * rantaProcent; till kr++; så funkar koden och när sparmålet är uppnåt så fortsätter koden med cout <<...

Det du vill göra är att skapa en till variabel, en double eller nått ifall du vill/bryr dig om decimaler, i denna lägger du i varje loop till det som sparas, och du gångrar sedan detta med räntan eller räknar ut hur mycket räntan blir o lägger till det.
Citera
2014-11-07, 10:25
  #17
Medlem
Har nu skapat en variabel som ska lagra hur mycket som sparats med hjälp utav en ekvation:

sparat = kr * rantaProcent;

Men det funkar inte, om jag byter ut det mot ett enkelt sparat++; så fungerar koden, alltså bör det vara något fel med hur jag hanterar ekvationen...
Citera
2014-11-07, 10:50
  #18
Medlem
Citat:
Ursprungligen postat av heh420
Har nu skapat en variabel som ska lagra hur mycket som sparats med hjälp utav en ekvation:

sparat = kr * rantaProcent;

Men det funkar inte, om jag byter ut det mot ett enkelt sparat++; så fungerar koden, alltså bör det vara något fel med hur jag hanterar ekvationen...
Kod:
#include <iostream>

using namespace std;

int main()
{

	float kr, sparmal, ranta, rantaProcent, ar, currentAmount;
	ar = 0;

	cout << "Ange hur mycket du vill sätta in varje år: ";
	cin >> kr;
	cout << "Ange ditt sparmål: ";
	cin >> sparmal;
	cout << "Ange rantesatsen i procent: ";
	cin >> ranta;
	rantaProcent = 1+(ranta / 100);	//Omvandlar räntan till procentform.
	currentAmount = 0;

	do
	{
		currentAmount += kr;
		currentAmount *= rantaProcent;
		ar++;	//Lägger till ett år varje gång loopen körs tills sparmålet är uppnåt.
	} while (currentAmount < sparmal);


	cout << "Ditt sparmal uppnas efter: " << ar << " ar." << endl;
	cout << "Ditt saldo kommer da att vara: " << currentAmount << " kr.";

	system("PAUSE");
}

Gjorde om lite i din while-loop.
Jag la till så att varje gång den görs så läggs det årliga beloppet som man sparar undan, in i "sparkontot".
Citera
2014-11-07, 11:13
  #19
Medlem
Tack! Har nu bättre förstående om loopar och hann klart alldelles precis innan deadline
Citera
2014-11-07, 11:16
  #20
Medlem
Döp variablerna mer detaljerat så blir koden lättare att skriva och förstå. Kolla i en synonymordbok om du kör fast med namngivningen. En variabeln med namnet `kr` skulle kunna innehålla vad som helst, men det här är svårt att missuppfatta:

Kod:
antalForflutnaAr = 0;
while (saldo <= saldoMal) {
    saldo *= ranta;
    saldo += arligInsattning;
    ++antalForflutnaAr;
}

Gör testet först, dvs använd while istället för do-while, ifall man redan har så mycket som målet är. Gör förräntningen före insättningen eftersom man antagligen inte sätter in sina sparpengar och direkt efter en årlig insättning (men kolla hur uppgiften är formulerad). Öka antalForflutnaAr sist när allt jobb under året är utfört.
Citera
2016-07-31, 23:28
  #21
Medlem
Tjenare behöver lite hjälp!
Vill bara få till motsvarade Beep(int, int) för Xcode, finner eget bra svar förutom '\a'.
Tack för ett snabbt svar.

Andy
__________________
Senast redigerad av Andy.Wallhack 2016-07-31 kl. 23:31.
Citera
  • 1
  • 2

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback