Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Tablice oraz zmienne globalne

Ostatnio zmodyfikowano 2016-07-25 05:38
Autor Wiadomość
CCbolt
Temat założony przez niniejszego użytkownika
Tablice oraz zmienne globalne
» 2016-07-24 23:44:25
Zastanawia mnie czemu pierwszy zapis działa w programie a drugi nie, zmienna losowanie jeżeli jest globalna wyświetla tylko jedną wartość  liczby przez X razy. Ja coś źle robię czy są to "zalety" tego języka i tak jest bo jest.
W kursie jak i w zadaniach na forum przed każdą pętlą wstawia się  element tablicy,licznik = 0; trochę nie rozumiem czemu trzeba za każdym razem to akcentować)
(Cholernie zmęczony jestem ale pytania z sensem raczej zadałem)


C/C++
int main()
{
    srand( time( NULL ) );
   
    int tablica[ 999 ];
    int licznik = 0;
    int suma = 0;
   
    do
    { int losowanie =( rand() % 7 ) + 4;
        tablica[ licznik ] = losowanie;
        licznik++;
    } while( licznik < 999 );
   

C/C++
int main()
{
    srand( time( NULL ) );
    int losowanie =( rand() % 7 ) + 4;
    int tablica[ 999 ];
    int licznik = 0;
    int suma = 0;
   
    do
    { int losowanie =( rand() % 7 ) + 4;
        tablica[ licznik ] = losowanie;
        licznik++;
    } while( licznik < 999 );
   
P-150233
Kakazoo
Petle, a zmienne
» 2016-07-25 00:12:05
Nie do końca rozumiem pierwsze pytanie, ale jeśli chodzi o pętle, a zmienne to posłużmy się pętlą for bo jest najprostsza i deklaracja jest nad ciałem pętli.

Przykladowo:
C/C++
for( int i = 0; i < 10; i++ )
{
    //INSTRUKCJE
}

Na pierwszym miejcu mamy licznik. Jeśli zadeklarowałeś ten licznik dopiero w tej pętli, mam na myśli nawiasy, to będzie on zmienną lokalną i nie możesz jej nigdzie indziej niż w tej pętli odczytać lub zmienić. Jeśli to zechcesz zrobić kompilator wywali ci błąd.

Na drugim mamy warunek i<10 sprawi, że pętla wykona się 10 razy.

Na trzecim mamy instrukcję "co zrobić z licznikiem". Tutaj mamy zwykłą iterację ++ czyli zwiększ wartość o 1;

Jeśli natomiast licznik masz zadeklarowany o tak:
C/C++
int i = 0;

for( i; i < 10; i++ )
{
    //INSTRUKCJE
}

To poinformowałeś pętlę, że licznikiem jest zmienna i. Jako, że jest globalna (w zasadzie to tylko dla int main(), ale jeszcze przed tobą długa droga ) to możesz sobie ją dowolnie zmieniać i wywoływać w reszcie kodu. Może on zostać licznikiem dla drugiej pętli.

Tam w tym pierwszym argumencie dla pętli for możesz sobie zmienić wartość tego licznika "globalnego" np ustawić  i=0;

Pamiętaj, że:
Jeśli deklarujesz licznik w pętli np. int i=0 to jest lokalny dla tej pętli i druga pętla może mieć tak samo nazwane int i=0;
Jeśli deklarujesz w ciele int main() to będzie to "globalny" licznik;

Uważaj z tym globalnym bo jeśli go nie zresetujesz np do 0, to inne pętle korzystające z niego będą źle liczyć ile mają się razy wykonać, więc jeśli nie musisz to go nie używaj;


A co do tablic:

Jeśli mamy lokalnie zadeklarowane to tablica wewnątrz pętli może sobie korzystać z tego licznika bez żadnego problemu.
C/C++
for( int i = 0; i < 10; i++ )
{
    cout << tablica[ i ] << endl;
}
Tutaj 10 razy wyświetli się zawartość tablicy z kolejnej "szufladki" po kolei [0],[1] itd...


cout << "To tyle z mojej strony" << endl;

Drobny edit: teraz widzę, że czasem zamiast kropek używam " ; ", ale to wchodzi w krew :D
P-150234
carlosmay
» 2016-07-25 05:38:10
nie stosuj zmiennych globalnych.

C/C++
int i = 0;

for( i; i < 10; i++ )
{
    //INSTRUKCJE
}
To samotne 'i' w nagłówku pętli nic nie robi (jest niepotrzebne).

Lepiej pisać:
C/C++
int i = 0;
while( i < 10 ) { ++i; }

// lub
int i;
for( i = 0; i < 10; ++i ) { } // ustalenie wartości licznika w nagłówku
P-150238
« 1 »
  Strona 1 z 1