Pobieranie unikalnych liczb od użytkownika.
Ostatnio zmodyfikowano 2020-04-16 00:33
randrie Temat założony przez niniejszego użytkownika |
Pobieranie unikalnych liczb od użytkownika. » 2020-04-15 01:27:02 Witam, na wstępie chciałbym nie przywitać i oczywiście podkreślić ze jestem bardzo początkujący w programowaniu. Napisałem prosty program który pobiera unikalne liczby od użytkownika i zapisuje je do tablicy tj. jeżeli użytkownik chce podać kolejny raz taka sama liczba to program prosi o inna. Np. program pobiera 3 liczby od użytkownika i jeżeli w pobraniu liczba sie powtórzy użytkownik musi podać inna. Wszystko jest pięknie i ładnie jednak tablica domyślnie wypełniona jest zerami i w momencie jeżeli użytkownik poda jako pierwsza liczba 0 program wywala info ze taka liczba juz jest i trzeba podać inna. Skończyły mi nie pomysły jak to ominąć. Kod: #include <iostream>
using namespace std;
int main() { bool czyBlad; bool czyJest; int i = 0; int pobrane[ 3 ]; int ilePob = 3; int pobieranaLiczba; do { cout << "Podaj " << i + 1 << " liczbe: "; cin >> pobieranaLiczba; czyBlad = cin.fail(); czyJest = 1; cin.clear(); cin.ignore( numeric_limits < streamsize >::max(), '\n' ); if( czyBlad == 1 ) cout << "Wpisana liczba jest nieprawidłowa! "; else { czyJest = 1; int licznik = 0; do { if( pobieranaLiczba == pobrane[ licznik ] ) { czyJest = 0; cout << "Już podałeś taka liczbę! "; } licznik++; } while( licznik < i ); if( czyJest == 1 ) { pobrane[ i ] = pobieranaLiczba; i++; } } } while( i < ilePob ); return 0; }
Edit: Przepraszam, wyciąłem kawełek kodu z funkcji i nie sprawdziłem. Teraz już się kompiluje. |
|
pekfos |
» 2020-04-15 16:09:47 tablica domyślnie wypełniona jest zerami |
Nie ma domyślnej wartości. Niezainicjalizowana tablica zawiera przypadkowe dane. Użyj pętli while. do..while zawsze wykonuje co najmniej jeden przebieg, a tu powinno być zero razy przy sprawdzaniu pierwszej liczby, jeden raz dla drugiej, itd. |
|
randrie Temat założony przez niniejszego użytkownika |
» 2020-04-16 00:33:53 Działa 100-krotne dzięki. Wiedziałem, że przy pierwszej pętli tablica nie powinna być sprawdzana ale za bardzo kombinowałem. |
|
« 1 » |