Sida 1 av 1
c++ kod, varför sker detta?
Postat: 09 jul 2011, 22:54
av kimU
#include<iostream>
using namespace std;
int sNamn(void);
int sKo(void);
int main()
{
cout<<"dina siffror adderade är: "<<sNamn()<<endl;
cout<<"dina siffror adderade plus 5 är: "<<sNamn()+5<<endl;
cout<<"ditt nummer är: "<<sKo()<<endl;
return 0;
}
int sNamn()
{
int a,b;
cout<<"skriv in en siffra: "<<endl;
cin>>a;
cout<<"skriv in en annan siffra: "<<endl;
cin>>b;
return (a+b);
}
int sKo()
{
int c;
cout<<"skriv in ett nummer: "<<endl;
cin>>c;
return(c);
}
Min fråga är varför funktionen sNamn() sker två gånger?
Re: c++ kod, varför sker detta?
Postat: 09 jul 2011, 23:45
av TicToc
kimU skrev:
cout<<"dina siffror adderade är: "<<sNamn()<<endl;
cout<<"dina siffror adderade plus 5 är: "<<sNamn()+5<<endl;
Min fråga är varför funktionen sNamn() sker två gånger?
Du anropar sNamn två gånger. Försök med att lagra resultatet av det första anropet.
Re: c++ kod, varför sker detta?
Postat: 10 jul 2011, 15:41
av kimU
TicToc skrev:kimU skrev:
cout<<"dina siffror adderade är: "<<sNamn()<<endl;
cout<<"dina siffror adderade plus 5 är: "<<sNamn()+5<<endl;
Min fråga är varför funktionen sNamn() sker två gånger?
Du anropar sNamn två gånger. Försök med att lagra resultatet av det första anropet.
Det som sker två gånger är att "adderade är:..." och "adderade plus är:..." skrivs två gånger efter varandra.
Undrar varför detta sker.
Re: c++ kod, varför sker detta?
Postat: 12 jul 2011, 15:15
av SlamsornasKung
Jo, därför att du anropar den 2 ggr. Jämför med den här koden:
Kod: Markera allt
#include<iostream>
using namespace std;
int sNamn();
int sKo();
int sNamn_haemta_resultat();
int sKo_haemta_resultat();
int a,b,c = 0;
int main()
{
sNamn();
cout << "dina siffror adderade är: " << sNamn_haemta_resultat() << endl;
cout << "dina siffror adderade plus 5 är: " << sNamn_haemta_resultat()+5 << endl;
sKo();
cout << "ditt nummer är: "<< sKo_haemta_resultat() << endl;
return 0;
}
int sNamn()
{
cout << "skriv in en siffra: " << endl;
cin >> a;
cout << "skriv in en annan siffra: " << endl;
cin >> b;
}
int sNamn_haemta_resultat()
{
return (a+b);
}
int sKo()
{
cout << "skriv in ett nummer: " << endl;
cin >> c;
}
int sKo_haemta_resultat()
{
return (c);
}
Din funktion ser ju ut som:
Kod: Markera allt
int sNamn()
{
int a,b;
cout<<"skriv in en siffra: "<<endl;
cin>>a;
cout<<"skriv in en annan siffra: "<<endl;
cin>>b;
return (a+b);
}
Varje gång du anropar den så anropas ju också cout<<"skriv in en siffra: "<<endl; med mera. Lösningen ovan kanske inte är klockren, men den har funktioner som _bara_ returnerar värdena (int sNamn_haemta_resultat();) _utan_ att skriva ut allting en gång till.
Som sagt, lösningen är nog allt annat än klockren (har använt globala variabler - vilket nog inte är så smart), men den kanske ger dig en fingervisning om hur du skulle kunna göra.
Förresten, det är lättare att felsöka om du indenterar din kod ordentligt. Ett tips bara.
Hoppas det var till någon hjälp.
Re: c++ kod, varför sker detta?
Postat: 12 jul 2011, 16:26
av kimU
SlamsornasKung skrev:Jo, därför att du anropar den 2 ggr. Jämför med den här koden:
Kod: Markera allt
#include<iostream>
using namespace std;
int sNamn();
int sKo();
int sNamn_haemta_resultat();
int sKo_haemta_resultat();
int a,b,c = 0;
int main()
{
sNamn();
cout << "dina siffror adderade är: " << sNamn_haemta_resultat() << endl;
cout << "dina siffror adderade plus 5 är: " << sNamn_haemta_resultat()+5 << endl;
sKo();
cout << "ditt nummer är: "<< sKo_haemta_resultat() << endl;
return 0;
}
int sNamn()
{
cout << "skriv in en siffra: " << endl;
cin >> a;
cout << "skriv in en annan siffra: " << endl;
cin >> b;
}
int sNamn_haemta_resultat()
{
return (a+b);
}
int sKo()
{
cout << "skriv in ett nummer: " << endl;
cin >> c;
}
int sKo_haemta_resultat()
{
return (c);
}
Din funktion ser ju ut som:
Kod: Markera allt
int sNamn()
{
int a,b;
cout<<"skriv in en siffra: "<<endl;
cin>>a;
cout<<"skriv in en annan siffra: "<<endl;
cin>>b;
return (a+b);
}
Varje gång du anropar den så anropas ju också cout<<"skriv in en siffra: "<<endl; med mera. Lösningen ovan kanske inte är klockren, men den har funktioner som _bara_ returnerar värdena (int sNamn_haemta_resultat();) _utan_ att skriva ut allting en gång till.
Som sagt, lösningen är nog allt annat än klockren (har använt globala variabler - vilket nog inte är så smart), men den kanske ger dig en fingervisning om hur du skulle kunna göra.
Förresten, det är lättare att felsöka om du indenterar din kod ordentligt. Ett tips bara.
Hoppas det var till någon hjälp.
Ber om ursäkt, men jag klistrade in fel kod.
Doh!
De löste sig i alla fall.