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

[C++] Przypisywanie liczb do taboicy

Ostatnio zmodyfikowano 2012-04-19 23:11
Autor Wiadomość
Trust
Temat założony przez niniejszego użytkownika
[C++] Przypisywanie liczb do taboicy
» 2012-04-19 21:26:51
Dlaczego gdy wykona się petla do ..while i wypisze mi pierwszą liczbę np. 8, następnie chcę, aby była wyświetlona z tablicy o indeksie 1 no i tu problem wyświatlaja się jakieś śmieci. Ja chyba w ogóle nie przypisuje wylosowanej liczby do tab[1] ...?

C/C++
#include <iostream>
#include <conio.h>
#include <stdlib.h>
#include <ctime>


using namespace std;


int main()
{
    srand( time( NULL ) );
   
    int licznik = 0, tab[ 15 ], a;
   
   
   
    do {
        int a =( rand() % 7 ) + 4;
        cout << a << " ";
        tab[ licznik ];
        licznik++;
       
    } while( licznik != 999 );
   
    cout << endl;
    cout << " Tab 1 rowna sie: " << tab[ 0 ];
   
   
    getch();
}
P-54841
SeaMonster131
» 2012-04-19 21:37:53
Tak, nie przypisujesz:
C/C++
int a =( rand() % 7 ) + 4;
cout << a << " ";
tab[ licznik ];
licznik++;

A poza tym, tablica ma 15 elementów, a nie 999, więc wychodzisz też poza zakres tablicy.
P-54842
Trust
Temat założony przez niniejszego użytkownika
» 2012-04-19 21:46:04
Więc moja tablica ma indeks o wartości 998,bo indeks-1.
I teraz faktycznie moja tablica przyjmuje wartość zerową.

Przypisywanie w ten sposób nie działa, ponieważ dalej jest zero.

C/C++
int a =( rand() % 7 ) + 4;
cout << a << " ";
a = tab[ licznik ];
licznik++;
Więc jak to przypisać ?
P-54843
SeaMonster131
» 2012-04-19 21:47:30
a = tab[ licznik ];
ponieważ zmiennej a nadajesz wartość komórki w tablicy, a Ty chcesz to raczej zrobić odwrotnie? :)
P-54844
Trust
Temat założony przez niniejszego użytkownika
» 2012-04-19 21:52:40
C/C++
int a =( rand() % 7 ) + 4;
cout << a << " ";
tab[ licznik ] = a;
licznik++;

O to chodziło :)  Teraz działa.

Wielkie dzięki !!! :)
P-54845
Trust
Temat założony przez niniejszego użytkownika
» 2012-04-19 22:29:27
Dlaczego funkcja Losowanie nie działa poprawnie ? Teraz tablica 1 równa się 0...

C/C++
#include <iostream>
#include <conio.h>
#include <stdlib.h>
#include <ctime>


using namespace std;

int Losowanie()
{
    int licznik = 0, a;
    int tab[ 998 ];
    do {
        int a =( rand() % 7 ) + 4;
        cout << a << " ";
        tab[ licznik ] = a;
        licznik++;
       
    } while( licznik != 999 );
   
    return( tab[ licznik ] );
}

int main()
{
    int tab[ 998 ]; int licznik = 0;
    srand( time( NULL ) );
   
   
   
    int los = Losowanie();
   
   
   
    cout << endl;
    cout << " Tab 1 rowna sie: " << tab[ 1 ];
   
   
    getch();
}
P-54855
Admixior
» 2012-04-19 22:36:37
Po uno int tab[ 998 ]; popraw na int tab[ 999 ];  bo tylu elementów używasz.
Po drugie "licznik" po wyjściu z pętli będzie zawierał liczbę "999" a ani taki element nie istnieje bo musiałoby być int tab[ 1000 ];
A tym bardziej do niego nic nie przypisujesz (więc ą tam śmieci) return tab[ licznik-1 ]; zwraca ostatni element.
P-54856
xevuel
» 2012-04-19 22:38:19
Ponieważ tablica użyta w funkcji Losowanie() nie jest tą samą tablicą co w funkcji main().

Poczytaj o przekazywaniu tablic do funkcji: » Kurs C++ » Poziom 2Przekazywanie tablic jednowymiarowych do funkcji lekcja. A w zrozumieniu tego, co wcześniej napisałem, powinno ci pomóc to: » Kurs C++ » Poziom 3Przekazywanie argumentów funkcji przez referencję lekcja.
P-54857
« 1 » 2
  Strona 1 z 2 Następna strona