|
| 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) *
| |
|
|