/ Forside / Teknologi / Udvikling / C/C++ / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
C/C++
#NavnPoint
BertelBra.. 2425
pmbruun 695
Master_of.. 501
jdjespers.. 500
kyllekylle 500
Bech_bb 500
scootergr.. 300
gibson 300
molokyle 287
10  strarup 270
hjælp mystisk regnefejl
Fra : Henrik Petersen


Dato : 18-02-01 20:21

hej læser,

har lagt 2 ens stykker kode med, den ene er med funktions kald og den ande
er uden, den uden funktion vil gerne køre og tregner rigtigt ud, men den
med, regner helt forkert.
brug følgende variabler
100000
7.5
25

hjælp henrik


#include <iostream.h>
#include <conio.h>
#include "math.h"

double payment(double p, double r, int n); // prototype for funktionen
payment

int main()

{
double p;
double r;
int n;
double payment;

cout<<"Indtast stoerlse paa husloanet: ";
cin >> p;
cout<<"Indtast procent stoerlsen paa loanet: ";
cin >> r;
cout<<"Indtast antal aar loanet skal loebe i: ";
cin >> n;

cout<<"Beloebet der skal betalet ialt paa husloanet med renter :
"<<payment<<endl;

getch();

return 0;
}


double payment(double p, double r, int n)
{
n*=12;
r=((r/100)/12);
return((((r*pow(1+r,n))/(pow(1+r,n) -1)) * p) * n);
}








///////////////////////////////////////////////program uden funktion, der
regner rigtigt

#include <iostream.h>
#include <conio.h>
#include "math.h"


int main()

{
double p;
double r;
int n;
double payment;


cout<<"Indtast stoerlse paa husloanet: ";
cin >> p;
cout<<"Indtast procent stoerlsen paa loanet: ";
cin >> r;
cout<<"Indtast antal aar loanet skal loebe i: ";
cin >> n;


n*=12;
r=((r/100)/12);
payment=(((r*pow(1+r,n))/(pow(1+r,n) -1)) * p) * n;


cout<<n<<endl;
cout<<r<<endl;

cout<<"Beloebet der skal betalet ialt paa husloanet med renter :
"<<payment<<endl;

getch();

return 0;
}






 
 
Rasmus Paulsen (18-02-2001)
Kommentar
Fra : Rasmus Paulsen


Dato : 18-02-01 20:30

Hej Henrik

Jeg kan ikke rigtigt se hvor du kalder payment i main i dit første stykke
kode. Det vil helt sikker hjaelpe at goere det :)
Prøv altid at initialisere alle varible (her p,r,n, payment) til 0 når du
deklarere dem. Det kan lette fejlsøgning.

Hilsen
Rasmus


"Henrik Petersen" <hep@image.dk> wrote in message
news:rkVj6.5289$TL6.479964@news000.worldonline.dk...
> hej læser,
>
> har lagt 2 ens stykker kode med, den ene er med funktions kald og den ande
> er uden, den uden funktion vil gerne køre og tregner rigtigt ud, men den
> med, regner helt forkert.
----------------
SNIP
---------------




Carsten Svaneborg (19-02-2001)
Kommentar
Fra : Carsten Svaneborg


Dato : 19-02-01 08:52

Henrik Petersen wrote:
> double payment(double p, double r, int n); // prototype for funktionen
> payment

i main:
> double payment;

Du har en funktion og en variabel med samme navn, det er ikke så
smart. Den vil bare udskrive værdien af variablen payment
(formodeligt dummy initialiseret til 0) ligegyldig hvad du
indtaster, og payment funktionen vil aldrig blive kaldt.

Klager din kompiler ikke over dette?
Jeg ville forvente en "local variable shadows global function"
type fejl meddelelse.

> double payment(double p, double r, int n)
> {
> n*=12;
> r=((r/100)/12);
> return((((r*pow(1+r,n))/(pow(1+r,n) -1)) * p) * n);
> }

Du behøver ikke alle disse paranteser når du tager produkter.
(a*b)*c = a*b*c og (a/b)/c = a/b/c = a/(b*c)

Derfor får du præcist det samme resultat med:

r=r/1200;
return r*pow(1+r,n)*p*n/(pow(1+r,n) -1) ;

Og det er også mere læse venligt
Du skal derimod stadig bruge en parentes i nævneren fordi
du dividere med en sum, fordi a/(b+c) ikke er det samme som a/b+c

--
No matter how fast light travels it finds *
the darkness has always got there first, * Carsten Svaneborg
    and is waiting for it. * zqex at risoe.dk
   -- (Terry Pratchett, Reaper Man) *

Søg
Reklame
Statistik
Spørgsmål : 177559
Tips : 31968
Nyheder : 719565
Indlæg : 6408938
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste