Uppgift: Fråga användare efter tal och skriv ut summa och medelvärde

Permalänk
Medlem

Uppgift: Fråga användare efter tal och skriv ut summa och medelvärde

Hej alla!
Jag är en nybörjare och jag kan nästan ingenting alls om programmering.
Jag läser in gymnasieexamen på distans, och jag hade 100 poäng över och då tänkte jag att jag kunde pröva mig en data kurs, men det känns som om jag har tagit mig vatten över huvudet...
Jag har lyckats ta mig igenom alla uppgifter utom den sista.
Den låter så här

Skriv ett program som 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.

Jag ska ha med analysdel, pseudokod och källkod. Jag förstår hur jag ska göra analysdelen och pseudokoden. Det jag inte alls kommer någon vart med är käll koden. Jag har provat fram och tillbaka i oändligheter känns det som nu.
Jag har kommit fram till den här koden

#include <iostream> using namespace std; int main(int argc, const char * argv[]) { int max = INT_MIN; int nMax = INT_MIN; int min = INT_MAX; int sum = 0; int antal = 0; int inp = 0; while (true) { cout << "Skriv in tal" << endl; cin >> inp; if (inp == 0) { break; } if (inp > max) { nMax=max; max = inp; } if (inp > nMax && inp < max) { nMax = inp; } if (inp < min) { min = inp; } sum += inp; antal++; } cout << "Summa: " << sum << endl; cout << "Medelvärde: " << (double)sum/(double)antal << endl; cout << "Störst tal: " << max << endl; cout << "Näst störst tal: " << nMax << endl; cout << "Minst tal: " << min << endl; ("pause"); return 0; }

Men, ja det fungerar inte, och jag vet verkligen inte hur jag ska komma vidare.
Kan någon hjälpa mig?
Jag vore verkligen så himla tacksam för hjälp!

Redigerade in [code]-taggar för att göra koden mer läsbar.
Permalänk

Jag hade använt mig av en lista för att lagra de inmatade talen, sen metoder som returnerar det högsta värdet och medelvärdet. Nu vet jag inte hur mycket du kan men gör en metoddeklaration som returnerar ett tal och tar en lista som indata. Sen kan du gå igenom listan med en for-loop etc för att hitta det högsta värdet eller medelvärdet. Summan av talet får man på köpet när du räknar ut medelvärdet för det är ju det första man gör i den for-loopen, summerar ihop alla elementen i listan sen delar på antalet element Då får du använda en variabel som håller i summan och den kan du bara skriva ut sen.

Visa signatur

HTPC: Late 2014 Mac Mini
Bärbar: Mid 2012 MacBook Air

Permalänk
Medlem

Tack så mycket för svar.
Men ja, nej jag kan verkligen inte ett smack om detta, och jag ångrar mig att jag tog denna kurs om jag ska vara ärlig.
Jag kan näst in till ingenting om datorer. Och jag har suttit så många timmar, långt mer än alla andra kurser som jag läst.
Hur som helst, jag tackar så jättemycket för svaret, och jag ska försöka läsa mera om det som du skrev.
En fråga dock, är min källkod helt ute och cyklar?
Jag är nära på att ge upp här.

Tack igen
Med vänlig hälsning

Permalänk
Medlem
Skrivet av adde_84:

Hej alla!
Jag är en nybörjare och jag kan nästan ingenting alls om programmering.
Jag läser in gymnasieexamen på distans, och jag hade 100 poäng över och då tänkte jag att jag kunde pröva mig en data kurs, men det känns som om jag har tagit mig vatten över huvudet...
Jag har lyckats ta mig igenom alla uppgifter utom den sista.
Den låter så här

Skriv ett program som 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.

Jag ska ha med analysdel, pseudokod och källkod. Jag förstår hur jag ska göra analysdelen och pseudokoden. Det jag inte alls kommer någon vart med är käll koden. Jag har provat fram och tillbaka i oändligheter känns det som nu.
Jag har kommit fram till den här koden

#include <iostream>

using namespace std;
int main(int argc, const char * argv[])
{
int max = INT_MIN;
int nMax = INT_MIN;
int min = INT_MAX;
int sum = 0;
int antal = 0;
int inp = 0;

while (true) {
cout << "Skriv in tal" << endl;
cin >> inp;

if (inp == 0) {
break;
}

if (inp > max) {
nMax=max;
max = inp;
}
if (inp > nMax && inp < max) {
nMax = inp;
}

if (inp < min) {
min = inp;
}
sum += inp;
antal++;
}

cout << "Summa: " << sum << endl;
cout << "Medelvärde: " << (double)sum/(double)antal << endl;
cout << "Störst tal: " << max << endl;
cout << "Näst störst tal: " << nMax << endl;
cout << "Minst tal: " << min << endl;

("pause");
return 0;

}

Men, ja det fungerar inte, och jag vet verkligen inte hur jag ska komma vidare.
Kan någon hjälpa mig?
Jag vore verkligen så himla tacksam för hjälp!

Jag har testat koden och jag ser inget fel.

http://codepad.org/1GlGf8rY

Jag bytte ut input (cin) från användaren med en for-loop som går från 10 till 0.

Visa signatur

ηλί, ηλί, λαμά σαβαχθανί!?

Permalänk
Medlem

Tack så jättemycket.
Ni är så hjälpsamma!
Jag kom på en sak. Vilket program använder ni för att detta skall fungera? Jag använder någonting som heter codeblocks 13.12
Kanske ni använder något annat program, vilket ska jag då använda?
Som tidigare skrivet, jag är så himla tacksam för hjälpen!

Permalänk
Medlem
Skrivet av adde_84:

Jag kom på en sak. Vilket program använder ni för att detta skall fungera? Jag använder någonting som heter codeblocks 13.12
Kanske ni använder något annat program, vilket ska jag då använda?

Det ska inte spela någon större roll. Inte använt CodeBlocks speciellt mycket själv, men hört mycket gott om den.

Skrivet av adde_84:

Men, ja det fungerar inte, och jag vet verkligen inte hur jag ska komma vidare.

Fungerar inte på vilket sätt? Kompilerar det inte? Går programmet inte att starta? Krashar det? Gör det något annat fel? Kan du kompilera och köra andra, enklare, program?

Skrivet av adde_84:

En fråga dock, är min källkod helt ute och cyklar?

Jag tycker det ser ut som en bra början. Inte så många funktioner än (ingen faktiskt, förutom main), men det kan man lägga till allteftersom. Jag fick lägga till en #include <climits> högst upp för att kunna kompilera, men efter det verkar allt fungera som det ska.

Permalänk
Medlem
Skrivet av ibbles:

Det ska inte spela någon större roll. Inte använt CodeBlocks speciellt mycket själv, men hört mycket gott om den.

Fungerar inte på vilket sätt? Kompilerar det inte? Går programmet inte att starta? Krashar det? Gör det något annat fel? Kan du kompilera och köra andra, enklare, program?

Jag tycker det ser ut som en bra början. Inte så många funktioner än (ingen faktiskt, förutom main), men det kan man lägga till allteftersom. Jag fick lägga till en #include <climits> högst upp för att kunna kompilera, men efter det verkar allt fungera som det ska.

Hej!
När jag har byggt och kör igång programmet så kommer det först upp att jag ska ange tal.
Säg att jag skriver 1 2 3 4 5
Istället för att räkna ut så står det 5 rader skriv in tal...

Skickades från m.sweclockers.com

Permalänk
Medlem

Jo, det är precis så den ska göra. Eller i alla fall så du sagt åt den att göra. Skulle vara intressant att se din pseudokod. Såhär ser min ut.

1) Skriv ut "Skriv in tal".
2) Läs in ett tal från användaren.
3) Om talet är 0, gå till 6).
4) Uppdatera variabler (max, nMax, ...)
5) Gå till 1.
6) Skriv ut variabler.

Så när du ger den "1 2 3 4 5" så kommer den aldrig nå 6) eftersom 0 inte är med. Den kommer också, som du märkt, skriva ut "Skriv in tal" en gång för varje tal den läser in.

Permalänk
Medlem

Fortfarande problem med källkoden!

Hej igen!
Jag skrev tidigare här om min källkod.
Nu har jag fått många svar men tyvärr, jag får fortfarande inte ihop det!
Jag är som sagt en nybörjare till tusen och kan verkligen nada.
Jag har endast denna sista uppgift kvar i min kurs, sen är jag äntligen klar!
Uppgiften lyder

