Tips för dig som som nybörjare är att ta c++ (eller programmeringsspråk överhuvudtaget) ur ekvationen och skriva ner vad koden ska göra, både i ord och seudokod. Då kan du fokusera på att få logiken rätt utan att behöva tänka på syntax och liknande. kom själv ihåg att det var svårt när jag började programmera.
Denna koden har problem rent logikmässigt som andra redan påpekat.
{
while (dN != 0) {
std::cout << "Ange hur manga tal, ange 0 for avslut: ";
std::cin >> dN;
for (i = 0; i < dN; i++) {
std::cout << "Ange tal " << i + 1 << ": ";
std::cin >> dN2;
summa += dN2;
medel = fmedel(summa, dN);
}
if (dN != 0) {
utskrift2(dSum);
}
}
}
Här har du dels kod som aldrig kommer att exekveras (Du kollar om (dN != 0) både i while och if) och potentiellt onödigt kod.
Börja med att göra seudokod så blir det enklare att se dessa typer av fel.
Här är suedokod för ett program som summerar tal tills "0" skrivs in. Då skrivs medelvärdet ut.
Program()
{
antal = 0;
summa = 0;
Mata in siffror tills 0 matas in {
summera talen som matas in.
summera ANTAL tal som matas in
}
skriv ut medelvärdet (dividera summan med antalet)
}
Om du t.ex. vill summera summan efter varje inmatning så flyttar vi upp utskriften till loopen
Program()
{
antal = 0;
summa = 0;
Mata in siffror tills 0 matas in {
summera talen som matas in.
summera ANTAL tal som matas in
skriv ut medelvärdet (dividera summan med antalet)
}
}
Vill du att programmet återställs vid 0 för att sen fortsätta behöver du ändra villkoren i din while-loop
t.ex. kan vi ha att vi kör programmet till vi får in ett negativt tal (Bara för att ha ett enkelt stopvilkor) programmet återställer då värdena vid 0 istället för att avsluta helt.
Program()
{
antal = 0;
summa = 0;
Mata in siffror tills ett negativt tal matas in {
om tal = 0{
nollställ antal
nollställ summa
}
annars{
summera talen som matas in.
summera ANTAL tal som matas in
skriv ut medelvärdet (dividera summan med antalet)
}
}
}
Har läst igenom dina kommentarer och är lite osäker på vad du vill att koden faktiskt ska göra. Ska den köras flera gånger eller bara en? ska man summera efter varje eller först när man trycker på 0 etc. Ta lite tid och tänk ut exakt vad du vill att programmet ska göra, det blir mycket enklare sen och risken att köra fast är mindre. Du kan också testa på "Rubber duck debugging"
https://en.wikipedia.org/wiki/Rubber_duck_debugging
Disclaimer: det var ett tag sedan jag programmerade i C++ så är inte helt hundra på alla syntaxer längre så kan inte hjälpa helt med sådana frågor men det är ju det man har google till