Trädvy Permalänk
Medlem
Registrerad
Jan 2016

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!

Trädvy Permalänk
Medlem
Plats
Västerås
Registrerad
Aug 2011

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?

Burken:
CPU: i7 6700k | RAM: 16GB DDR4 | GPU: GTX 1070 Strix | Mobo: Asus B150 PRO GAMING | Lagring: 1TB 5400RPM, 1TB 7200RPM, 120GB SSD

Trädvy Permalänk
Medlem
Plats
Stockholm
Registrerad
Dec 2003
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.

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

Trädvy Permalänk
Medlem
Plats
Västerås
Registrerad
Aug 2011

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

Burken:
CPU: i7 6700k | RAM: 16GB DDR4 | GPU: GTX 1070 Strix | Mobo: Asus B150 PRO GAMING | Lagring: 1TB 5400RPM, 1TB 7200RPM, 120GB SSD

Trädvy Permalänk
Medlem
Registrerad
Jan 2016

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

Trädvy Permalänk
Medlem
Plats
Stockholm
Registrerad
Dec 2003
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.

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

Trädvy Permalänk
Medlem
Plats
Linköping
Registrerad
Jun 2007

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.

Trädvy Permalänk
Medlem
Registrerad
Jan 2016

@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
Trädvy Permalänk
Medlem
Registrerad
Jan 2016

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
Trädvy Permalänk
Medlem
Plats
Linköping
Registrerad
Jun 2007
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.

Trädvy Permalänk
Medlem
Registrerad
Jan 2016

@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;
}
}

Trädvy Permalänk
Medlem
Plats
Stockholm
Registrerad
Jan 2004
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/

Trädvy Permalänk
Medlem
Plats
Linköping
Registrerad
Jun 2007
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.

Trädvy Permalänk
Medlem
Plats
Fridhelmsplan; Stockholm.
Registrerad
Aug 2006
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

Chassi: Fractal Design Define R5 (vit) MB: ASUS ROG MAXIMUS VII HERO RAM: Crucial DDR3 BallistiX Sport 1600MHz 16GB CPU: Intel Core i7-4790k GPU: ASUS GeForce STRIX GTX 980 Ti SDD: Samsung 850 EVO 250GB HDD1: Seagate 1TB HDD2: WD 1TB PSU: EVGA SuperNova G2 1300w Skärm: Acer 27" XB270HU Tangentbord: CM Storm QuickFire TK (Cherry MX Brown) Mus: Logitech G500 Hörlurar: Astro A50