Skriv ett program som 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.

Jag har suttit så många timmar och veckor med denna kurs, och idag har jag suttit oavbrutet vid datan och försökt få till det, men det känns bara mera och mera hopplöst!
Detta är min början till kod.... Men ja, jag känner mer och mer att jag är ute och cyklar totalt!

#include <iostream> using namespace std; int main(int argc, const char * argv[]) { int max = INT_MIN; int nMax = INT_MIN; int min = INT_MAX; int sum = 0; int antal = 0; int inp = 0; while (true) { cout << "Skriv in tal" << endl; cin >> inp; if (inp == 0) { break; } if (inp > max) { nMax=max; max = inp; } if (inp > nMax && inp < max) { nMax = inp; } if (inp < min) { min = inp; } sum += inp; antal++; } cout << "Summa: " << sum << endl; cout << "Medelvärde: " << (double)sum/(double)antal << endl; cout << "Störst tal: " << max << endl; cout << "Näst störst tal: " << nMax << endl; cout << "Minst tal: " << min << endl; ("pause"); return 0; }

Nu kommer mina frågor.....
Hur sjutton ska man göra för att få ihop detta????
Och jag fick jättefina tips från flera människor i förra inlägget men jag får fortfarande inte ihop det, trots att det stod att det funkar för dom när dom kör programmet, vilket gör mig mer och mer förvirrad...
Och, är det olika ifrån program till program?
Jag har codeblocks och Visual c++ 2010 express. Men jag kan ta hem vilket program som helst om det finns något bättre?

SOM SAGT, NU ÄR JAG DESPERAT, JAG HAR SUTTIT I VECKOR MED DETTA, OCH JA, JAG KAN INGENTING OM DETTA!!
FÅR JAG INTE HJÄLP MED DETTA NU SÅ GODTAR JAG ETT F I BETYG, FÖR NU SJUTTON VET JAG INTE VAD JAG SKA TA MIG TILL!!!
Och snälla, hjälp mig med konkreta lösningar, jag förstår verkligen inte när folk föreslår loopar och allt möjligt vad det nu heter.....
Som sagt, OERHÖRT tacksam för all hjälp!

Med vänligaste hälsningar

Permalänk
Legendarisk

* Sammanfogat flera trådar om samma ämne, förtydligat rubriken *

www.sweclockers.com/forum/regler#3

Visa signatur

Abstractions all the way down.

Permalänk
Hedersmedlem

Vad var då problemet? Behöver du

#include <climits>

?

Permalänk
Hedersmedlem
Skrivet av adde_84:

Som sagt, OERHÖRT tacksam för all hjälp!

Istället för att rapa upp samma harang om att du vill ha hjälp så kanske du ska svara på frågan som ställdes om vad det inte är som funkar. Jag tycker att din kod ser utmärkt ut, men jag vet å andra sidan inte hur du förväntar dig att den ska funka.

Edit: Ditt program funkar utmärkt när jag kör det i Visual Studio 2010 om man matar in ett och ett tal följt av enter. Dock så får man sätta en breakpoint i slutet om man kör genom Visual Studio eftersom VS stänger fönstret direkt när programmet kört klart.

Edit2: Fast du löser inte uppgiften. Enligt uppgiften ska programmet vara uppbyggt av ett antal funktioner.

Visa signatur

Använd gilla för att markera nyttiga inlägg!

Permalänk
Medlem

Hej! Tack för ditt svar.
Menar du något i stil med

#include <climits>
using namespace std;

int main(int argc, const char * argv[])
{
int max = INT_MIN;
int nMax = INT_MIN;
int min = INT_MAX;
int sum = 0;
int antal = 0;
int inp = 0;

for (int i = 10; i > -1;i--)
{
inp = i;

if (inp == 0)
{
break;
}

if (inp > max)
{
nMax = max;
max = inp;
}
if (inp > nMax && inp < max)
{
nMax = inp;
}

if (inp < min)
{
min = inp;
}
sum += inp;
antal++;
}

cout << "Summa: " << sum << endl;
cout << "Medelvärde: " << (double) sum / (double) antal << endl;
cout << "Störst tal: " << max << endl;
cout << "Näst störst tal: " << nMax << endl;
cout << "Minst tal: " << min << endl;

return 0;

}

