Marius13 Skrevet 5. september 2013 Del Skrevet 5. september 2013 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. 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
thomassit0 Skrevet 5. september 2013 Del Skrevet 5. september 2013 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. 1 Lenke til kommentar
Marius13 Skrevet 5. september 2013 Forfatter Del Skrevet 5. september 2013 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
liquidsquid Skrevet 5. september 2013 Del Skrevet 5. september 2013 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
Marius13 Skrevet 5. september 2013 Forfatter Del Skrevet 5. september 2013 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
GeirGrusom Skrevet 5. september 2013 Del Skrevet 5. september 2013 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
Imsvale Skrevet 5. september 2013 Del Skrevet 5. september 2013 Du må holde styr på tallene som er tastet inn hvis du skal printe dem ut etterpå. Hva har du lært så langt? Lenke til kommentar
Marius13 Skrevet 5. september 2013 Forfatter Del Skrevet 5. september 2013 Du må holde styr på tallene som er tastet inn hvis du skal printe dem ut etterpå. Hva har du lært så langt? ^ ikke det.... men vil jo prøve å klare så mange ukeoppgaver som mulig... :/ Lenke til kommentar
Imsvale Skrevet 5. september 2013 Del Skrevet 5. september 2013 ^ ikke det.... 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
GeirGrusom Skrevet 5. september 2013 Del Skrevet 5. september 2013 Listen i dette tilfellet er std::vector. #include <vector> int main() { std::vector<int> alleTall; alleTall.push_back(100); alleTall.push_back(200); for(auto itr = alleTall.begin(); *itr != alleTall.end(); itr++) { cout << *itr << endl; } return 0; } Burde skrive ut 100 200 Lenke til kommentar
Glutar Skrevet 5. september 2013 Del Skrevet 5. september 2013 (endret) Edit: Leste nå at du bare ville ha tips. La mulig løsning i spoiler . 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 5. september 2013 av Glutar Lenke til kommentar
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå