[C++] Rozdział 21 Poziom 2 Błąd w zadaniu domowym.
Ostatnio zmodyfikowano 2016-06-21 18:32
W1ll_3ty Temat założony przez niniejszego użytkownika |
[C++] Rozdział 21 Poziom 2 Błąd w zadaniu domowym. » 2016-06-20 22:00:19 Witam, myślałem nad tym zadanie dość długo. Co chwilę pisałem program od nowa, i gdy w końcu jestem tak blisko pokazuje się tylko jeden błąd: C:\Users\*****\Desktop\Admin\C++\Powtorzenia.cpp||In function 'int main()':| C:\Users\*****\Desktop\Admin\C++\Powtorzenia.cpp|46|error: lvalue required as left operand of assignment| ||=== Build finished: 1 errors, 0 warnings ===|
#include <iostream> #include <cstdlib> #include <ctime> using namespace std; int sprawdz( int tabela[], int ile, int losuj ) { if( ile = 0 ) return false; if( ile > 0 ) { tabela[ ile ] = losuj; return false; } } int losuj() { return( rand() % 1 ) + 0; } int main() { srand( time( NULL ) ); int tabela[ 3 ]; int ile = 0; do { cout << "Podaj liczbe: "; cin >> tabela[ ile ]; ile++; } while( ile < 3 ); int pokaz[ 3 ]; ile = 0; do { pokaz[ ile ] = tabela[ ile ]; ile++; } while( ile < 3 ); int licz[ 2 ]; ile = 0; do { licz[ ile ] = losuj(); ile++; } while( ile < 2 ); ile = 0; do { { licz[ ile ] = losuj(); ile++; } } while( ile < 2 ); ile = 0; do { cout << tabela[ licz[ ile ] ] << endl; ile++; } while( ile < 2 ); return 0; }
Jak mogę to naprawić? |
|
marcolo2307 |
» 2016-06-20 22:05:35 Operator porównania to == , a nie = . Masz to też w innych miejscach. |
|
W1ll_3ty Temat założony przez niniejszego użytkownika |
» 2016-06-20 22:07:15 Ojej! Taki głupi błąd! Dzięki wielkie i pozdrawiam. |
|
W1ll_3ty Temat założony przez niniejszego użytkownika |
» 2016-06-20 22:19:41 Trochę teraz zmodyfikowałem kod, ale bardzo mało i działa ładnie, tylko że wciąż losują się czasami dwie takie same liczby. Co mam zmienić, żeby losowały się dwie inne? #include <iostream> #include <cstdlib> #include <ctime> using namespace std; int sprawdz( int tabela[], int ile, int losuj ) { if( ile == 0 ) return false; int x = 0; do { if( ile > 0 ) { tabela[ ile ] = losuj; x++; } } while( x < ile ); return false; } int losuj() { return( rand() % 2 ) + 0; } int main() { srand( time( NULL ) ); int tabela[ 3 ]; int ile = 0; do { cout << "Podaj liczbe: "; cin >> tabela[ ile ]; ile++; } while( ile < 3 ); int pokaz[ 3 ]; ile = 0; do { pokaz[ ile ] = tabela[ ile ]; ile++; } while( ile < 3 ); int licz[ 2 ]; ile = 0; do { licz[ ile ] = losuj(); ile++; } while( ile < 2 ); ile = 0; do { if( sprawdz( licz, ile, losuj() ) == false ) { licz[ ile ] = losuj(); ile++; } } while( ile < 2 ); ile = 0; do { cout << tabela[ licz[ ile ] ] << endl; ile++; } while( ile < 2 ); return 0; }
|
|
marcolo2307 |
» 2016-06-20 23:18:28 To jest losowanie, więc czasem będą dwie takie same. Możesz dodać warunek i jeśli będą się powtarzać, losować aż do skutku. |
|
Nutella |
» 2016-06-21 18:32:07 Też miałam problem z powtórkami, ale chyba się w końcu udało. Wyślę kod, może komuś pomoże :D #include <iostream> #include <cstdlib> #include <ctime>
using namespace std;
int wczytaj( int t[] ) { cout << "podaj 10 liczb: \n"; int i = 0; do { cin >> t[ i ]; i++; } while( i < 10 ); }
int losuj() { return rand() % 10 + 0; }
bool sprawdz( int indeks, int t[], int ktory ) { if( ktory == 0 ) return false; int i = 0; do { if( indeks == t[ i ] ) return true; else i++; } while( i < 7 ); }
void wyswietl( int t_liczby[], int t_indeksy[] ) { int i = 0; do { cout << t_liczby[ t_indeksy[ i ] ] << endl; i++; } while( i < 7 ); } int main() { srand( time( NULL ) ); int tab[ 10 ]; int wczytane_indeksy[ 7 ]; wczytaj( tab ); int i = 0; do { int indeks = losuj(); if( sprawdz( indeks, wczytane_indeksy, i ) == false ) { wczytane_indeksy[ i ] = indeks; i++; } } while( i < 7 ); cout << "wylsowane liczby bez powtorek: \n"; wyswietl( tab, wczytane_indeksy ); return 0; }
|
|
« 1 » |