Det fungerar inte, varken i codeblocks eller Visual c++......
Det står i codeblocks att det inte går att bygga och i Visual c++ att det var several building problems...

Nu får jag inte ens till att programmet kommer igång...
Förut gick det, och nu har jag rört ihop allting igen...

En annan fråga, är codeblocks eller Visual c++ bra eller finns det något annat?
Jag är helt vilse nu känns det som.
Tack för ditt svar

Permalänk
Medlem
Skrivet av giplet:

Istället för att rapa upp samma harang om att du vill ha hjälp så kanske du ska svara på frågan som ställdes om vad det inte är som funkar. Jag tycker att din kod ser utmärkt ut, men jag vet å andra sidan inte hur du förväntar dig att den ska funka.

Edit: Ditt program funkar utmärkt när jag kör det i Visual Studio 2010 om man matar in ett och ett tal följt av enter. Dock så får man sätta en breakpoint i slutet om man kör genom Visual Studio eftersom VS stänger fönstret direkt när programmet kört klart.

Edit2: Fast du löser inte uppgiften. Enligt uppgiften ska programmet vara uppbyggt av ett antal funktioner.

Hej! Tack för ditt svar!
Jag förstår inte hur du får det att fungera i Visual studio, jag skriver ju exakt in samma men då står det ju att det inte går att bygga...
Jag kanske säger någonting väldigt dumt just nu, men, när man har skrivit koden så trycker väl man på den gröna pilen som heter start debugging? Ska inte programmet komma upp då?
Vad är breakpoint?
Hur löser jag uppgiften?
Jättestort tack på förhand.
Med vänliga hälsning

Permalänk
Hedersmedlem
Skrivet av adde_84:

Det står i codeblocks att det inte går att bygga och i Visual c++ att det var several building problems...

Vad står det (i visual c++)?

Permalänk
Medlem
Skrivet av adde_84:

Hur sjutton ska man göra för att få ihop detta????
Och jag fick jättefina tips från flera människor i förra inlägget men jag får fortfarande inte ihop det, trots att det stod att det funkar för dom när dom kör programmet, vilket gör mig mer och mer förvirrad...
Och, är det olika ifrån program till program?

Jag har svårt att sätta mig in i din situation. Du ger en beskrivning av en uppgift och sedan ett stycke kod som faktiskt löser precis den uppgiften. Vilket eller vilka problem ser du fortfarande? Vari tycker du din lösning skiljer från det som efterfrågats? Jag gav tidigare följande algoritmbeskrivning av koden du postat.

1) Skriv ut "Skriv in tal".
2) Läs in ett tal från användaren.
3) Om talet är 0, gå till 6).
4) Uppdatera variabler (max, nMax, ...)
5) Gå till 1.
6) Skriv ut variabler.

Kan du se att det här är en riktig beskrivning av din kod? Hur tycker du att en liknande beskrivning som löser uppgiften skulle se ut?

I nästa inlägg vill jag se en punktlista med saker som är fel.

Vi måste hålla isär två saker. Den ena är vad du vill att datorn ska göra och den andra är hur man via kod får datorn att göra precis det. Det är ofta bra att svara på det första innan man börjar på det andra.

Skrivet av adde_84:

Det fungerar inte, varken i codeblocks eller Visual c++......
Det står i codeblocks att det inte går att bygga och i Visual c++ att det var several building problems...

Det här är ett exempel på problem med den andra saken. Det är detaljer som "egentligen" inte är så viktiga och som vi lätt kan hjälpa med. I det här fallet har en #include <iostream> råkat försvinna. Viktigare är att förstå vad man egentligen vill ha.

Skrivet av adde_84:

En annan fråga, är codeblocks eller Visual c++ bra eller finns det något annat?

Finns massvis, men det spelar ingen roll vad du använder. Ditt program kommer bete sig likadant. Har du listat ut hur man kompilerar och startar program i CodeBlocks så fortsätt med det du. Eller byt till Visual C++ om du tycker det känns bättre. Eller byt varannan timme för att inte fastna i hur ett enda program fungerar.

Permalänk
Medlem
Skrivet av Elgot:

Vad står det (i visual c++)?

Tack för svaret.

När jag skriver in följande kod i Visual c++

#include <climits>
using namespace std;

