[ lekcja 21 ]Problemik z losowanie bez powtórzeń
Ostatnio zmodyfikowano 2013-06-28 15:51
Proleks Temat założony przez niniejszego użytkownika |
[ lekcja 21 ]Problemik z losowanie bez powtórzeń » 2013-06-27 13:12:58 Simaneczko znowu mini problem albo mega chociaż wątpię :p chodzi o to ,że występują mi następujące błędy ; wistu\Pulpit\C++\uczymyreturn1.cpp||In function 'int main()':| wistu\Pulpit\C++\uczymyreturn1.cpp|51|error: invalid conversion from 'int' to 'int*'| wistu\Pulpit\C++\uczymyreturn1.cpp|25|error: too many arguments to function 'bool czybyla(int, int*, int)'| wistu\Pulpit\C++\uczymyreturn1.cpp|51|error: at this point in file| wistu\Pulpit\C++\uczymyreturn1.cpp|44|warning: unused variable 'liczba'| ||=== Build finished: 3 errors, 1 warnings ===|
Dokładnie chodzi o linijki 25, 51 nie wiem dlaczego tak jest ;/ oto kodzik jeszcze nie skończony bo znalazłem ten błąd własnie #include <iostream> #include <cstdlib> #include <ctime> using namespace std;
int wczytujemy( int wczytane[], int a ) { int licznik = 0; cout << "Podaj 3 liczby " << endl; do { cin >> wczytane[ licznik ]; licznik++; } while( licznik < 3 ); return wczytane[ licznik ]; }
int wylosuj_liczby() { return( rand() % 3 ); }
bool czybyla( int ile, int tablica[], int licznik ) { if( licznik <= 0 ) return false; int i = 0; do { if( tablica[ i ] == ile ) i++; } while( i < licznik ); } int main() { srand( time( NULL ) ); int wczytane[ 3 ]; int wylosowane = 0; int liczba = wczytujemy( wczytane, 3 ); int ile = 0; int licznik = 0; do { wylosowane = wczytane[ wylosuj_liczby() ]; if( czybyla( wylosowane, 3, ile, licznik ) ); } while( licznik < 3 ); }
|
|
pekfos |
» 2013-06-27 13:24:06 Funkcja przyjmuje 3 argumenty, a ty pchasz 4. |
|
Proleks Temat założony przez niniejszego użytkownika |
» 2013-06-27 13:56:59 Teraz daje po 3 i błąd jest inny :p wistu\Pulpit\C++\uczymyreturn1.cpp||In function 'int main()':| wistu\Pulpit\C++\uczymyreturn1.cpp|51|error: invalid conversion from 'int' to 'int*'| wistu\Pulpit\C++\uczymyreturn1.cpp|51|error: initializing argument 2 of 'bool czybyla(int, int*, int)'| wistu\Pulpit\C++\uczymyreturn1.cpp|44|warning: unused variable 'liczba'| ||=== Build finished: 2 errors, 1 warnings ===|
#include <iostream> #include <cstdlib> #include <ctime> using namespace std;
int wczytujemy( int wczytane[], int a ) { int licznik = 0; cout << "Podaj 3 liczby " << endl; do { cin >> wczytane[ licznik ]; licznik++; } while( licznik < 3 ); return wczytane[ licznik ]; }
int wylosuj_liczby() { return( rand() % 3 ); }
bool czybyla( int ile, int tablica[], int licznik ) { if( licznik <= 0 ) return false; int i = 0; do { if( tablica[ i ] == ile ) i++; } while( i < licznik ); } int main() { srand( time( NULL ) ); int wczytane[ 3 ]; int wylosowane = 0; int liczba = wczytujemy( wczytane, 3 ); int ile = 0; int licznik = 0; do { wylosowane = wczytane[ wylosuj_liczby() ]; if( czybyla( wylosowane, ile, licznik ) ); } while( licznik < 3 ); }
|
|
pekfos |
» 2013-06-27 14:21:56 Funkcja wymaga tablicy, a ty podajesz liczbę.. |
|
Proleks Temat założony przez niniejszego użytkownika |
» 2013-06-27 14:46:36 Dobra teraz mam problem bo program nie losuje mi liczb tykjo zawsze pisze 2 pierwsze :/ :/ o co teraz kaman nie mam żadnego błędu poważnego w kompilacji tylko to wistu\Pulpit\C++\uczymyreturn1.cpp|45|warning: unused variable 'liczba'|
ale o ile dobrze kumam to program mi mówi ,że jest to nie uzywana zmienna więc to chyba nic nie robi :p Wracając do błedu z losowaniem kod : #include <iostream> #include <cstdlib> #include <ctime> using namespace std;
int wczytujemy( int wczytane[], int a ) { int licznik = 0; cout << "Podaj 3 liczby " << endl; do { cin >> wczytane[ licznik ]; licznik++; } while( licznik < 3 ); return wczytane[ licznik ]; }
int wylosuj_liczby() { return( rand() % 3 ); }
bool czybyla( int ile, int tablica[], int licznik ) { if( licznik <= 0 ) return false; int i = 0; do { if( tablica[ i ] == ile ) i++; return true; } while( i < licznik ); return tablica; } int main() { srand( time( NULL ) ); int wczytane[ 3 ]; int wylosowane = 0; int liczba = wczytujemy( wczytane, 3 ); int ile[ 0 ]; int licznik = 0; do { wylosowane = wczytane[ wylosuj_liczby() ]; if( czybyla( wylosowane, ile, licznik ) ); { cout << ile[ licznik ] << " , "; licznik++; } } while( licznik < 2 ); system( "pause" ); return 0; }
[ / code ] |
|
pekfos |
» 2013-06-27 15:23:31 1. return wczytane[ licznik ]; jest nieprawidłowe, bo wychodzisz poza tablicę. 2. int ile[ 0 ]; też jest nieprawidłowe. 3. Niepotrzebnie tworzysz zmienną liczba i niepotrzebnie zwracasz int z wczytujemy(). 4. Zamiast indeksów, do zmiennej wylosowane przypisujesz wartości z tablicy. To spowoduje później problemy. 5. W czybyla zawsze zwracasz true, jeśli licznik jest dodatni. 6. Warunek w pętli w main() nic nie robi. 7. Pętla w main() wykona się tylko 2 razy, a nie 3. |
|
docentpp |
» 2013-06-27 15:25:36 O rety !!! Co to za kwiatek ??? int ile[ 0 ]; int licznik = 0;
do { wylosowane = wczytane[ wylosuj_liczby() ]; if( czybyla( wylosowane, ile, licznik ) ); { cout << ile[ licznik ] << " , ";
i jeszcze to Problemu nie analizowałem , ale od razu rzuca się w oczy..... |
|
pekfos |
» 2013-06-27 15:27:12 Nie możesz zrobić tablicy o zeru elementach. Zwracasz adres tablicy rzutowany na bool. W tym przypadku jest to zawsze true. |
|
« 1 » 2 3 4 5 6 |