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

lekcja 18 tablice jednowymiarowe blad sumy

Ostatnio zmodyfikowano 2017-01-27 16:52
Autor Wiadomość
ppczosnek
Temat założony przez niniejszego użytkownika
lekcja 18 tablice jednowymiarowe blad sumy
» 2017-01-26 18:49:46
Witam,

Mam problem z zadaniem z lekcji 18 - tablice jednowymiarowe.
Wszystko działa oprócz sumy wszystkich liczb. działa niepoprawnie ponieważ wynik który zawsze pokazuje jest równy koło 1003.
próbowałem też wynik zamieszczać pod zmienną zamiast ponownie pod tablica[] lecz efekt był taki sam. Nie wiem gdzie robię błąd, czy można prosić o pomoc?

C/C++
using namespace std;

int losowanie()
{
    int los;
    los =( rand() % 7 ) + 4;
    return los;
}

int main()
{
    srand( time( NULL ) );
    int tablica[ 999 ];
    int ilosc = 999;
    int i = 0;
    int j = 0;
    int k = 0;
    int suma[ 999 ];
   
    do
    {
        tablica[ i ] = losowanie();
        cout << "liczba " << k << " : " << tablica[ i ] << endl;
        i++;
        k++;
    } while( i < 999 );
   
    int h = 0;
   
    do
    {
        suma[ h ] = tablica[ j ] + tablica[ j + 1 ];
        j++;
        h++;
    } while( j < 999 );
   
    cout << "wynik tablicy to: " << suma[ 998 ] << endl;
   
    return 0;
}

tutaj wynik komplilatora:

liczba 986 : 10
liczba 987 : 9
liczba 988 : 4
liczba 989 : 8
liczba 990 : 4
liczba 991 : 4
liczba 992 : 6
liczba 993 : 9
liczba 994 : 5
liczba 995 : 8
liczba 996 : 7
liczba 997 : 9
liczba 998 : 9
wynik tablicy to: 1008

Process returned 0 (0x0)   execution time : 0.918 s
Press any key to continue.

 
P-156975
mateczek
» 2017-01-26 19:22:55
C/C++
int suma = 0;
for( int i = 0; i < 999; i++ ) {
    suma = suma + tablica[ i ];
}
P-156979
ppczosnek
Temat założony przez niniejszego użytkownika
» 2017-01-26 20:10:52
Dziękuję za odpowiedź. Tylko jest mały problem pętle for są w lekcji 21, więc nie mogę ich tutaj użyć. Czy można to inaczej rozwiązać?
P-156985
mateczek
» 2017-01-26 20:32:08
ale z ciebie formalista :P
C/C++
int i = 0;
int suma = 0;
while( i < 999 ) {
    suma = suma + tablica[ i ];
    i++;
}
P-156996
karambaHZP
» 2017-01-26 21:18:07
pętle for są w lekcji 21
Pętla
while() { }
 jest jeszcze dalej ;)
C/C++
int i = 0;
int suma = 0;
do {
    suma = suma + tablica[ i ];
    i++;
} while( i < 999 );
P-157002
ppczosnek
Temat założony przez niniejszego użytkownika
» 2017-01-27 14:07:04
Niestety rozwiązanie karamby się nie sprawdza. nadal suma 999


liczba 994 : 9
liczba 995 : 4
liczba 996 : 6
liczba 997 : 5
liczba 998 : 4
wynik tablicy to: 999

Process returned 0 (0x0)   execution time : 1.030 s
Press any key to continue.

Sprawdzilem tez rozwiazanie mateczek lecz suma rowna sie 0

liczba 994 : 6
liczba 995 : 6
liczba 996 : 5
liczba 997 : 6
liczba 998 : 5
wynik tablicy to: 0

Process returned 0 (0x0)   execution time : 1.021 s
Press any key to continue.

Macie jakieś pomysły co może być powodem?
P-157022
mateczek
» 2017-01-27 15:21:39
rozwiązanie się sprawdza. Tylko Ty coś nakopałeś gdy je wstawiałeś do swojego kodu.
C/C++
#include<iostream>
#include<cmath>
using namespace std;

int losowanie()
{
    int los;
    los =( rand() % 7 ) + 4;
    return los;
}

int main()
{
    srand( time( NULL ) );
    const int size = 5;
    int tablica[ size ];
    int i = 0;
    do
    {
        tablica[ i ] = losowanie();
        cout << "liczba " << i << " : " << tablica[ i ] << endl;
        i++;
    } while( i < size );
   
    i = 0;
    int suma = 0;
    do
    {
        suma = suma + tablica[ i ];
        i++;
    } while( i < size );
   
    cout << "suma= " << suma << endl;
   
}

oczywiście aby policzyć sumę losowanych liczb wcale nie trzeba tablicy
C/C++
#include<iostream>
#include<cmath>
using namespace std;

int losowanie() {
    return( rand() % 7 ) + 4;
}

int main()
{
    srand( time( NULL ) );
    int ileLiczb = 5;
    int suma = 0;
    do {
        int temp = losowanie();
        cout << temp << " ";
        suma += temp; //suma=suma+temp;
    } while( --ileLiczb ); //wykonuj puki nie zero
   
    cout << "\nsuma wylosowanych wynosi " << suma << endl;
}
P-157023
ppczosnek
Temat założony przez niniejszego użytkownika
» 2017-01-27 16:52:34
Okej już wiem co było nie tak.
Po pierwszej pętli do... while... nie zerowałem wartości i - chyba dlatego suma zawsze była koło jednego tysiąca dla 999 wartości.
Dzięki za zainteresowanie się tematem i pomoc.

Pozdrawiam!
P-157026
« 1 »
  Strona 1 z 1