int main(int argc, const char * argv[])
{
int max = INT_MIN;
int nMax = INT_MIN;
int min = INT_MAX;
int sum = 0;
int antal = 0;
int inp = 0;

for (int i = 10; i > -1;i--)
{
inp = i;

if (inp == 0)
{
break;
}

if (inp > max)
{
nMax = max;
max = inp;
}
if (inp > nMax && inp < max)
{
nMax = inp;
}

if (inp < min)
{
min = inp;
}
sum += inp;
antal++;
}

cout << "Summa: " << sum << endl;
cout << "Medelvärde: " << (double) sum / (double) antal << endl;
cout << "Störst tal: " << max << endl;
cout << "Näst störst tal: " << nMax << endl;
cout << "Minst tal: " << min << endl;

return 0;

}

Efter detta trycker jag på gröna pilen och då kommer rutan There were build errors.
Och i outputen står det

------ Build started: Project: gggg, Configuration: Debug Win32 ------
gggg.cpp
c:\users\adde\desktop\gaaaahhh\gggg\gggg\gggg.cpp(1): warning C4627: '#include <climits>': skipped when looking for precompiled header use
Add directive to 'StdAfx.h' or rebuild precompiled header
c:\users\adde\desktop\gaaaahhh\gggg\gggg\gggg.cpp(49): fatal error C1010: unexpected end of file while looking for precompiled header. Did you forget to add '#include "StdAfx.h"' to your source?
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

Har du någon aning om vad felet är?
Med vänliga hälsningar

Permalänk
Medlem
Skrivet av ibbles:

Jag har svårt att sätta mig in i din situation. Du ger en beskrivning av en uppgift och sedan ett stycke kod som faktiskt löser precis den uppgiften. Vilket eller vilka problem ser du fortfarande? Vari tycker du din lösning skiljer från det som efterfrågats? Jag gav tidigare följande algoritmbeskrivning av koden du postat.

1) Skriv ut "Skriv in tal".
2) Läs in ett tal från användaren.
3) Om talet är 0, gå till 6).
4) Uppdatera variabler (max, nMax, ...)
5) Gå till 1.
6) Skriv ut variabler.

Kan du se att det här är en riktig beskrivning av din kod? Hur tycker du att en liknande beskrivning som löser uppgiften skulle se ut?

I nästa inlägg vill jag se en punktlista med saker som är fel.

Vi måste hålla isär två saker. Den ena är vad du vill att datorn ska göra och den andra är hur man via kod får datorn att göra precis det. Det är ofta bra att svara på det första innan man börjar på det andra.

Det här är ett exempel på problem med den andra saken. Det är detaljer som "egentligen" inte är så viktiga och som vi lätt kan hjälpa med. I det här fallet har en #include <iostream> råkat försvinna. Viktigare är att förstå vad man egentligen vill ha.

Finns massvis, men det spelar ingen roll vad du använder. Ditt program kommer bete sig likadant. Har du listat ut hur man kompilerar och startar program i CodeBlocks så fortsätt med det du. Eller byt till Visual C++ om du tycker det känns bättre. Eller byt varannan timme för att inte fastna i hur ett enda program fungerar.

Tack så jättemycket för att du hjälper mig vill jag börja med att säga!
Punklista kommer här.

1. Jag får inte programmet att "komma igång" det vill säga att jag får inte upp rutan då jag ska trycka in talen längre.
2. Tidigare, innan jag rörde ihop allting, så fick jag upp rutan där det stod att jag skulle trycka in talen, när jag tryckte in olika tal så hände ingenting, ingen uträkning, utan det som kom upp var flera olika rader där det stod att jag skulle ange tal, på varje rad.
3. Uppgiften som jag ska göra lyder så här
Skriv ett program som 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.
Hur får jag till allt?
4. Är min källkod "hyfsad"? Det känns som att jag rör till det mer och mer, och det blir sämre och sämre.
Tro mig, jag är jätte tacksam för att du är så snäll och hjälper mig!

Permalänk
Hedersmedlem
Skrivet av adde_84:

Hej! Tack för ditt svar!
Jag förstår inte hur du får det att fungera i Visual studio, jag skriver ju exakt in samma men då står det ju att det inte går att bygga...
Jag kanske säger någonting väldigt dumt just nu, men, när man har skrivit koden så trycker väl man på den gröna pilen som heter start debugging? Ska inte programmet komma upp då?
Vad är breakpoint?
Hur löser jag uppgiften?
Jättestort tack på förhand.
Med vänliga hälsning

