[c++/pascal]Prośba o napisanie prostego prgramu

mir5
Użytkownik
Użytkownik
Posty: 26
Rejestracja: 20 mar 2009, o 16:39
Płeć: Mężczyzna
Podziękował: 3 razy

[c++/pascal]Prośba o napisanie prostego prgramu

Post autor: mir5 »

Witam!
Prosiłbym jakiegoś miłego użytkownika o pomoc w napisaniu programu, a właściwie o napisanie, bo ja ostatnio jakąś tam styczność z programowaniem miałem kilka lat temu.

Plan jest mniej więcej taki:
Program ma losować szyfr 2-cyfrowy składający się z dziesięciu znaków - 0,1,...,8,9, np. 92, 33, 01.
Następnie tworzy tablice z wszystkimi możliwymi wynikami.
Teraz program losuje kombinacje 2 cyfr ze stworzonej przed chwila tablicy (np. 11, 00, 57) i sprawdza czy jest ona równa tej która została wylosowana na początku.
Jeśli TAK to program kończy działanie, wyświetla informacje o ilości losowań, które musiały być przeprowadzone aż do znalezienia poprawnej kombinacji.
Jeśli NIE to program losuje dalej.

Ważne jest aby prawdopodobieństwo wylosowania każdej cyfry było identyczne.

Pozdrawiam
Ostatnio zmieniony 4 lip 2009, o 09:58 przez mir5, łącznie zmieniany 1 raz.
Awatar użytkownika
kadiii
Użytkownik
Użytkownik
Posty: 642
Rejestracja: 20 gru 2005, o 21:04
Płeć: Mężczyzna
Lokalizacja: Wrocław
Pomógł: 130 razy

[c++/pascal]Prośba o napisanie prostego prgramu

Post autor: kadiii »

Nie wiem skąd wziąłeś ilość możliwych kombinacji wyników równą 55 - jest ich przecież 100 są to kody od 00,01,... do 98,99. Jeśli tak ma to wyglądac to oto kod.

Kod: Zaznacz cały

#include <iostream>
#include <ctime>
#include <cstdlib>
#define ilosc_eksperymentow 10000
using namespace std;
int main()
{
 srand ( time(NULL) );
 int x,y,i,j,k=0,ind,l=0;
 int ilosc_prob=0, ilosc_sukcesow=0;
 int wyniki[100][2];
 //losujemy nasz szyfr
 x=rand()%10;
 y=rand()%10;
 cout<<"Szyfr jest równy "<<x<<y<<endl;
 for(i=0;i<10;i++)
  for(j=0;j<10;j++)
  {
   wyniki[k][0]=i;
   wyniki[k][1]=j;
   k++;
  }
 //tutaj mozna wypisac wszystkie kombinacje
 /*for(i=0;i<100;i++)
  cout<<wyniki[i][0]<<wyniki[i][1]<<endl;*/
 //losujemy kombinacje
// while(l<ilosc_eksperymentow)
 while(ilosc_sukcesow==0)
 {
  ind=rand()%100;
  cout<<"Wylosowano "<<wyniki[ind][0]<<wyniki[ind][1]<<endl;
  //sprawdzamy kombinacje
  if((wyniki[ind][0]==x)&&(wyniki[ind][1]==y))
  {
   cout<<"TAK
";
   ilosc_sukcesow++;
  }
  else
   cout<<"NIE
";
  ilosc_prob++;
  l++;
 }
 cout<<"Podsumowanie :
";
 cout<<"Ilosc prob : "<<ilosc_prob<<endl;
 //cout<<"Ilosc sukcesow : "<<ilosc_sukcesow<<endl;
 //cout<<"P(Zlamanie kodu)="<<ilosc_sukcesow/(double)ilosc_prob;
 return 0;
}
Zakomentarzowane miejsca to: możliwość wypisania kombinacji oraz możliwość zmiany nieco zadania programu z liczenia do pierwszego trafienia na ilosc trafień w n próbach - ta ostatnia służy oczywiście do obliczenia prawdopodobieństwa, które w wersji teoretycznej wynosi oczywiście 0,01.
mir5
Użytkownik
Użytkownik
Posty: 26
Rejestracja: 20 mar 2009, o 16:39
Płeć: Mężczyzna
Podziękował: 3 razy

[c++/pascal]Prośba o napisanie prostego prgramu

Post autor: mir5 »

Wielkie dzięki za pomoc!
ODPOWIEDZ