Gå til innhold

Anbefalte innlegg

Hei

 

Jeg lurte på hvordan man lager et programm som regner ut gjennomsnitt av et aller annet .... har sett et programm i dette forumet . men jeg vil ha et prog. som man velger først hvor mange tall det skal regnes gjennomsnitt av. kan noen si meg hvordan man lager det ? f.eks i stede for at man MÅ ta 10 stk kan man velge selv i det andre prgrammet i dette forumet .....

 

Håper på svar snarest ...

Lenke til kommentar
Videoannonse
Annonse
#include <iostream>
#include <iomanip>

using namespace std;


int main()
{
int antall = 0;
double sum = 0;
double temp;

cout << "Skriv inn ett og ett tall, avslutt ved å skrive inn noe som ikke er et tall:" << endl;

while(cin >> temp) {
 sum += temp;
 antall++;
 cout << "Gjennomsnittet er: " << fixed << setprecision(2) << sum / antall << endl;
}



return(0);
}

Lenke til kommentar

eller..

#include <iostream>
#include <iomanip>

using namespace std;


int main()
{
int teller = 0;
int antall;
double sum = 0;
double temp;

cout << "Antall tall som skal leses inn: ";
cin >> antall;

while(teller < antall) {
 cout << "Skriv inn tall nr. " << teller + 1 <<  " : ";
 cin >> temp;
 sum += temp;
 teller++;
 cout << "Gjennomsnittet er: " << fixed << setprecision(2) << sum / antall << endl;
}

return(0);
}

 

..som var mer det du spurte etter kanskje.

Lenke til kommentar

..og en som bruker exceptions og er litt "snillere" når brukeren taster feil:

 

#include <iostream>
#include <iomanip>

using namespace std;


int main()
{
int teller = 0;
int antall = 0;
double sum = 0;
double temp;

cin.exceptions(ios_base::badbit | ios_base::failbit);

while(!antall > 0) {
 try {
 	cout << "Antall tall som skal leses inn: ";
 	cin >> antall;
 }  
 catch(...) {
 	cout << "Hmm.. prøv igjen." << endl << endl;
 	cin.clear();
 	cin.ignore();
 }
}

 while(teller < antall) {
 	cout << "Skriv inn tall nr. " << teller + 1 <<  " : ";
 	
 	try {
   cin >> temp;
   sum += temp;
   teller++;
   cout << "Gjennomsnittet er: " << fixed << setprecision(2) << sum / antall << endl << endl;
 	}
 	catch(...) {
   cout << "Hmm.. prøv igjen." << endl << endl;
   cin.clear();
   cin.ignore();
 	}  	
 }

return(0);
}

 

Eksekverbare filer,

for Linux: http://nostdal.net/lars/forumstuff/gjsnitt

for Windows: http://nostdal.net/lars/forumstuff/gjsnitt.exe

Lenke til kommentar

Ja.

 

Kort fortalt så har objektet cin (av klassen basic_istream) en operator void*() som returnerer statusen til cin.

 

cin returnerer status "feil format" (false eller 0) når man prøver å lese inn data i "temp" som ikke er tall (riktig format).

 

http://gcc.gnu.org/onlinedocs/libstdc++/la...tringstreamz3_0

 

 

Det finnes mange ting i C/C++ som gjør "to ting på en gang".

 

int funk()

{

return(1);

}

 

int main()

{

return(funk()); // to ting på "en gang"

}

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...