Jag startar Visual Studio. Väljer att skapa ett nytt Win32 Console Application. I wizzarden som kommer upp väljer jag ett tomt projekt. Sedan lägger jag till en ny cpp-fil och klistrar in din kod från inlägg #9 och trycker på den gröna pilen. Programmet kompilerar och startar, jag matar in mina tal ett och ett med enter mellan varje och avslutar med 0 och enter. Det som då händer är att programmet skriver ut svaren och sedan avslutar det. För att förhindra det lägger jag en breakpoint på sista raden i programmet genom att klicka i listen längst ut till vänster så att jag får en röd icon på den raden. När man kör programmet igen kommer den att hoppa till Visual Studio när den når breakpointen. Vill du se vad som står i ditt fönster trycker du alt-tab.

Visa signatur

Använd gilla för att markera nyttiga inlägg!

Permalänk
Hedersmedlem
Skrivet av adde_84:

Har du någon aning om vad felet är?

Tryck alt+f7, gå till Configuration Properties --> C/C++ --> Precompiled Headers och välj
Precompiled Header: Not Using Precompiled Headers
och försök igen.

Alternativt kan du testa att lägga till
#include "stdafx.h"
högst upp i filen (du har kanske råkat radera den).

Permalänk
Legendarisk
Skrivet av adde_84:

Har du någon aning om vad felet är?
Med vänliga hälsningar

Projektet är inställt på att använda precompiled headers, men du saknar referensen till stdafx.h. Stäng av alternativet i Configuration Properties -> C/C++ -> Precompiled Headers eller lägg tillbaks referensen till stdafx.h. Sedan måste du även lägga tillbaks den nu borttagna referensen till iostream.

Skickades från m.sweclockers.com

Visa signatur

Abstractions all the way down.

Permalänk
Medlem
Skrivet av ibbles:

Jag har svårt att sätta mig in i din situation. Du ger en beskrivning av en uppgift och sedan ett stycke kod som faktiskt löser precis den uppgiften. Vilket eller vilka problem ser du fortfarande? Vari tycker du din lösning skiljer från det som efterfrågats? Jag gav tidigare följande algoritmbeskrivning av koden du postat.

1) Skriv ut "Skriv in tal".
2) Läs in ett tal från användaren.
3) Om talet är 0, gå till 6).
4) Uppdatera variabler (max, nMax, ...)
5) Gå till 1.
6) Skriv ut variabler.

Kan du se att det här är en riktig beskrivning av din kod? Hur tycker du att en liknande beskrivning som löser uppgiften skulle se ut?

I nästa inlägg vill jag se en punktlista med saker som är fel.

Vi måste hålla isär två saker. Den ena är vad du vill att datorn ska göra och den andra är hur man via kod får datorn att göra precis det. Det är ofta bra att svara på det första innan man börjar på det andra.

Det här är ett exempel på problem med den andra saken. Det är detaljer som "egentligen" inte är så viktiga och som vi lätt kan hjälpa med. I det här fallet har en #include <iostream> råkat försvinna. Viktigare är att förstå vad man egentligen vill ha.

Finns massvis, men det spelar ingen roll vad du använder. Ditt program kommer bete sig likadant. Har du listat ut hur man kompilerar och startar program i CodeBlocks så fortsätt med det du. Eller byt till Visual C++ om du tycker det känns bättre. Eller byt varannan timme för att inte fastna i hur ett enda program fungerar.

Hej igen!!
Nu har jag skrivit in

#include <iostream>

#include <climits>
using namespace std;

int main(int argc, const char * argv[])
{
int max = INT_MIN;
int nMax = INT_MIN;
int min = INT_MAX;
int sum = 0;
int antal = 0;
int inp = 0;

for (int i = 10; i > -1;i--)
{
inp = i;

if (inp == 0)
{
break;
}

if (inp > max)
{
nMax = max;
max = inp;
}
if (inp > nMax && inp < max)
{
nMax = inp;
}

if (inp < min)
{
min = inp;
}
sum += inp;
antal++;
}

cout << "Summa: " << sum << endl;
cout << "Medelvärde: " << (double) sum / (double) antal << endl;
cout << "Störst tal: " << max << endl;
cout << "Näst störst tal: " << nMax << endl;
cout << "Minst tal: " << min << endl;

return 0;

}

