Rozdział 22. Problem z zadaniem 2.
Ostatnio zmodyfikowano 2013-06-28 20:05
Skuty Temat założony przez niniejszego użytkownika |
Rozdział 22. Problem z zadaniem 2. » 2013-06-28 19:28:31 Napisz program, który za pomocą pętli for wypełni 20 elementową tablicę następującym ciągiem liczb: {1, 6, 11, ... , (1 + n*5)}. Zawartość wypełnionej tablicy wypisz na ekran. Otóż wszystko ładnie działa ale na ostatniej zmiennej tablicy zamiast liczby 101 daje 96. Czemu tak się dzieje? #include <iostream> using namespace std; int nadawanie( int tab[], int liczbaWyp ) { if( liczbaWyp == 0 ) return 1; int a; if( liczbaWyp > 0 ) a = tab[ --liczbaWyp ] += 5; return a; }
int wypisz( int tab[], int liczbaWyp ) { for( int wypelnienie = 0; wypelnienie < liczbaWyp; wypelnienie++ ) cout << tab[ wypelnienie ] << " "; }
int main() { int liczby[ 20 ]; int bufor; for( int wypelnienie = 0; wypelnienie < 20; wypelnienie++ ) { bufor = nadawanie( liczby, wypelnienie ); liczby[ wypelnienie ] = bufor; } wypisz( liczby, 20 ); return 0; }
|
|
pekfos |
» 2013-06-28 19:33:17 Przekombinowałeś z tym nadawanie(). Masz n, a w ten dziwny sposób usiłujesz obliczyć 1 + n*5. a = tab[ --liczbaWyp ] += 5;
Zamiast + masz +=. |
|
KubusiastyKuba |
» 2013-06-28 19:37:39 w for w main jesli ustawisz "wypelnienie < 21" to dziala tak jak chciales nie wiem czemu ,nie chce mi sie myslec :P |
|
pekfos |
» 2013-06-28 19:39:40 jesli ustawisz "wypelnienie < 21" to dziala tak jak chciales |
;) |
|
KubusiastyKuba |
» 2013-06-28 19:41:58 a spróbowałeś ? nie wiem czemu tak sie dzieje ale wtedy dziala :P |
|
pekfos |
» 2013-06-28 19:45:30 To UB, ale przez pomylony operator prawie działa. Prawie, bo ciąg zaczyna się od 6, a nie od 1. |
|
KubusiastyKuba |
» 2013-06-28 19:47:41 tego nie zauważylem :P |
|
Skuty Temat założony przez niniejszego użytkownika |
» 2013-06-28 20:05:27 Dzięki Pekfos - muszę odpocząć chwilkę bo umysł zmęczony i nie wpadłem na to :D Działający kod: #include <iostream> using namespace std; int nadawanie( int liczbaWyp ) { int a = 1 + liczbaWyp * 5; return a; }
int wypisz( int tab[], int liczbaWyp ) { for( int wypelnienie = 0; wypelnienie < liczbaWyp; wypelnienie++ ) cout << tab[ wypelnienie ] << " "; }
int main() { int liczby[ 20 ]; int bufor; for( int wypelnienie = 0; wypelnienie < 20; wypelnienie++ ) { bufor = nadawanie( wypelnienie ); liczby[ wypelnienie ] = bufor; } wypisz( liczby, 20 ); return 0; }
|
|
« 1 » |