[Rozdział 16 - losowanie RAND] Weryfikacja poprawności + ewentualna optymalizacja
Ostatnio zmodyfikowano 2013-10-12 00:11
lledview Temat założony przez niniejszego użytkownika |
[Rozdział 16 - losowanie RAND] Weryfikacja poprawności + ewentualna optymalizacja » 2013-10-11 22:28:35 Cześć, czy ktoś mógłby zerknąć na mój kod i ocenić czy jest poprawny, ewentualnie jak można go skrócić/zoptymalizować? Dzięki #include <iostream> #include <cstdlib> #include <ctime>
using namespace std;
int main() { srand( time( NULL ) ); int liczba =( rand() % 999 ) + 1; int zgad = 0; int licznik = 0; cout << liczba << "\n\n\n\n\n"; do { cin.clear(); cin.sync(); cout << "Zgadnij liczbe - podaj swoja propozycje\n"; cin >> zgad; if( cin.good() ) { if( zgad > liczba ) { cout << "Podales za duza liczbe\n"; } else if( zgad < liczba ) { cout << "Podales za mala liczbe\n"; } } else if( !cin.good() ) { cout << "Nie podales liczby - mozesz podac tylko liczbe\n"; } licznik++; } while( zgad != liczba ); cout << "Brawo, you win!\n Trafiales: " << licznik << " razy"; return 0; }
|
|
akwes |
» 2013-10-11 22:37:10 Spróbuj sam to ocenić.
Program jest poprawny wtedy kiedy zwraca poprawne wyniki. Zwraca? :) Przetestuj skrajne i szczególne przypadki, oraz losowe wartości (im bardziej losowe tym lepiej) oraz jakieś śmieci.
Program należy optymalizować wtedy, kiedy jest taka potrzeba. Czy program wykonuje się za wolno? :) Czy posiada za dużą złożoność? Czy rozwiązuje problem w znośnym dla użytkownika czasie? |
|
lledview Temat założony przez niniejszego użytkownika |
» 2013-10-11 22:52:15 Chodzi mi bardziej o skrócenie kodu, ciekawy jestem jak można byłoby to prościej zapisać/czy da się tak? |
|
akwes |
» 2013-10-11 23:00:26 No ale co chcesz osiągnąć poprzez skrócenie kodu? Kod ma być jasny i czytelny, a nie jak najkrótszy ;) Wielu programistów stara się zmieścić kod w jak najmniejszej liczbie linii kodu ale to naprawdę nie wpływa dobrze na kod. Kod pisany jest raz a czytany wiele razy. int liczba =( rand() % 999 ) + 1; int zgad = 0; int licznik = 0;
int liczba =( rand() % 999 ) + 1, zgad = 0, licznik = 0;
Który zapis jest dla Ciebie przyjemniejszy? Krótszy czy czytelniejszy? W tak krótkim programie nie ma co się bić o każdą linijkę kodu, bo nic to nie zmieni. Ważne, aby działał poprawnie. // Mam nadzieje, że nie pomyślisz sobie, że wodzę Cię za nos bo tak nie jest :P Ważne, żeby program był czytelny i zwracał dobre wyniki. |
|
lledview Temat założony przez niniejszego użytkownika |
» 2013-10-11 23:08:28 Z pewnością masz rację, ale zdaje mi się że nauka od podstaw dobrych nawyków jest najlepsza ;) Dobra dzięki za pomoc, może usunę ten wątek, albo fragmenty kodu żeby nie zostawiać rozwiązań dla innych użytkowników? |
|
akwes |
» 2013-10-12 00:11:34 W książkach dobre nawyki są sprowadzane do idiomów i przesyłanie argumentów przez stałe referencje (tam gdzie ma to sens) :P Możesz pogóglować "c++ idioms", ale to może lepiej po kursie.
Temat niech zostanie jaki jest :P Każdy temat jest wartościowy jak i każda rozmowa o programowaniu. Być może ktoś będzie miał podobne pytanie jak Ty i wtedy przyda mu się ten wątek. |
|
« 1 » |