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

Poziom 2 Pseudolosowe liczby całkowite (praca domowa)

Ostatnio zmodyfikowano 2013-06-04 00:12
Autor Wiadomość
pekfos
» 2013-06-02 15:17:48
nieraz moze byc przydatne na upartego uzytkownika, zeby nie pisac kodow w kolko..
Od tego są pętle.
P-84657
ferdek_kiepski
» 2013-06-02 15:18:40
P-84658
usmiech
» 2013-06-02 15:31:36
<< removed >>
P-84662
RazzorFlame
» 2013-06-02 18:30:57
Ja się wypowiem o tzw. "goto". Prawda jest taka:

+ Łatwy skok z wybranej pozycji

- Właściwie żadna czytelność kodu
  Przykład:
  "goto"
C/C++
int iloscWykonan = 5;
int counter = 0;

wypisz:
cout << "Blablabla" << endl;
counter++;
if( counter < iloscWykonan ) goto wypisz;

  Pętla "for"
C/C++
for( int counter = 0; counter < 5; counter++ )
     cout << "Blablabla" << endl;

Z podanego przykładu wynika jeszcze:
- Dłuższy kod
- Prawie żadne zastosowanie (bardzo łatwo można zastąpić to pętlą)

Przyznam się że użyłem tego skoku około 3x w życiu.
Co do problemu, chyba nikt nie podał dobrego gotowca (z tych co je podawali [chodzi o gotowiec bez 'goto]) tak więc: @norbertms wywal 'goto' użyj pętli a w niej z każdym wykonaniem dodaj do wcześniej wyzerowanej zmiennej (nazwa oczywiście jest dowolna) 1. Prosty przykład:
dla 'for'
C/C++
for( int i = 0; i < maxWykonan; i++ )
{
    //...
}
Tutaj cała zawartość pętli robi to za ciebie (jeśli odpowiednio ją skonstruujesz).
dla 'while'
C/C++
int i = 0;
while( i < maxWykonan )
{
    i++;
}
dla 'do...while"
C/C++
int i = 0;
do
{
    i++;
} while( i < maxWykonan );

Pamiętaj że do...while wykona się przynajmniej raz.
P-84672
Bajt
» 2013-06-02 22:23:29
@SeaMonster, pekfos
Czy teraz się podoba?
C/C++
#include <iostream>
#include <ctime>
#include <conio.h>

int main()
{
    int counter = 1;
    srand(( int ) time( NULL ) );
    int number = rand() % 100 + 1;
    std::cout << "Wylosowano liczbe z przedzialu 1-100." << std::endl;
   
   
    int user_number;
    std::cout << "Odgadnij ja: ";
    std::cin >> user_number;
   
   
    while( user_number != number )
    {
        if( user_number < number )
        {
            std::cout << "Liczba zbyt mala.";
           
        }
        else
             std::cout << "Zbyt duza liczba.";
       
       
        std::cout << " Sprobuj jeszcze raz: ";
        counter++;
        std::cin >> user_number;
    }
    std::cout << "odgadles za " << counter << " razem!";
    _getch();
}
Tamten kod trochę nieuważny więc zwracam honor ;)
P-84691
pekfos
» 2013-06-03 13:58:57
Tamten kod trochę nieuważny
Tak jak ten.
P-84706
seprob
» 2013-06-03 15:10:22
A może tak:
C/C++
#include <iostream>
#include <stdlib.h>
#include <time.h>

using namespace std;

int draw();

int main() {
    int number_search; // Poszukiwana liczba
    int number_rand; // Wylosowana liczba
   
    srand( time( NULL ) ); // Inicjalizacja generatora liczb pseudolosowych
   
    number_rand = rand();
   
    while( number_search = draw() ) {
        if( number_search == number_rand ) {
            cout << "Zgadles." << endl;
           
            break;
        } else if( number_search < number_rand ) {
            cout << "Za malo." << endl;
           
            continue;
        } else {
            cout << "Za duzo." << endl;
           
            continue;
        }
    }
   
    system( "pause" );
}

int draw() {
    static int counter = 0;
    int number;
   
    cout << "Podaj poszukiwana liczbe: ";
   
    cin >> number;
   
    counter++;
   
    cout << "Liczba prob = " << counter << "." << endl;
   
    return number;
}
P-84710
Bajt
» 2013-06-03 16:05:54
@pekfos
Zdumiewające, jednak na moim kompilatorze wszystko działa
P-84712
1 « 2 » 3
Poprzednia strona Strona 2 z 3 Następna strona