CCbolt Temat założony przez niniejszego użytkownika |
Lekcja 2.21 » 2016-08-13 00:02:29 Po dłuższej przerwie wróciłem do pisania i utknąłem, program się wysypuje i nie pozwala wpisać więcej niż jedną liczbę. Wzoruje się na 2 tematach, samemu nie umiem sklecić kodu ( nie ma jeszcze tego olśnienia ) http://cpp0x.pl/forum/temat/?id=23334 http://cpp0x.pl/forum/temat/?id=20248 #include <iostream> #include <cstdlib> #include <ctime>
using namespace std;
bool czyBylaWylosowana( int iLiczba, int tab[], int ile ) { if( ile <= 0 ) return false; int i = 0; do { if( tab[ i++ ] == iLiczba ) return true; } while( i < ile ); return false; }
void podjaliczbe( int tab2[] ) { int i; int liczba; cout << "Podaj 3 liczby: " << endl; do { cout << "Liczba: "; cin >> liczba; tab2[ i++ ] = liczba; } while( i < 3 ); }
int losowanie() { int liczba = rand() % 3; return liczba; } int main() { srand( time( NULL ) ); int tab2[ 3 ]; int tab[ 2 ]; int los; int i = 0; podjaliczbe( tab2 ); }
|
|
Gibas11 |
» 2016-08-13 00:09:30 void podjaliczbe( int tab2[] ) { int i; int liczba; cout << "Podaj 3 liczby: " << endl; do { cout << "Liczba: "; cin >> liczba; tab2[ i++ ] = liczba; } while( i < 3 ); }
|
|
CCbolt Temat założony przez niniejszego użytkownika |
» 2016-08-13 00:37:50 Dzięki zapomniałem o zerowaniu. |
|
CCbolt Temat założony przez niniejszego użytkownika |
» 2016-08-13 10:32:36 Trochę się pogubiłem sypie mi błędem "error: invalid conversion from 'int*' to 'int' [-fpermissive]|" #include <iostream> #include <cstdlib> #include <ctime>
using namespace std;
bool czyBylaWylosowana( int iLiczba, int tab[], int ile ) { if( ile <= 0 ) return false; int i = 0; do { if( tab[ i++ ] == iLiczba ) return true; } while( i < ile ); return false; }
void podjaliczbe( int tab2[] ) { int i = 0; int liczba = 0; cout << "Podaj 3 liczby: " << endl; do { cout << "Liczba: "; cin >> liczba; tab2[ i++ ] = liczba; } while( i < 3 ); }
int losowanie() { int liczba = rand() % 3; return liczba; } int main() { srand( time( NULL ) ); int tab2[ 3 ]; int tab[ 2 ]; int los = 0; int i = 0; podjaliczbe( tab2 ); i = 0; do { los = losowanie(); if( czyBylaWylosowana( tab2, tab, los ) ) { tab[ i++ ] = tab[ los ]; } } while( i < 2 ); return 0; } [ cpp ] |
|
Gibas11 |
» 2016-08-13 10:35:29 Chyba takie coś. if( czyBylaWylosowana( tab2[ i ], tab, los ) ) //Edit: Jednak nie, masz za dużo błędów w main. int main() { srand( time( NULL ) ); int tab2[ 3 ]; int tab[ 2 ] = { - 1, - 1 }; int los = 0; podjaliczbe( tab2 ); for( int i = 0; i < 2; i++ ) { do { los = losowanie(); } while( czyBylaWylosowana( los, tab, 2 ) ); tab[ i ] = los; std::cout << tab2[ tab[ i ] ] << std::endl; } return 0; } Reszta kodu powinna być ok, bo teraz działa. |
|
CCbolt Temat założony przez niniejszego użytkownika |
» 2016-08-13 12:00:50 Wieczorem posiedzę przy tym, pętli for specjalnie jeszcze nie ruszam jeszcze niedługo zacznę, dzięki za odpowiedź. //Edit int tab[ 2 ] = { - 1, - 1 };
|
|
Gibas11 |
» 2016-08-13 13:02:06 Indeksy zawsze są większe lub równe zeru, dzięki -1 mam pewność że 0 w tablicy będzie wylosowanym indeksem a nie domyślną wartością komórki. |
|
CCbolt Temat założony przez niniejszego użytkownika |
» 2016-08-14 17:26:37 Dalej grzebie się w kodzie, próbowałem przerzucić kod na do while bez pętli for i mi nie idzie. Możecie mi to poprawić i rozpisać co za co odpowiada, niby wiem ale jak widać błędy tworze i mieszam czasem argumenty. #include <iostream> #include <cstdlib> #include <ctime>
using namespace std;
bool czyBylaWylosowana( int iLiczba, int tab[], int ile ) { if( ile <= 0 ) return false; int i = 0; do { if( tab[ i++ ] == iLiczba ) return true; } while( i < ile ); return false; }
void podjaliczbe( int tab2[] ) { int i = 0; int liczba = 0; cout << "Podaj 3 liczby: " << endl; do { cout << "Liczba: "; cin >> liczba; tab2[ i++ ] = liczba; } while( i < 3 ); }
int losowanie() { int liczba = rand() % 3; return liczba; } int main() { srand( time( NULL ) ); int tab2[ 3 ]; int tab[ 2 ] = { - 1, - 1 }; int los = 0; int i = 0; podjaliczbe( tab2 ); i = 0; do { los = losowanie(); if( czyBylaWylosowana( los, tab2, 2 ) ) { tab[ i++ ] = tab[ los ]; cout << tab2[ tab[ i ] ] << endl; } } while( i < 2 ); return 0; }
|
|
« 1 » 2 3 4 |