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

Rozdział 18 Praca Domowa część 2

Ostatnio zmodyfikowano 2014-07-09 21:04
Autor Wiadomość
wirusomaniak
Temat założony przez niniejszego użytkownika
Rozdział 18 Praca Domowa część 2
» 2014-07-09 17:24:33
C/C++
#include <iostream>
#include <cstdlib>
using namespace std;

int main()
{
    int liczba[ 999 ];
    int losowe;
    int licznik = 0;
    do
    {
        srand( time( NULL ) );
        int losowe =( rand() % 10 ) + 4;
        licznik++;
    } while( licznik < 999 );
   
    std::cout << "Podales nastepujace liczby: ";
    licznik = 0;
    do
    {
        std::cout << liczba[ licznik ] << ", ";
        licznik++;
    } while( licznik < 999 );
   
    licznik = 0;
    int zmienna = 0;
    int wynik = 0;
    do
    {
        liczba[ zmienna ] += wynik;
        zmienna++;
        licznik++;
    } while( licznik == 998 );
   
    cout << "To jest suma wszystkich 999 liczb: " << wynik;
   
    return 0;
}
Gdy otwieram program zkomplikowany na podstawie tego kodu to suma wszystich liczb zawsze wynosi 0 dlaczego?!
Co jest źle?
P-113547
Jacob99
» 2014-07-09 17:35:48
A jak ma być inaczej, skoro w tym:
C/C++
do
{
    srand( time( NULL ) );
    int losowe =( rand() % 10 ) + 4;
    licznik++;
} while( licznik < 999 );

std::cout << "Podales nastepujace liczby: ";
licznik = 0;
do
{
    std::cout << liczba[ licznik ] << ", ";
    licznik++;
} while( licznik < 999 );

nigdzie nie wpisujesz danych do tablicy
liczba
?

Wynik tego wypisywania jest niezdefiniowany, bo w tej tablicy powinny być jakieś śmieci.

P.S.
zkomplikowany
 chyba skompilowany ;)
P-113548
pekfos
» 2014-07-09 17:56:05
C/C++
int wynik = 0;
do
{
    liczba[ zmienna ] += wynik;
    zmienna++;
    licznik++;
} while( licznik == 998 );

cout << "To jest suma wszystkich 999 liczb: " << wynik;
Nie modyfikujesz zmiennej wynik.
P-113549
wirusomaniak
Temat założony przez niniejszego użytkownika
» 2014-07-09 17:56:07
"nigdzie nie wpisujesz danych do tablicy
liczba
?

Wynik tego wypisywania jest niezdefiniowany, bo w tej tablicy powinny być jakieś śmieci."


W takim razie jak mam wpisać dane do tablicy ? Sory ale wracam do tego kursu po długiej przerwie i podstawy trochę mi się zatarły w pamięci...

Pekfos mógłbyś trochę jaśniej bo niezbyt rozumiem? jak to nie modyfikuje przecieć dodaje wartości z tablicy do tej zmiennej i w ten
sposób uzyskuje sume .....? nierozumiem.... o co ci chodzi z tą modyfikacją??
P-113550
pekfos
» 2014-07-09 17:58:36
W takim razie jak mam wpisać dane do tablicy ? Sory ale wracam do tego kursu po długiej przerwie i podstawy trochę mi się zatarły w pamięci...
To wróć na początek. Jeśli mamy ci tłumaczyć, jak przypisać wartość zmiennej, to trafiłeś pod zły adres..
P-113551
Jacob99
» 2014-07-09 17:59:25
No chyba chcesz z niej wyświetlać wylosowane liczby, więc w pętli
C/C++
do
{
    srand( time( NULL ) );
    int losowe =( rand() % 10 ) + 4;
    licznik++;
} while( licznik < 999 );

musisz dodać linijkę
liczba[ licznik ] = losowe;
przed licznik++;
P-113552
wirusomaniak
Temat założony przez niniejszego użytkownika
» 2014-07-09 18:18:55
Pekfos mógłbyś trochę jaśniej bo niezbyt rozumiem? jak to nie modyfikuje przecieć dodaje wartości z tablicy do tej zmiennej i w ten
sposób uzyskuje sume .....? nierozumiem.... o co ci chodzi z tą modyfikacją??



Jacob99  po odtworzeniu programu (z dodaniem tej linijki w kodzie ) wszystkie wylosowane liczby (999) są takie same????dlaczego?
wynik jest nadal równy 0 ale to napewno dlatego ,że nie zmodyfikowałem tego wyniku lecz niezbyt rozumiem o co chodz...
P-113554
pekfos
» 2014-07-09 18:25:54
Pekfos mógłbyś trochę jaśniej bo niezbyt rozumiem? jak to nie modyfikuje przecieć dodaje wartości z tablicy do tej zmiennej i w ten
sposób uzyskuje sume .....? nierozumiem.... o co ci chodzi z tą modyfikacją??
C/C++
do
{
    srand( time( NULL ) );
    int losowe =( rand() % 10 ) + 4;
    licznik++;
} while( licznik < 999 );

Tu nie modyfikujesz (ba, nawet nie używasz nazwy) tablicy, do której masz wylosować liczby. Zamiast tego ładujesz wyniki losowania w zmienną, która nie istnieje poza tą pętlą. A do zmiennej wynik w całym kodzie nigdzie niczego nie dodajesz. Skoro podstawy poszły ci w las, to powtórz je, zamiast brnąć dalej w kurs z takimi efektami.

Jacob99  po odtworzeniu programu (z dodaniem tej linijki w kodzie ) wszystkie wylosowane liczby (999) są takie same????dlaczego?
Bo wpisał wywołanie srand() w pętle, gdzie tego nie powinno być.
P-113555
« 1 » 2
  Strona 1 z 2 Następna strona