2011-03-29, 00:19
  #1
Medlem
HitzaHitzs avatar
Sitter och jobbar på en skoluppgift där jag ska skriva in några tal och sen ta fram summan, medelvärdet största talet och näst största talet, och nu är det så att jag har fastnat på delen med största talet. Är det någon som vet hur man får fram det största talet

Kod:
int main()
{	int tal,  n = 0, sum = 0;
	double medel;
	cout << "Skriv in heltal.  Avsluta med 0 (noll) " << endl;
	cout << "Skriv f\x94rsta talet: " ;
	cin >> tal;
	while( tal > 0  )
	{	n++;
		sum+= tal;
		cout << "N\x84sta tal: ";
		cin >> tal;
	}	
	medel =  (double) sum / n;
	cout << "Summa: " << sum << endl ;
	cout << "Medelv\x84rdet: " << medel << endl ;


	getch();
	return 0;
}

Så långt har jag kommit..
Citera
2011-03-29, 00:32
  #2
Medlem
kongolasse12s avatar
Spara första talet i en variabel. Loopa igenom talen och jämför med det sparade. Hittar du ett större tal sparar du det i stället. Det största talet finns i variabeln efter loopen.
Citera
2011-03-29, 00:38
  #3
Medlem
HitzaHitzs avatar
Hur menar du? Skulle du kunna visa i kod? Är ingen höjdare på detta än.
Citera
2011-03-29, 00:42
  #4
Medlem
kongolasse12s avatar
Hur svårt är det att googla egentligen?

http://mathbits.com/mathbits/compsci/arrays/max.htm
Citera
2011-03-29, 07:19
  #5
Medlem
HitzaHitz, i princip har du redan kunskaperna, behövs bara en sista liten grej ser det ut som.

Ungefär som med sum behöver du ha en variabel för att hålla reda på maxtalet (säg, max).

Allt du behöver i din kod är ett villkor i din loop som gör ungefär följande:

om tal är större än max, tilldela max tals värde.

That's it, du har ett max som du kan visa efter loopen.

Näst största talet är ännu enklare. Du behöver en variabel till, och den använder du för att ta hand om max värde innan max får ett nytt värde.

Glöm för all del inte att de max och den andra variabeln ett vettigt initialt värde.
Citera
2011-03-29, 17:40
  #6
Medlem
HitzaHitzs avatar
Citat:
Ursprungligen postat av levitte
HitzaHitz, i princip har du redan kunskaperna, behövs bara en sista liten grej ser det ut som.

Ungefär som med sum behöver du ha en variabel för att hålla reda på maxtalet (säg, max).

Allt du behöver i din kod är ett villkor i din loop som gör ungefär följande:

om tal är större än max, tilldela max tals värde.

That's it, du har ett max som du kan visa efter loopen.

Näst största talet är ännu enklare. Du behöver en variabel till, och den använder du för att ta hand om max värde innan max får ett nytt värde.

Glöm för all del inte att de max och den andra variabeln ett vettigt initialt värde.

Tack för hjälpen!

Kod:
int main()
{	int tal,  n = 0, sum = 0, max = 1;
	double medel;
	cout << "Skriv in heltal.  Avsluta med 0 (noll) " << endl;
	cout << "Skriv f\x94rsta talet: " ;
	cin >> tal;
	while( tal > 0  )
	{	n++;
		sum+= tal;
		cout << "N\x84sta tal: ";
		cin >> tal;

		if (tal >= max)
			max = tal;

	}	
	medel =  (double) sum / n;
	cout << "Summa: " << sum << endl ;
	cout << "Medelv\x84rdet: " << medel << endl ;
	cout << "St\x94rsta talet: " << max << endl ;



	getch();
	return 0;
}

Körde sådär och nu funkar det. Nu ska jag bara lista ut hur man hittar näst största talet.
Citera
2011-03-29, 23:10
  #7
Medlem
Citat:
Ursprungligen postat av HitzaHitz
Nu ska jag bara lista ut hur man hittar näst största talet.
nextmax (kan man ju kalla det) är ju samma som max innan max får sitt nya värde.

Det borde räcka som hint ;-)
Citera
2011-03-30, 01:20
  #8
Medlem
Du kan välja mellan två principer här; hålla reda på max och nästmax löpande, som kräver ett visst mått av måttligt komplicerad logik, eller att gå den breda vägen med att spara värdena i en vektor, sortera den, och hitta dina två värden i ena änden (om du nu inte matar in bara noll eller ett värde).

Exempelvis är det en bugg att uppdatera det näst största talet endast när max får ett nytt värde.
Citera
2011-03-30, 01:36
  #9
Medlem
HitzaHitzs avatar
Jag har dock märkt att om jag skriver det största talet först så blir inte det talet störst ( tex 5 3 1, då blir 3 störst). En grej till, när jag skriver tex -5 så blir det som 0 och programet stannar (programet ska stanna och räkna när man trycker 0)

Har du några tips om det?
Citera
2011-03-30, 08:33
  #10
Medlem
Citat:
Ursprungligen postat av HitzaHitz
Jag har dock märkt att om jag skriver det största talet först så blir inte det talet störst ( tex 5 3 1, då blir 3 störst).
Om du beräknade sum på samma ställe som du sägger max skulle du också få summeringsfel. ;-)

Citat:
Ursprungligen postat av HitzaHitz
En grej till, när jag skriver tex -5 så blir det som 0 och programet stannar (programet ska stanna och räkna när man trycker 0)

Har du några tips om det?
-5 kan aldrig vara större än 1, som är det tal du initierar max till.
Citera
2011-03-30, 08:33
  #11
Medlem
Citat:
Ursprungligen postat av Katalysator
Exempelvis är det en bugg att uppdatera det näst största talet endast när max får ett nytt värde.
Varför?
Citera
2011-03-30, 10:26
  #12
Medlem
Citat:
Ursprungligen postat av levitte
Varför?
Om det näst största talet kommer efter det största i serien spricker det.
Citera

Skapa ett konto eller logga in för att kommentera

Du måste vara medlem för att kunna kommentera

Skapa ett konto

Det är enkelt att registrera ett nytt konto

Bli medlem

Logga in

Har du redan ett konto? Logga in här

Logga in