i codeblocks.
Jag får "upp" programmet nu, men när det öppnas så är det redan ifyllt siffror som redan räknas ut, och när man ska trycka på något så avslutas det...
Nu känns det som om jag är på rätt väg iaf!!
Jag skulle vara jätte tacksam om du kunde hjälpa mig "hela vägen fram" ?

Tack så jättemycket än en gång!

Permalänk
Hedersmedlem
Skrivet av adde_84:

Jag får "upp" programmet nu, men när det öppnas så är det redan ifyllt siffror som redan räknas ut, och när man ska trycka på något så avslutas det...

Om du återgår till koden du hade här (fast eventuellt med <climits>) fungerar det nog bättre.

Permalänk
Medlem
Skrivet av Elgot:

Om du återgår till koden du hade här (fast eventuellt med <climits>) fungerar det nog bättre.

Tyvärr så fungerar det fortfarande inte. Jag har tagit bort precompile headers. När jag ska köra programmet nu så kommer rutan upp och försvinner på en gång.
Stort tack för att du tar dig tiden med detta!

Permalänk
Legendarisk
Skrivet av adde_84:

Tyvärr så fungerar det fortfarande inte. Jag har tagit bort precompile headers. När jag ska köra programmet nu så kommer rutan upp och försvinner på en gång.
Stort tack för att du tar dig tiden med detta!

Sätt en brytpunkt precis innan programmet avslutas eller kör det med Ctrl-F5.

Skickades från m.sweclockers.com

Visa signatur

Abstractions all the way down.

Permalänk
Medlem
Skrivet av Tunnelsork:

Sätt en brytpunkt precis innan programmet avslutas eller kör det med Ctrl-F5.

Skickades från m.sweclockers.com

Tack så mycket, nu har jag gjort så att programmet inte avslutas på en gång...
Men nu återstår alla andra frågor... Hur klarar jag av uppgiften? Jag känner att jag kommer en aning närmare lösningen nu, men hur ska jag göra för att klara av uppgiften?
med vänliga hälsningar

Permalänk
Medlem

Jag håller med giplet och Elgot, koden i inlägg #9 är en bra utgångspunkt.

Skrivet av adde_84:

1. Jag får inte programmet att "komma igång" det vill säga att jag får inte upp rutan då jag ska trycka in talen längre.

Detta berodde på ett kompileringsfel pga att dina includes rörts till en aning. Tidigare har precompiled headers och stdafx.h nämnts. Jag rekommenderar att du stänger av precompiled headers och glömmer stdafx.h. Jag räknar det till "advanced topics" som vi kan ta senare.

Skrivet av adde_84:

2. Tidigare, innan jag rörde ihop allting, så fick jag upp rutan där det stod att jag skulle trycka in talen, när jag tryckte in olika tal så hände ingenting, ingen uträkning, utan det som kom upp var flera olika rader där det stod att jag skulle ange tal, på varje rad.

Exempel är bra och i det exempel du gav i inlägg #7 var talen du skrev in "1 2 3 4 5". Två saker är viktiga här. Det första är att inget av talen är 0. Notera meningen "Användaren ska ange 0 i slutet av talserien." i följande citat av dig. Det andra är att det är mellanslag mellan varje siffra. Bättre är att trycka enter istället. giplet ger en bra beskrivning av hur programmet kan användas i inlägg #19. Orsaken är att saker man skriver på tangentbordet skickas till programmet när man trycker enter. Det är det som gör att du får flera "Skriv in tal" på en gång, en för varje tal på raden. Skriver man bara ett tal per rad känns det kanske mer naturligt. Du säger "så hände ingenting, ingen uträkning". Jag tror inte det är riktigt sant, jag tror den räknade en hel del. Precis det som jag kallade för "4) Uppdatera variabler" i min pseudokod. Men ingenting skrivs ut där så det syns inte. Inte förrens det speciella talet 0 kommer. Vilket det aldrig gjorde....

Skrivet av adde_84:

3. Uppgiften som jag ska göra lyder så här
Skriv ett program som 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.
Hur får jag till allt?

