Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[Rozdział 16 - losowanie RAND] Weryfikacja poprawności + ewentualna optymalizacja

Ostatnio zmodyfikowano 2013-10-12 00:11
Autor Wiadomość
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

C/C++
#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;
   
}
P-93528
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?
P-93529
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?
P-93531
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.

C/C++
int liczba =( rand() % 999 ) + 1;
int zgad = 0;
int licznik = 0;

C/C++
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.
P-93532
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?
P-93533
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.
P-93536
« 1 »
  Strona 1 z 1