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

[Lekcja 21] Prośba o sprawdzenie zadania.

Ostatnio zmodyfikowano 2011-09-19 22:56
Autor Wiadomość
Houston
Temat założony przez niniejszego użytkownika
[Lekcja 21] Prośba o sprawdzenie zadania.
» 2011-09-19 18:31:01
Witam. Program niby działa ale końcówkę napisałem zupełnie bez przekonania. Proszę więc o jej sprawdzenie.
Zaczynam czytać o pętli for i widzę, że znacznie uprościłaby mój dosyć długi kod...

C/C++
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;

void wczytajLiczbe( int t[], int ile ) // Funkcja wczytujaco - weryfikujaca ( poprawnosc wprowadzanych danych ).
{
    int i = 0;
    int a;
   
    do
    {
        cout << "Podaj liczbe nr. " << i + 1 << " :";
        cin >> a;
       
        if( cin.good() == true )
        {
            t[ i ] = a;
            i++;
        }
       
        if( cin.fail() == true )
        {
            cout << "Podana liczba jest niepoprawna!";
        }
       
        cin.clear();
        cin.sync();
    } while( i < ile ); // 'ile' jest rownowazne z 'wielkoscTablicy'.
   
}

int wylosuj( int t[], int ile ) // Funkcja losuje jedna sposrod liczb wprowadzonych przez uzytkownika.
{
    int a = rand() % ile; // 'ile' jest rownowazne z 'wielkoscTablicy'. Nastepuje losowanie jednej komorki z tablicy.
    int b = t[ a ]; // Zmienna 'b' przyjmuje wartosc wylosowanej komorki.
    return b;
}

bool sprawdzenie( int a, int t[], int ile ) // Funkcja sprawdza czy wylosowana liczba sie nie powtarza. 'a' - 'liczba'; 't[] - tablica[]; 'ile' - 'wielkoscTablicy'.
{
    if( ile == 0 ) // Jeśli jest to pierwsze losowanie to funkcja sprawdzenie() zostaje przerwana.
         return false;
   
    int i = 0;
    do
    {
        if( t[ i ] == a ) // Sprawdzenie drugiego i trzeciego losowania. 'a' to liczba przyporzadkowana poprzedniej komorce
             return true;
       
        i++;
    } while( i < ile );
   
    return false;
}

void wypisz( int t[], int ile ) // Funkcja wypisuje wylosowane liczby na ekranie.
{
    int i = 0;
    cout << "Wylosowane liczby: ";
    do
    {
        cout << t[ i ] << " ";
        i++;
    } while( i < ile - 1 );
   
}

int main()
{
    srand( time( NULL ) );
    int wielkoscTablicy = 3; // Okreslamy wielkosc tablicy - ilosc liczb wprowadzanych przez uzytkownika.
    int tablica[ wielkoscTablicy ]; // Tablica przechowujaca liczby wprowadzone przez uzytkownika.
    wczytajLiczbe( tablica, wielkoscTablicy ); // Funkcja wczytujaca liczby.
    int i = 0;
    int tablica2[ wielkoscTablicy - 1 ]; // Nie jestem pewien czy dobrze.
    do
    {
        int liczba = wylosuj( tablica, wielkoscTablicy ); // Przypisanie zmiennej liczby wylosowanej sposrod liczb wprowadzonych przez uzytkownika.
       
        if( sprawdzenie( liczba, tablica, i ) == false ) // Funkcja sprawdzajaca czy liczba sie nie powtarza.
        {
            tablica2[ i ] = liczba; // Nie jestem pewien czy dobrze.
            i++;
        }
    } while( i <( wielkoscTablicy - 1 ) );
   
    wypisz( tablica, wielkoscTablicy );
   
    return 0;
}

pozdrawiam
P-41181
DejaVu
» 2011-09-19 22:56:30
Jeżeli program Ci działa poprawnie to dobrze :) Jeżeli rozumiałeś to co pisałeś to też dobrze. Każdy to samo może napisać inaczej. Nawet jeżeli znajduje się w kodzie błąd, który po Twoich testach się nie objawił - to nie istotne. Ważne, że rozumiesz co piszesz czego dowodem jest osiągnięcie celu (o ile cel był osiągnięty samodzielnie). Pisząc kolejne programy utrwalisz sobie wiedzę, wpadniesz na lepsze pomysły rozwiązywania różnych problemów i będziesz w stanie czytać ze zrozumieniem kod innych programistów - tam też zobaczysz różne triki i myki, które z pewnością zaczniesz przekładać na swój styl programowania.

Podsumowując: nie wiem czy napisałeś dobrze program ale ważne, że działa Ci poprawnie (a przynajmniej tak Ci się wydaje ;p).
P-41201
« 1 »
  Strona 1 z 1