Unlimited Temat założony przez niniejszego użytkownika |
Zmienna nie zwiększa się » 2012-05-10 23:19:48 Pewnie pomyślicie banalny problem ale ja już nie rozumiem tego. Powinno działać przecież a tu lipa. Zmienna n nie zwiększa się. Taka błachostka a tak mnie przyćmiło. #include <iostream> #include <windows.h> #include <cstdlib> #include <ctime> using namespace std;
void losuj( int tablica[], int & n ) { tablica[ n ] =( rand() % 98 ) + 1; n++; }
void dodaj( int tablica[], int & n ) { cout << "\n\t Podaj wartosc: "; cin >> tablica[ n ]; n++; }
void szukaj( int tablica[], int & n ) { int c; cout << "\n\t Podaj liczbe do usuniecia: "; cin >> c; for( int x = 0; x <= n; x++ ) { if( tablica[ x ] == c ) { for( x; x < n; x++ ) { if( x != n - 1 ) { tablica[ x ] = tablica[ x + 1 ]; } } n--; } } }
void pokaz( int tablica[], int n ) { cout << "\n\t "; for( int x = 0; x <= n; x++ ) { cout << tablica[ x ] << ", "; } cout << "\n\n"; system( "pause" ); }
void wspak( int tablica[], int n ) { cout << "\n\t "; for( int x = n; x >= 0; x-- ) { cout << tablica[ x ] << ", "; } cout << "\n\n"; system( "pause" ); }
int main() { int n = 0; char wybor; int wybor2; int tablica[ 100 ]; srand( time( NULL ) ); do { system( "cls" ); cout << "\n\n\t ------------------------------------------------------"; cout << "\n\t | Dodaj: d | Usun ostatni: o | Usun wybrany: u |"; cout << "\n\t ------------------------------------------------------"; cout << "\n\t | Pokaz: p | Pokaz wspak: w | KONIEC: q |"; cout << "\n\t ------------------------------------------------------"; cout << "\n\n\t Twoj wybor to: "; cin >> wybor; switch( wybor ) { case 'd': { cout << "\n\t [1] Wylosuj automatycznie"; cout << "\n\t [2] Podaj sam"; cout << "\n\n\t Twoj wybor: "; cin >> wybor2; switch( wybor2 ) { case 1: { losuj( tablica, n ); break; } case 2: { dodaj( tablica, n ); break; } } } case 'o': { n--; break; } case 'u': { szukaj( tablica, n ); break; } case 'p': { pokaz( tablica, n ); break; } case 'w': { wspak( tablica, n ); break; } } } while( wybor != 'q' ); return 0; } |
|
malan |
» 2012-05-11 00:04:26 void szukaj( int tablica[], int & n ) { int c; cout << "\n\t Podaj liczbe do usuniecia: "; cin >> c; for( int x = 0; x <= n; x++ ) { if( tablica[ x ] == c ) { for( x; x < n; x++ ) { if( x != n - 1 ) { tablica[ x ] = tablica[ x + 1 ]; } } n--; } } } |
|
Unlimited Temat założony przez niniejszego użytkownika |
» 2012-05-11 00:05:38 To jest akurat dobrze bo bez tej funkcji też nie działa.
Jak dla mnie to nie ma co w tym programie być do spieprzenia więc to może wina kompilatora? Coś mu się stało? Może spróbujcie u siebie skompilować dodać 2 liczby i spróbować je wyświetlić. Jeśli Wam wyświetli 2 to wina mojego kompilatora jeśli 1 to znaczy że jednak błąd. |
|
malan |
» 2012-05-11 00:11:39 Faktycznie, źle spojrzałem - to jest dobrze :P Ogólnie to wszędzie zaczynasz wypisywać albo do x <= n lub od x = n . Pamiętaj, że tablice numeruje sie od zera, także jeżeli tablica ma 3 elementy to ostatni element to: tablica[ 2 ] :) |
|
Unlimited Temat założony przez niniejszego użytkownika |
» 2012-05-11 00:13:34 Tak wiem dlatego na początku n = 0; i tu nie ma co zepsuć a jednak nie działa. Może wina kompilatora... |
|
malan |
» 2012-05-11 00:35:28 Użyj debuggera - on prawdę Ci powie!!! Mi powiedział i powiem Ci, że błąd wynika z... roztrzepania :P Jeżeli znajdziesz ten błąd i na ekranie zobaczysz dziwne liczby, wyglądające jak z kosmosu to przeczytaj sobie mój powyższy post. |
|
ison |
» 2012-05-11 00:46:17 brakuje 1 breaka switch( wybor ) { case 'd': { cout << "\n\t [1] Wylosuj automatycznie"; cout << "\n\t [2] Podaj sam"; cout << "\n\n\t Twoj wybor: "; cin >> wybor2; switch( wybor2 ) { case 1: { losuj( tablica, n ); break; } case 2: { dodaj( tablica, n ); break; } } } case 'o': { n--; break; }
i w funkcji pokaz powinno byc < zamiast <= w wspak też od złego indeksu lecisz |
|
malan |
» 2012-05-11 00:48:24 @ison: On to miał znaleźć, czy Ty...? :] |
|
« 1 » 2 |