CYFROWY BARON • PROGRAMOWANIE • Zobacz wątek - powrót do początku programu

powrót do początku programu

dział ogólny

Re: powrót do początku programu

Nowy postprzez Cyfrowy Baron » sobota, 8 stycznia 2011, 12:11

Ja tak sobie myślę tomass, że to programowanie to chyba nie dla Ciebie. Jesteś za mało aktywny, nie szukasz samodzielnie rozwiązań, nie zaglądasz do pomocy dla środowiska, nie potrafisz skupić uwagi na tym co czytasz. Przecież polymorphism napisał, żebyś użył funkcji rand i srand, nie bez powodu tych dwóch, gdyż rand uruchamia pseudo-generator liczb losowych, a funkcja srand ustawia wartość początkową generatora, czyli randomize zastępujesz funkcją srand, a random funkcją rand. Do sekcji include musisz dopisać biblioteki:
KOD cpp:     UKRYJ  
#include <stdlib.h> /* lub cstdlib.h - musisz sprawdzić jak ta biblioteka nazywa się u Ciebie */
#include <time.h>


Funkcja rand() domyślnie losuje liczby z przedziału <0, RAND_MAX>, gdzie RAND_MAX to makro zdefiniowane w bibliotece stdlib.h. Rozmiar tej wartości jest zależny od biblioteki i środowiska, ale nie jest mniejszy niż 32767. By wylosować liczbę z wybranego zakresu trzeba połączyć funkcję rand z dzieleniem modulo. Nie będę wyjaśniał dlaczego tak to działa.
Niestety sama funkcja rand nie wystarczy, gdyż program zawsze będzie losował te same liczby, co jest o tyle oczywiste, że do losowania liczb funkcja musi używać jakiegoś algorytmu, a taki algorytm musi startować z jakimiś wartościami początkowymi, więc jest oczywiste, że wartości początkowe za każdym razem są takie same, więc algorytm generuje te same liczby. By to zmienić trzeba wywołać funkcję srand( unsigned int seed); gdzie argument seed jest wartością startową dla generatora rand. By ta wartość za każdym razem była inna najprościej jest skorzystać z funkcji time.
Funkcję srand wywołuje się tylko raz gdyż tylko raz wystarczy wystartować generator liczb, który działa do zakończenia programu. Generator działa dobrze jeżeli losowanie nie odbywa się częściej niż 1 wartość na sekundę.

KOD cpp:     UKRYJ  
#include <conio.h> // wymagana przez getch
#include <iostream> // wymagana przez cin
#include <stdlib.h> // wymagana przez rand i srand
#include <stdio.h>  // wymagana przez printf
#include <time.h>   // wymagana przez time
//---------------------------------------------------------------------------

using namespace std;

#pragma argsused

void fun1(void);
void fun2(void);
void fun3(void);

const int ESCAPE = 27;

//---------------------------------------------------------------------------
int _tmain(int argc, _TCHAR* argv[])
{
 srand(time(NULL));

 char esc;

 while(1)
 {
  int r = rand() % 3;

  switch(r)
  {
    case 0: fun1(); break;
    case 1: fun2(); break;
    case 2: fun3(); break;
  }

  esc = getch();
  if(esc == ESCAPE)
  {
   char result[2];
   printf("Czy chcesz zakonczyc dzialanie programu? (TAK/NIE) T/N\n");
   cin >> result;

   if( !stricmp(result, "T" ) ) return 0;
  }
 }

 return 0;
}
//---------------------------------------------------------------------------

void fun1(void)
{
 printf("Wylosowano funkcje fun1\nNacisnij dowolny klawisz by kontynuowac\n\n");
}
//---------------------------------------------------------------------------
void fun2(void)
{
 printf("Wylosowano funkcje fun2\nNacisnij dowolny klawisz by kontynuowac\n\n");
}
//---------------------------------------------------------------------------
void fun3(void)
{
 printf("Wylosowano funkcje fun3\nNacisnij dowolny klawisz by kontynuowac\n\n");
}
//---------------------------------------------------------------------------
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox

Poprzednia strona

Powrót do Ogólne problemy z programowaniem

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zalogowanych użytkowników i 4 gości