Gå til innhold

Trenger litt hjelp med switch-setning, regne ut gjennomsnitt.


Anbefalte innlegg

sitter med en oblig her, følgende spm til dere.

Får repetert spm mitt gangene jeg vil, men når jeg skal regne gjennomsnittet blir kun det siste tallet bruker skrev inn printet ut, kodene min er under

 

switch(dager_mnd) 
  {
  case 28: 
	   for(dager=1; dager<=28; dager++) {
	   cout << "\nHvor mye nedbor var det dag " << dager << "?" << "\n"; cin >> nedbor28;
	   g_nedbor28=nedbor/dager
	   }
	   cout << "Gjennomsnittelig nedbor er: " << g_nedbor28 << setw(3) << "mm";

Lenke til kommentar
Videoannonse
Annonse
Gjest Slettet+9871234

bak cin >> skal det vel stå g_nedbor28 eller ?

uansett. scopet i loopen slutter ved }.

 

du må antakeligvis summere opp all nedbøren pr dag og regne ut snittet etter scopet. dæven så lenge siden jeg har kodet c++.

 

nedbor += nedbor28

}

g_nedbor = nedbor / dager

 

er dette helt fjernt eller? proffene får svare.

Lenke til kommentar
bak cin >> skal det vel stå g_nedbor28 eller ?

det står der, bare code taggen som bugga det litt ;)

 

g_nedbor28=nedbor28/dager;

 

Har deklarert nedbor28 som dag 28, programmet spør bruker om nedbor 28 ganger, 1 per dag. bruker skriver inn 28 tall.

 

Det jeg vil er at programmet skal summere alle tallene bruker skrev inn blir summert og delt på antall dager. får bare det siste talllet bruker skrev/dager som blir noe som 0.07, hva er feil?

Endret av Tobias.
Lenke til kommentar
Gjest Slettet+9871234

feilen er at den gjeldende verdien til g_nedbor28 i det du printer den ut alltid vil være siste tallet du skrev inn. hvis du legger inn nedbør 3 ganger med verdiene 4,5,6 vil kun 6 gjelde da du ikke summerer. det må gjøre er å plusse på nedbørsverdi for hver gang du skriver den inn. det skjer etter cin >> kommandoen.

 

nedbor += g_nedbor28. da vil løkken regne ut 4, 4+5=9, 9+6=15.

etter at for-loopen er kjørt kan skrive (nedbor / dager_mnd)

 

men trenger du virkelig switch?

 

float nedbor = 0;

float g_nedbor = 0;

int dager_mnd = 0;

 

// skriv inn antall dager

cin >> dager_mnd;

 

for(int i=1; i<=dager_mnd; i++) // evnt initiere i=0 og fjerne <

{

cout << "\nHvor mye nedbor var det dag " << dager_mnd << "?\n";

cin >> nedbor;

g_nedbor += nedbor;

}

 

// print ut gjennomsnitt

cout << "\nSnitt nedbor for " << dager_mnd << "dager: " << (g_nedbor / dager_mnd) << "\n";

Endret av Slettet+9871234
Lenke til kommentar

Må ha en switch løkke fordi det bruker har flere valg, bruker dette istede for if setninger. Et lite problem til:

cout << "\nVennligst hold deg innenfor intervallet -70 til 70, ellers vil" << "\n" 
		  << "lokka starte paa nytt\n";		 
		  do { 
		  for(dager=1; dager<=28; dager++) {
		  cout << "\nHva var den minste temperaturen " << dager << "?"
		  << " Oppgi svaret i celsius" << "\n";

		  cin >> min_tempr28;
										   }
			 }
		  while(min_temp>min_tempr28>max_temp); //while løkka tar bare hensyn til det siste innskrevne tallet.

 

Skjekker om brukers inntastede min_tempr28 mindre enn min_temp eller større enn max_temp, er dette tilfellet skal løkka gå på nytt. Men while setningen tar bare hensyn til det siste innskrevne tallet?! hvordan får jeg fikset slik at hvis bruker skriver inn et negativt tall eller større enn max_temp på f.eks dag 24, 13 osv. Catch my drift?

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...