Behöver nybörjar hjälp i c++

Här pratar vi programmering i dessa olika former. Perl, C/C++, Pascal, ADA, Lisp, COBOL, ZX Basic och mm.
Post Reply
Alexio
Posts: 13
Joined: 27 August 2009, 19:53

Behöver nybörjar hjälp i c++

Post by Alexio » 27 August 2009, 19:59

Hej, är som sagt nybörjare i detta, skratta inte :), ska räkna ut ränta

Vad har jag gjort för fel?


#include <iostream>
#include <cmath>

int main()
{
using namespace std;

int kapital,ar,ranta;


// läs indata

cout <<"Ange startkapital";
cin >> kapital;
cout <<endl<<"Ange antal ar ";
cin >> ar;
cout <<endl<<"Ange ranta ";
cin >> ranta;


double kapital=(kapital*ar);


kapital = ranta*pow(kapital +(ar/100),1);

cout <<"Kapitalet med "<<ranta<< " efter" <<ar<< "blir ";
cout <<kapital<< endl;
return 0;

}

User avatar
kjell-e
Posts: 2817
Joined: 21 December 2002, 16:27
Location: Linköping
Contact:

Re: Behöver nybörjar hjälp i c++

Post by kjell-e » 27 August 2009, 22:46

Varför använder du heltal för sådant som uppenbarligen inte är heltal?

Variabeln för årtal kan du låta vara heltal men för ränta och kapital bör du använda flyttalsvariabler, t.ex. double.

Sedan är din uträkning fel. Om du har ett startkapital och en ränta på säg 10% då är kapitalet 1.10 gånger efter ett år. Efter år 2 har du
(kapital*1.10)*1.10 och efter år 3 ((kapital*1.10)*1.10)*1.10. D.v.s. du har kapital*power(1.10, 3) alltså kapitalet multiplicerat med 1.10 upphöjt till 3.

Alexio
Posts: 13
Joined: 27 August 2009, 19:53

Re: Behöver nybörjar hjälp i c++

Post by Alexio » 28 August 2009, 08:46

Hej,ok, då förstår jag.

Hur skriver jag detta i programmet då?.





jag menar alltså hur jag ska skriva en rad med kapitalet *år*ränta?, har jag skrivit rätt men lägga in 1,10*ranta, läser programmet in räntan då ??, eller måste jag skriva på nåt annat sätt


Jag förstår hur man räknar ut nu, men får inte ihop raden rätt

Mvh

User avatar
kjell-e
Posts: 2817
Joined: 21 December 2002, 16:27
Location: Linköping
Contact:

Re: Behöver nybörjar hjälp i c++

Post by kjell-e » 28 August 2009, 14:07

Säg att användaren vill att det ska vara 12% ränta och skriver 12 när programmet frågar efter ränta. Procent är hundradelar så du behöver dela med 100. Nu har du 0.12. Addera 1 och du har den ränta som du ska multiplicera med. Nu är det bara att räkna ut kapital*power(1.12, ar) . Ersätt 1.12 med den uträknade räntan baserat på vad användaren skrev in.

User avatar
kjell-e
Posts: 2817
Joined: 21 December 2002, 16:27
Location: Linköping
Contact:

Re: Behöver nybörjar hjälp i c++

Post by kjell-e » 28 August 2009, 14:16

I nästa steg tycker jag att du ska öva på loopar och räkna ut samma sak med hjälp av en for-loop istället för att använda upphöjt-till-funktionen pow().

Alexio
Posts: 13
Joined: 27 August 2009, 19:53

Re: Behöver nybörjar hjälp i c++

Post by Alexio » 28 August 2009, 15:37

Ok,tack för hjälpen

Alexio
Posts: 13
Joined: 27 August 2009, 19:53

Re: Behöver nybörjar hjälp i c++

Post by Alexio » 29 August 2009, 08:53

// kapital.cpp
#include <iostream>
#include <cmath>
double kapital;



int main();


{


using namespace std;
int kapital,ar,ranta,pow;


cout <<"Ange startkapital";
in >> kapital;



cout <<"Ange antal ar ";
cin >> ar;


cout <<"Ange ranta ";
cin >> ranta;
cout endl;


kapital=kapital*pow(1+ranta/100,ar);




cout <<"Kapitalet med "<<ranta<< " efter" <<ar<< "blir " << kapital << endl;

return 0;


Så här har jag kommit till, men jag får error på första { , det står function missing header, fattar inte vad datorn menar

vad det kan vara?

Börjar lära mig mer o mer, men detta behöver jag lite tips me,

Mvh

User avatar
kjell-e
Posts: 2817
Joined: 21 December 2002, 16:27
Location: Linköping
Contact:

Re: Behöver nybörjar hjälp i c++

Post by kjell-e » 29 August 2009, 14:12

Code: Select all

int main();
Du ska inte ha semikolon efter main().
Dessutom saknar du en avslutande krullparentes i det du klistrade in här.

Code: Select all

<datatyp> foo(<datatyper>); 
Är en funktionsprototyp. Denna talar om för kompilatorn vad funktionen heter, vad den tar för datatyper som inparametrar och vad den returnerar för datatyp. Nu vet kompilatorn detta så att den kan hantera anrop till denna funktion i programmet.

Vad som nu saknas är själva funktionsdeklarationen, d.v.s. den delen som talar om vad funktionen ska göra. Den kan man ha längre ner i sin källkod eller i en separat fil. Den ser ut så här:

Code: Select all

<datatyp> foo(<datatyper>)
{
    Kod som gör någonting;
    return <returvärde>
}
När du skrev int main(); så skapade du en funktionsprototyp men du har inte deklarerat funktionen så därför klagade kompilatorn. För main så behövs det inte någon prototyp så den kan du utelämna.

Anledningen till att man gör så här med prototyper och sedan på annan plats deklarerar funktionerna är att det oftast blir mer överskådligt.


Ett exempel kan se ut så här:

Code: Select all

#include <iostream>

using std::cout;
using std::endl;

int foo(int);

int main()
{
   int a;
   a = foo(3);
   cout << a << endl;;
  return 0;
}

int foo(int val)
{
   return val*val;
}
Variablerna för kapital och ränta vill du deklarera som flyttal, t.ex. double. pow är en funktion och ska inte deklareras som en variabel av typen int. Sedan vill du ha lite blanktecken, <mellanslag>, i din utmatning på slutet. Ändra bland annat "blir " till " blir " så får du en snyggare utmatning.

Alexio
Posts: 13
Joined: 27 August 2009, 19:53

Re: Behöver nybörjar hjälp i c++

Post by Alexio » 8 September 2009, 16:15

Hej igen behöver lite mer tips angående ett annat program, vill få lite tips om hur jag bör tänka o.sv


// Preprocessor direktiv

#include <iostream>
#include <iomanip>
using namespace std;

// prototyper
void prisBerakning();

double totalbelopp;

int main()

{

char svar;
do
{
prisBerakning();
cout << "En gang till (J/N): ";
cin >> svar;
}while (svar == 'J' || svar == 'j');

return 0;
}


void prisBerakning()
{
// definiera och initiera konstanter och variabler

const int MOMS = 25;


double pris = 0;
int antal = 0;
double momsKr = 0;
double totaltPris = 0;


cout << "Ange varans pris exkl. moms: ";
cin >> pris;

cout <<"Ange antalet artiklar : ";
cin >> antal;




// berakna totalt pris o moms



totaltPris = antal*pris;
momsKr = MOMS*totaltPris;

totalbelopp = totaltPris+momsKr;
// visa resultat

cout << antal << " stycken varor kostar " << totalbelopp << " Kr " << endl
<< "Darav utgor " << momsKr << " kr lagstagad moms" << endl<< endl
<< "Det totalabeloppet blir " << totalbelopp << endl;

}


Ska räkna ut moms på totalbelopp, har satt MOMS som konstant 25, men programmet tar det totalabeloppet * 25 vilket inte blir som jag vill, har testat att ta 0.25, men då får jag bara 0 i moms

vad gör jag för fel?

Mvh

Alexio
Posts: 13
Joined: 27 August 2009, 19:53

Re: Behöver nybörjar hjälp i c++

Post by Alexio » 8 September 2009, 17:23

Hej igen, det löste sig.

vad använder man för repetitionssats om man ska göra rader med *. t.ex

* * * * * * *
* * * * * * *
* * * * * * *

använder cout "*"
och cout " "

Använder man for ??

fattar inte hur man ska få mellanslaget mellan stjärnorna, måste ju använda divison, läser boken, men fattar inget som vanligt :)

Detta är uppgifter jag har o göra, så jag vill bara att ni lotsar in mig på rätt spår , alltså lite tips .

Ser enkelt ut när man tittar på det, men jag får inte till det

Mvh

Alexio
Posts: 13
Joined: 27 August 2009, 19:53

Re: Behöver nybörjar hjälp i c++

Post by Alexio » 8 September 2009, 22:00

#include <iostream>
using namespace std;

int main()
{
int i;

for(i=100; i >= 70; i = i-6) cout <<" *" << ' ';


int j;

for(j=100; i >=60; i = i-6) cout << " " << ' ' ;
return 0;
}

tänker jag helt fel här eller??

Mvh

perrascout
Posts: 132
Joined: 2 December 2002, 17:25
Contact:

Re: Behöver nybörjar hjälp i c++

Post by perrascout » 28 September 2009, 00:52

Hur har det gått, har du löst det eller?

Vilket resultat får du och vilket resultat förväntar du dig?
//Fredrik

Alexio
Posts: 13
Joined: 27 August 2009, 19:53

Re: Behöver nybörjar hjälp i c++

Post by Alexio » 20 January 2010, 23:42

Hej, jo jag löste det, och måste säga att c++ va riktigt svårt att lära sig, men glad att jag började.


Mvh

User avatar
li
Posts: 1124
Joined: 17 April 2003, 13:38
Location: Stockholm

Re: Behöver nybörjar hjälp i c++

Post by li » 22 January 2010, 22:30

Tips om du kör linux, så använd inte standardkompilatorn gcc. Hämta hem "cland" i stället. En kompilator för c och c++ som använder llvm.

Kompilatorn är snabbare och ger tydliga färglagda felutskrifter. Koden blir effektivare och kan optimeras i alla steg.

Detta är framtiden.
gentoo 3.0
arch 3.0
freeBSD 8.2
qemu/minix3
win/xp

User avatar
kjell-e
Posts: 2817
Joined: 21 December 2002, 16:27
Location: Linköping
Contact:

Re: Behöver nybörjar hjälp i c++

Post by kjell-e » 23 January 2010, 03:24

"cland"
Du menar väl ändå clang?
clang: a C language family frontend for LLVM

http://clang.llvm.org/

User avatar
li
Posts: 1124
Joined: 17 April 2003, 13:38
Location: Stockholm

Re: Behöver nybörjar hjälp i c++

Post by li » 26 January 2010, 13:25

Ja, precis. Eftersom jag främst kör gentoo så testar jag ofta att kompilera olika paket med clang, det funkar ofta men inte alltid. Det finns även en gcc-variant som nyttjar llvm.



http://www.llvm.org/
gentoo 3.0
arch 3.0
freeBSD 8.2
qemu/minix3
win/xp

Post Reply