Sortowanie Liczb
Ostatnio zmodyfikowano 2014-02-16 21:21
strus123 Temat założony przez niniejszego użytkownika |
Sortowanie Liczb » 2014-02-15 23:36:25 Witam, mam problem z jednym "if" gdzie jest sprawdzana poprawna ilosc wprowadzonych liczb jaka wczesniej zadeklarowal uzytkownik. otóż można ominac ten warunek wpisujac pierwsza liczbe taka sama jak rozmiar_tabeli lub wywala blad gdy pierwsza liczba jest wieksza od rozmiar_tabeli :/ Narazie zrobilem taka prowizorke zeby bylo widoczne jak program pracuje. #include <iostream> #include <algorithm> #include <functional>
using namespace std;
int main() { cout << "=================================================================" << endl; cout << "\t\t SORTOWNIK" << endl; cout << "\t\t\t\t by Hydr0" << endl; cout << "=================================================================" << endl; int rozmiar_tablicy, wartosc; cout << "\n Wprowadz ilosc liczb calkowitych, ktore nalezy wczytac: " << endl; cin >> rozmiar_tablicy; if( rozmiar_tablicy > 0 && rozmiar_tablicy < 10 ) { int * p = new int[ rozmiar_tablicy ]; cout << "Wpisz Liczby [NIE ZAPOMNIJ ODDZIELIC JE SPACJA] " << endl; cout << "\t :#: "; { for( int i = 0; i < rozmiar_tablicy; i++ ) { cin >> wartosc; p[ i ] = wartosc; } if( * p > rozmiar_tablicy ) { cout << "Za duzo! Limit Liczb to " << rozmiar_tablicy << " !" << endl; return 0; } sort( p, p + rozmiar_tablicy ); cout << endl; cout << "\t\t" << "Posortowane rosnaco: " << endl; for( int i = 0; i < rozmiar_tablicy; i++ ) { cout << "\t # " << p[ i ] << " #" << endl; } if( rozmiar_tablicy < 0 && rozmiar_tablicy > 10 ) { cout << "\t Wprowadziles za duzo liczb" << endl; cout << "\t Ilosc liczb musi byc wieksza od 0 i mniejsza od 51" << endl; } } } return 0; }
dzieki za pomoc :) |
|
killjoy |
» 2014-02-15 23:44:51 W czym problem? Nadmiar liczb zostanie zignorowany, nie spowoduje to żadnego błędu, czy wysypania się programu. |
|
strus123 Temat założony przez niniejszego użytkownika |
» 2014-02-15 23:52:05 nie sprecyzowałem problemu. otóż ma zawsze wywalać komunikat ze "za duzo...." jeśli użytkownik rzeczywiście wprowadzi za dużo bo teraz można go ominąć tak jak już wyżej dopisałem, podając pierwszą liczbę do sortowania taką samą jak liczba rozmiar_tabeli lub wywala błąd jeśli pierwsza liczba będzie większa od liczby (nie rozmiaru) "rozmiar_tabeli" mimo że ilość się zgadza... |
|
killjoy |
» 2014-02-15 23:59:31 Pewnie że wywala Ci błąd, gdy pierwsza liczba jest większa niż rozmiar tabeli bo to: if( * p > rozmiar_tablicy ) { cout << "Za duzo! Limit Liczb to " << rozmiar_tablicy << " !" << endl; return 0; }
Jest równoznaczne z tym: if( p[ 0 ] > rozmiar_tablicy ) { cout << "Za duzo! Limit Liczb to " << rozmiar_tablicy << " !" << endl; return 0; }
W ten sposób, * p Odwołujesz się do wartości pierwszego elementu, a nie do rozmiaru tabeli. (o ile dobrze rozumiem o co Ci chodzi) |
|
strus123 Temat założony przez niniejszego użytkownika |
» 2014-02-16 00:07:23 więc jaki warunek tam dać żeby wyłapywał to dobrze ? bo już zgłupiałem... |
|
alixir |
» 2014-02-16 21:21:35 Na obecnym etapie nie możliwe jest wprowadzenie więcej liczb niż się zadeklarowało. Dba o to pętla for, więc z tego co ja rozumiem to ty chciałbyś wiedzieć czy bufor jest już pusty. W twoim przypadku warunek mógłbyś zapisać tak if( getchar() != '\n' ) Jeśli ostatnim znakiem nie jest znak nowej linii to prawdopodobnie użytkownik podał więcej liczb. |
|
« 1 » |