Niejasność w programie "Suma 999 wyrazów"

0

No więc poniżej zamieszczam programik. Na końcu jak widzicie chcę dokonać sumy wszystkich elementów tablicy, jednak przy ostatnim cout wyskakuje mi komunikat " 'suma' was not declared in this scope". Rozumiem, że jest to już poza klamrami, gdzie 'suma' postrzegana była jako zmienna lokalna, teraz program już jej nie zna. Jednak umieszczając cały ten wiersz cout<<endl<<"suma wszystkich liczb to: "<<suma; w klamrach wynik będzie na bieżąco podawany przy każdej pętli, czego nie chcę. Czy jest jakiś sposób rozwiązania tego problemu inny niż zmienna globalna ?

#include <iostream>
#include <random>
#include <time.h>
using namespace std;


void wypelnijTablice( int t[], int iRozmiar )
{
    int i = 0;
    do{
        t[i]=rand()%7+4;
        i++;
    }
    while (i<999);
}

int main ()
{
    srand(time(NULL));
    int i = 0;
    int moja_tablica[999];
    wypelnijTablice(moja_tablica, 999);

do{
       int suma=0;
    cout<<moja_tablica[i]<<endl;
    suma=suma+moja_tablica[i];
   i++;
}while (i<999);
cout<<endl<<"suma wszystkich liczb to: "<<suma;
return 0;
}
0

wywali int suma = 0; przed do

1

Jesteś niesamowicie niekulturalny.
Wchodzisz na forum, nie zapoznajesz się z jego zasadami, formatowaniem i wrzucasz potem taki nieczytelny post.

0

Deklarujesz sumę dopiero w pętli do-while więc poza nią nie będzie widoczna. Dodatkowo zerujesz ją przy każdym obiegu funkcji.

0

POPRAWKA(sorry za rozjechany tekst):
Jednak umieszczając cały przedostatni wiersz w klamrach dojdzie do sumowania na bieżąco przy każdej pętli, czego nie chcę. Czy jest jakiś sposób rozwiązania tego problemu inny niż zmienne globalne?

0

Jest - zmienne lokalne, ale najpierw uporządkuj kod, sformatuj go ect. Przez jego nieczytelność robisz błedy

0

Pomogło wywalenie int suma = 0 przed do, dzięki za pomoc. Jestem początkującym programistą, stąd słaba czytelność programów. Co do zasad formatowania - jestem tutaj drugi raz a na szybko chciałem znaleźć rozwiązanie, przez to nie zaznajomiłem się z zasadami formatowania. Przed kolejnym postem na pewno to zrobię. I nie mów mi o braku kultury, bo ją akurat mam na wysokim poziomie, dzięki.

1 użytkowników online, w tym zalogowanych: 0, gości: 1