Rozdział 21 zadanie
Ostatnio zmodyfikowano 2016-10-04 20:11
Nesquik Temat założony przez niniejszego użytkownika |
Rozdział 21 zadanie » 2016-10-03 22:13:35 "1. Napisz program, który wczyta 3 liczby podane przez użytkownika do tablicy, a następnie wylosuje 2 z nich bez powtórzeń. Wynik wypisz na ekran. Postaraj się napisać ten program w oparciu o funkcje. 2. Zmodyfikuj program z pierwszego zadania tak, aby użytkownik musiał podać 10 liczb, a 8 z nich będzie losowanych bez powtórzeń. Sprawdź czy wyniki są poprawne." Program umiera po tym jak wpisze 10 liczb, po prostu nic zatrzymuje sie i nic sie nie dzieje. #include <iostream> #include <cstdlib> #include <ctime>
using namespace std;
int wylosuj() { return(( rand() % 3 ) + 0 ); }
bool bylaczynie( int losowana, int wylosowana[], int ile ) { int licznik = 0; if( ile <= 0 ) { return false; } do { if( wylosowana[ licznik ] == losowana ) return true; licznik++; } while( licznik < ile ); return false; }
int wpisz( int iLiczba[] ) { int licznik = 0; do { cout << " Wpisz liczbe: " << endl; cin >> iLiczba[ licznik ]; licznik++; } while( licznik < 10 ); }
int main() { srand( time( 0 ) ); int liczba[ 10 ]; int wylosowana[ 8 ]; int wylosowanych = 0; wpisz( liczba ); do { int losowana = wylosuj(); if( bylaczynie( losowana, wylosowana, wylosowanych ) == false ) { wylosowana[ wylosowanych ] = losowana; wylosowanych++; } } while( wylosowanych < 8 ); wylosowanych = 0; do { cout << "Wylosowana liczba:" << liczba[ wylosowana[ wylosowanych ] ] << endl; wylosowanych++; } while( wylosowanych < 8 ); }
|
|
carlosmay |
» 2016-10-03 23:54:29 Program umiera po tym jak wpisze 10 liczb, po prostu nic zatrzymuje sie i nic sie nie dzieje. |
Dzieje się. Program ma wylosować bez powtórzeń 8 z 10 liczby. Tymczasem po wylosowaniu trzech kończą się możliwości niepowtarzalnych liczb. Program zapętla. Po prostu zmieniono wielkość tablic, ale nie zmieniono losowanych wartości. To tak pobieżnie. Nie sprawdzałem całości. |
|
Nesquik Temat założony przez niniejszego użytkownika |
» 2016-10-04 20:11:02 Dzieki jak zmienilem przedzial losowanych to podzialalo, i jeszcze dodałem ze nie mozna wpisac 2 takich samych liczb :) #include <iostream> #include <cstdlib> #include <ctime>
using namespace std;
int wylosuj() { return(( rand() % 8 ) + 0 ); }
bool bylaczynie( int losowana, int wylosowana[], int ile ) { int licznik = 0; if( ile <= 0 ) { return false; } do { if( wylosowana[ licznik ] == losowana ) return true; licznik++; } while( licznik < ile ); return false; }
void wpisz( int iLiczba[] ) { int licznik = 0; int liczbaspr; cout << "WPISZ 10 LICZB" << endl; do { cin >> liczbaspr; if( bylaczynie( liczbaspr, iLiczba, licznik ) == false ) { iLiczba[ licznik ] = liczbaspr; licznik++; } else cout << "NIE POWTARZAJ LICZB" << endl; } while( licznik < 10 ); }
int main() { srand( time( 0 ) ); const int rozm_tab1 = 10; const int rozm_tab2 = 8; int liczba[ rozm_tab1 ]; int wylosowana[ rozm_tab2 ]; int wylosowanych = 0; wpisz( liczba ); do { int losowana = wylosuj(); if( bylaczynie( losowana, wylosowana, wylosowanych ) == false ) { wylosowana[ wylosowanych ] = losowana; wylosowanych++; } } while( wylosowanych < 8 ); wylosowanych = 0; do { cout << "Wylosowana liczba:" << liczba[ wylosowana[ wylosowanych ] ] << endl; wylosowanych++; } while( wylosowanych < 8 ); } |
|
« 1 » |