Premiär! Fyndchans i SweClockers Månadens Drop
Permalänk

Nybörjarfråga

Hej,

I timmar har jag försökt lösa en uppgift där jag ska skapa ett program som åstadkommer följande:

Programmet frågar efter ett antal tal och skriver ut summan och medelvärdet av de inmatade talen. Användaren ska ange 0 i slutet av talserien. Programmet ska dessutom skriva ut det näst största och det största talet. Programmet ska vara uppbyggt av ett antal funktioner.
Exempel från körning:
Ange ett antal tal : 10 12 -5 20 -2 15 0
Summan = 50
Medelv. = 8.3
Största talet = 20
Näst största =15

Mitt problem är att jag inte vet om jag skall använda en array eller en string. Jag vet inte heller hur jag matar in ett obestämt antal tal i en array.
Min undervisning har tyvärr varit obefintlig och jag vänder mig därför hitåt för att se om någon kan hjälpa mig lösa detta.

Tack i förväg!

Permalänk
Medlem

Lagra dem i en array med godtyckligt många platser. Kör en while loop som körs så länge användaren inte matar in 0.

Typ:

do { //mata in tal }while(var != 0);

Vilket språk kör du i?

Permalänk
Medlem
Skrivet av Magicbrix:

Hej,

I timmar har jag försökt lösa en uppgift där jag ska skapa ett program som åstadkommer följande:

Programmet frågar efter ett antal tal och skriver ut summan och medelvärdet av de inmatade talen. Användaren ska ange 0 i slutet av talserien. Programmet ska dessutom skriva ut det näst största och det största talet. Programmet ska vara uppbyggt av ett antal funktioner.
Exempel från körning:
Ange ett antal tal : 10 12 -5 20 -2 15 0
Summan = 50
Medelv. = 8.3
Största talet = 20
Näst största =15

Mitt problem är att jag inte vet om jag skall använda en array eller en string. Jag vet inte heller hur jag matar in ett obestämt antal tal i en array.
Min undervisning har tyvärr varit obefintlig och jag vänder mig därför hitåt för att se om någon kan hjälpa mig lösa detta.

Tack i förväg!

Vilket språk ska du programmera i? Sedan tycker jag att det är konstigt att du inte kan skilja mellan en array och en string.
Du måste ha missat hela kursen?

Array (PHP)
An array in PHP is actually an ordered map. A map is a type that associates values to keys

Strings (PHP)
A string is series of characters, where a character is the same as a byte.

Visa signatur

| Citera för svar! | Gilla bra inlägg! |

Permalänk
Medlem

@BrusE: Ja, skulle vara bra att veta vilket språk TS kör i. I C t.ex. så är en en string inget mer än en array av chars.

Permalänk

C++ är språket och undervisningen har tyvärr varit under all kritik, därav min dåliga uppfattning om saker.

Permalänk
Medlem
Skrivet av Poptart:

@BrusE: Ja, skulle vara bra att veta vilket språk TS kör i. I C t.ex. så är en en string inget mer än en array av chars.

Såg nu att du han före.

Visa signatur

| Citera för svar! | Gilla bra inlägg! |

Permalänk
Medlem

Det finns egentligen inget behov att lagra talen som matas in, det enda du behöver i slutet är summan, antalet tal samt det största och näst största talet. Medelvärdet blir ju då bara summan delat med antalet tal, och resten har du redan. Så du behöver inte använda någon array, bara några heltalsvariabler.

Permalänk

@popTart @perost:

Tack för era inlägg. Det här är vad jag fått till hittils:

float numbers; float sum=0; int times=0; //funkar do { cin>>numbers; ++times; numbers+= sum; } while (numbers!=0); cout << sum << endl; cout << sum / times << endl;

Jag får times att fungera, vilket gör att jag kommer kunna få ut medianen när väl summan sitter. Dock får jag inte ut summan, vad är fel med "numbers+= sum;"?
Så undrar jag såklart också hur jag får till det största och näst störta talet?

Tack!

Redigerat in [code]-taggar
Permalänk

Nu fick jag till sum och medianen med:

do { cin>>numbers; ++times; sum= sum+numbers; } while (numbers!=0); cout << sum << endl; cout << sum / times << endl;

Redigerat in [code]-taggar
Permalänk
Medlem
Skrivet av Magicbrix:

Jag får times att fungera, vilket gör att jag kommer kunna få ut medianen när väl summan sitter. Dock får jag inte ut summan, vad är fel med "numbers+= sum;"?

numbers += sum ökar numbers med sum. Vad du vill göra är motsatsen, dvs. sum += numbers.

Skrivet av Magicbrix:

Så undrar jag såklart också hur jag får till det största och näst störta talet?

Lagra det största och det näst största talet i varsin variabel. Sen är det bara att kolla om det nya talet är större än det hittills största, i vilket fall det nya talet blir det största och det föregående största blir det näst största, eller om det nya talet är större än det näst största, i vilket fall det ersätter det näst största. Du kan välja att initialisera dessa variabler med det minsta värdet som går att mata in, eller så kan du ha specialfall för det första och andra talet som matas in (det första är ju alltid det största när det matas in, och det andra är antingen störst eller näst störst). Tänk också på att det t.ex. inte finns något näst största tal om bara ett tal matas in.

Permalänk

@perost: Tack för det! Nu fungerar allt förutom det näst största, vet inte riktigt hur jag ska få till den.

cout<<"Enter number, exit with 0: ";
do
{
cin>>numbers;
++times;
sum= sum+numbers;

if (numbers>=largest)

{
largest=numbers;
}
}

Permalänk
Medlem
Skrivet av Magicbrix:

@perost: Tack för det! Nu fungerar allt förutom det näst största, vet inte riktigt hur jag ska få till den.

Addera alla nummer till en vector, sortera vectorn och ta sen det näst sista värdet.
Addera nummer till vector : http://stackoverflow.com/questions/755835/how-to-add-element-...
Sortera : http://www.cplusplus.com/reference/algorithm/sort/

Permalänk
Medlem
Skrivet av Magicbrix:

@perost: Tack för det! Nu fungerar allt förutom det näst största, vet inte riktigt hur jag ska få till den.

Om talet är större än det största så blir det som du gjort det nya största, medan det föregående största blir det nya näst största. Om talet inte är större än det största så får du kolla om det istället är större än det näst största, i så fall blir talet det nya näst största.

Permalänk
Medlem
Skrivet av Magicbrix:

Hej,

I timmar har jag försökt lösa en uppgift där jag ska skapa ett program som åstadkommer följande:

Programmet frågar efter ett antal tal och skriver ut summan och medelvärdet av de inmatade talen. Användaren ska ange 0 i slutet av talserien. Programmet ska dessutom skriva ut det näst största och det största talet. Programmet ska vara uppbyggt av ett antal funktioner.
Exempel från körning:
Ange ett antal tal : 10 12 -5 20 -2 15 0
Summan = 50
Medelv. = 8.3
Största talet = 20
Näst största =15

Mitt problem är att jag inte vet om jag skall använda en array eller en string. Jag vet inte heller hur jag matar in ett obestämt antal tal i en array.
Min undervisning har tyvärr varit obefintlig och jag vänder mig därför hitåt för att se om någon kan hjälpa mig lösa detta.

Tack i förväg!

Codecademy.com.. Där kan du läsa dig grunderna i Java / c++ och fler

Visa signatur

En ny signatur