Błąd przy kompilacji. do while

0

Witajcie.Programowania uczę się od kilku dni i korzystam z kursu w którym pod koniec rozdziału jest zadanie do zrobienia tj. napisanie prostego programu i przy tablicach jednowymiarowych mam problem z wykonaniem polecenia, a brzmi ono tak : Napisz program, który wylosuje 999 liczb całkowitych z zakresu od 4 do 10 włącznie, wypisze te wartości na ekran, po czym zsumuje je i wynik wypisze na ekran. Program ma wykorzystywać tablicę, która zostanie najpierw wypełniona liczbami losowymi z określonego przedziału, a następnie wynik zostanie obliczony na podstawie zawartości całej tablicy. Obliczanie końcowego na razie nie próbowałem, ale w poniższym kodzie jest 1 error, mianowicie: W linii 14 : error: expected ';' before '}' token. I nie wiem czemu ten błąd wywala. Pomożecie ?;p

#include <iostream>
#include <cstdlib>
#include <ctime>
int main()
{
    srand ( time ( NULL ) );
    int liczba [ 1000 ];
    int xxx = 0;
        do
    {
        liczba [ xxx ] = ((rand() % 7 ) + 4);
        xxx++

    } while( liczba [ xxx ] != liczba [ 999 ]);

    std::cout << "Liczby: ";
    xxx = 0;
    do
    {
        std::cout << liczba [ xxx ] << ", ";
        xxx++;
    } while( liczba [ xxx ] != liczba [ 999 ]);

 std::cout << std:endl;
 std::cout << "Koniec";


    return 0;
}

Nie wiem też czy ten program będzie poprawnie działał nawet jak naprawie ten błąd. Więc możecie mnie poprawić jak trzeba.

0

Brakuje średnika po xxx++.

Pomysł na iterację po tablicy ciekawy, ale błędny. Taka tablica po zadeklarowaniu będzie wypełniona losowymi śmieciami. Jeżeli w komórce o indeksie 999 znajdzie się liczba, która została właśnie wylosowana, działanie pętli skończy się.
Lepiej będzie użyć pętli for, a przede wszystkim - warunek zakończenia pętli uzależnić od indeksu i tylko niego.

0

Mógł byś to dokładniej wyjaśnić ? P.S. Do pętli for jeszcze nie doszedłem. I dzięki:) Teraz działa.

0

Ah. Właściwie to jest jeszcze gorzej niż zauważyłem na początku.
Nie dość, że porównujesz wartości w komórkach tej tablicy to przed sprawdzeniem komórki o indeksie xxx, zwiększasz go. Znaczy to, że za każdym razem porównujesz wartości, które nie zostały jeszcze ustawione (domyślnie, niezainicjowana tablica na stosie nie jest zerowana i znajdują się tam śmieci).
Wstaw tam po prostu ograniczenie wielkości xxx.

0

Nie do końca wiem o co Ci chodzi (może dlatego że już późno :p), mógł byś to poprawić ograniczając się do lekcji 18 z tego kursu ? : http://cpp0x.pl/kursy/Kurs-C++/1 . Oczywiście zrozumiem odmowę :)

0
while( liczba [ xxx ] != liczba [ 999 ]);

o_O
nie dało się

while( xxx < 999);

?

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