Gå til innhold

Noob i c++, med et relativt enkelt spm?


Anbefalte innlegg

Hei har akkurat begynt på skolen igjen, og har grunnleggende programmering som fag. Vi bruker c++ og har forskjellige ukeoppgaver. Jeg har fullført 6 av 8 oppgaver men står litt fast på denne.. (dette er ikke en tråd for å få KODEN, jeg er bare ute etter tips på hva jeg gjør galt, og kan gjøre bedre.)

 

Oppgaven lyder som følger:

 

Lag et program som ber om positivitet heltall fra brukeren

Når brukeren skriver inn 0 eller et negativt tall skal programmet stanse. Det skal da skrive ut tallene som er lest, totalsummen og gjennomsnitt av tallene.

 

334ixbn.png

 

Her er koden jeg har kommet fram til så langt. Jeg får til at "brukeren" kan skrive inn tall, og programmet slutter når 0 eller et negativt tall blir tastet inn.. Problemet er at jeg ikke får "skrevet" ut tallenes gjennomsnitt, og totalsum.

 

 

Lenke til kommentar
Videoannonse
Annonse

Nå kan jeg java, som ikke er helt likt, men det finnes vel noe som er det samme som System.out.println i c++, som lar deg vise en tekst til bruker. Da kan du opprette en variabel som lagrer snittet av tallene, og så kaller du den variabelen i beskjeden du viser til slutt.

ja det vet jeg, problemet er bare at jeg ikke kan en "dritt" hvis jeg setter f.eks int sum = x får jeg jo bare det x er definert som.. jeg vet ikke hva jeg skal definere sum med... :/

Lenke til kommentar

Start med å sette int sum = 0. Deretter kan du for hver iterasjon i while-løkka sette sum += x.

 

Nå har ikke jeg peiling på C++, men du må vel ha klammeparenteser rundt while-løkka for at den skal fungere. (Med mindre du kun har ei linje i løkka) Et tips til, er while (x > 0), ikke while (x != 0).

Lenke til kommentar

Start med å sette int sum = 0. Deretter kan du for hver iterasjon i while-løkka sette sum += x.

 

Nå har ikke jeg peiling på C++, men du må vel ha klammeparenteser rundt while-løkka for at den skal fungere. (Med mindre du kun har ei linje i løkka) Et tips til, er while (x > 0), ikke while (x != 0).

 

Du har helt rett med klemmeparantes,hadde en kompis som fucka opp koden min, men det er fikset nå;) men skal prøve ut det du nenvte :)

Lenke til kommentar

Gjennomsnittet er summen av alle elementer delt på antallet. Du må dermed summere hvert tall og telle hvor mange tall det er snakk om.

 

 

 

int counter;
int sum = 0;
for(int counter = 0; ; ++counter)
{
  int value;
  cin >> value;
  if(value <= 0)

     break;
  sum += value;
}
int average = sum / counter;
cout << "Gjennomsnitt:" << average << endl;
cout << "Sum:" << sum << endl;

 

 

 

Lenke til kommentar

^ ikke det.... :p men vil jo prøve å klare så mange ukeoppgaver som mulig... :/

 

Får ikke gjort den 100% uten det. Antar det er en liste som må til (kan heller ikke C++ i likhet med andre i tråden). Eller du kan vente med oppgaven til du har lært dette. Ikke så mye poeng inntil da. :)

 

Du trenger vel heller ingen argumenter i main(). For øvrig er det morsomt med while True, og så break hvis x < 1. Litt mer forståelig enn disse for-løkkene, sånn i starten av læringsprosessen.

Lenke til kommentar

Edit: Leste nå at du bare ville ha tips. La mulig løsning i spoiler :p.

 

Hvis du skal printe ut alle tallene i etterkant må du du lagre de. Jeg vet ikke om dere har lært om C++ containere som for eksempel std::vector, hvis ikke kan du bruke en C array.

 

For eksempel:

int const max_numbers = 100;
int numbers[max_numbers].

Deretter må du lage en loop som leser inn tall i arrayen.

Kan gjøres med en enkel for loop.

int numbers_read = 0;
for (; numbers_read < max_numbers; numbers_read++)
{
    int number = 0;
    std::cin >> number;
    if (number <= 0) break
    numbers[numbers_read] = number;
}

Etter det ved å bruke en loop kan du skrive ut tallene og samtidig summere opp. Etter det har du summen og antall tall som gjør det enkelt å regne ut gjennomsnittet :)

 

 

 

#include <iostream>
#include <vector>
#include <algorithm>

int main()
{
    // Container til å lagre tallene
    std::vector<int> numbers;

    // Les inn tallene.
    for (;
    {
        int number = 0;
        std::cin >> number;
        if (number <= 0) break;

        numbers.push_back(number);
    }
    
    // Skriv ut innleste tall.
    for (auto n : numbers)
        std::cout << n << std::endl;

    // Summer sammen tallene
    auto sum = std::accumulate(numbers.begin(), numbers.end(), 0);

    // Skriv ut sum og gjennomsnitt
    std::cout << "Sum: " << sum << std::endl;
    std::cout << "Average: " << sum/numbers.size() << std::endl;
}


 

 

Endret av Glutar
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...