Det kanske inte är en helt dum ide att testa på debuggern lite. Det kan ge en hel del insikt i hur ett program beter sig. Sätt en breakpoint i början av main genom att klicka längst ut till vänster på raden med "int main", det brukar dyka upp en liten prick eller så, och starta sedan med debuggern. Låter som att det är en grön pil i Visual C++ och i CodeBlocks ser det ut att vara en röd pil istället. Man kan sedan stega fram i programmet och se vad som händer.

Skrivet av adde_84:

4. Är min källkod "hyfsad"? Det känns som att jag rör till det mer och mer, och det blir sämre och sämre.

Koden i inlägg #9 är hyffsad. Den gör väl det den ska, eller?

Permalänk
Medlem

TILL ALLA ER SOM HAR SVARAT!!

Jag tackar så innerligt för er hjälp. Men ja, det känns som om jag inte kommer någon vart, jag har fått många många tips och förslag på lösningar. Men än så länge har jag inte lyckats lösa detta.

Jag har därför kommit fram till följande.

Kan någon vänlig själ kunna göra en hel källkod åt mig?

Uppgiften
Skriv ett program som 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.

Jag är så himla tacksam för alla tips!

Stort stort tack på förhand!!!!
Med vänligaste hälsningar

Permalänk
Medlem
Skrivet av ibbles:

Jag håller med giplet och Elgot, koden i inlägg #9 är en bra utgångspunkt.

Detta berodde på ett kompileringsfel pga att dina includes rörts till en aning. Tidigare har precompiled headers och stdafx.h nämnts. Jag rekommenderar att du stänger av precompiled headers och glömmer stdafx.h. Jag räknar det till "advanced topics" som vi kan ta senare.

Exempel är bra och i det exempel du gav i inlägg #7 var talen du skrev in "1 2 3 4 5". Två saker är viktiga här. Det första är att inget av talen är 0. Notera meningen "Användaren ska ange 0 i slutet av talserien." i följande citat av dig. Det andra är att det är mellanslag mellan varje siffra. Bättre är att trycka enter istället. giplet ger en bra beskrivning av hur programmet kan användas i inlägg #19. Orsaken är att saker man skriver på tangentbordet skickas till programmet när man trycker enter. Det är det som gör att du får flera "Skriv in tal" på en gång, en för varje tal på raden. Skriver man bara ett tal per rad känns det kanske mer naturligt. Du säger "så hände ingenting, ingen uträkning". Jag tror inte det är riktigt sant, jag tror den räknade en hel del. Precis det som jag kallade för "4) Uppdatera variabler" i min pseudokod. Men ingenting skrivs ut där så det syns inte. Inte förrens det speciella talet 0 kommer. Vilket det aldrig gjorde....

Det kanske inte är en helt dum ide att testa på debuggern lite. Det kan ge en hel del insikt i hur ett program beter sig. Sätt en breakpoint i början av main genom att klicka längst ut till vänster på raden med "int main", det brukar dyka upp en liten prick eller så, och starta sedan med debuggern. Låter som att det är en grön pil i Visual C++ och i CodeBlocks ser det ut att vara en röd pil istället. Man kan sedan stega fram i programmet och se vad som händer.

Koden i inlägg #9 är hyffsad. Den gör väl det den ska, eller?

Tack för hjälpen!
Jag ska kolla och försöka med allt som du har skrivit!
Jag känner verkligen att jag tog mig vatten över huvudet nu när kursen kom igång. Min studievägledare sa att detta var en relativt enkel kurs som man inte behöver någon förkunskap för. Jag vet inte om jag kan hålla med om det.
Jag ska försöka med kod #9 och se om jag kommer någon vart. Annars prövar jag på något annat sätt.
Som sagt, tack så jättemycket.

Permalänk
Medlem

Angående att fönstret försvinner direkt. Istället för att lägga in breakpoints kan man använda följande lilla trick. Som en bonus får du in en funktion också

Placera följande mellan "using namespace std" och "int main...".

void waitForUser() { cout << "Press ENTER to exit." << endl; // Behövs två get() här. Det första för det enter som ligger bakom 0:an // och det andra för det enter som användaren trycker som svar på utskriften // ovan. cin.get(); cin.get(); }

och en

waitForUser();

precis innan "return 0;" i slutet av main.