asmodeus94

odgadnijSlowoTabDyn

Oct 17th, 2013
117
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.73 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3. #include <string>
  4. #include <windows.h>
  5. #include <conio.h>
  6. #include <ctime>
  7. using namespace std;
  8. string nazwaZag="slowa.txt";
  9. string nazwaWyn="wyniki.txt";
  10. struct slowa{
  11.     string slowoPrawidlowe;
  12.     string znakUzyty;
  13.     string slowoZmienione;
  14.     string tabBledneSlowa[5];
  15.     int iloscBledow;  
  16. };
  17. int dlT;
  18. slowa *tab;
  19.  
  20. int liczbaPunktow; // im wiecej tym gorzej
  21. void menu(){
  22.     cout<<"1 - Graj\n";
  23.     cout<<"2 - wyswietl wyniki\n";
  24.     cout<<"3 - Wylacz\nWybor: \n";
  25. }
  26. void z(){getchar();getchar();}
  27. void wyswietlWyniki(){
  28.     system("cls");
  29.     ifstream uchw(nazwaWyn.c_str());
  30.     string linia;
  31.     int byl=0,nrLini=0;
  32.     string liniaD;
  33.     cout<<"Lista wynikow:"<<endl;
  34.     while(!uchw.eof()){
  35.         getline(uchw,linia);
  36.         if((linia=="")&&(byl==0)){
  37.             if(nrLini==0){
  38.                 cout<<"Brak wpisow";
  39.                 z();
  40.             }
  41.             break;
  42.         }else byl=1;
  43.         if(linia[0]=='*'){ 
  44.             cout<<"Nacisnij dowolny klawisz >>>";
  45.             byl=0;
  46.             getchar();
  47.             system("cls");
  48.         }else cout<<linia<<endl;
  49.         nrLini++;
  50.     }  
  51.     uchw.close();
  52. }
  53. string rob0lub1(byte opcja, byte dl){
  54.     string zw="";
  55.     for(int z=0;z<dl;z++){
  56.         if(opcja==0) zw+="0";else zw+="1";
  57.     }
  58.     return zw;
  59. }
  60. void skopiujDoTablicy(){
  61.     ifstream uchw(nazwaZag.c_str());
  62.     int d=0;
  63.     while(!uchw.eof()){
  64.         string *linia=&tab[d].slowoPrawidlowe;
  65.         getline(uchw,*linia);
  66.         d++;
  67.     }
  68.     srand(time(NULL));
  69.     int dlWyr,ktEle;
  70.     for(int i=0;i<dlT;i++){
  71.         dlWyr=tab[i].slowoPrawidlowe.length();
  72.         tab[i].znakUzyty=rob0lub1(0,dlWyr);
  73.         while(tab[i].znakUzyty!=rob0lub1(1,dlWyr)){
  74.             ktEle=rand()%dlWyr;
  75.             if(tab[i].znakUzyty[ktEle]!='1'){
  76.                 tab[i].znakUzyty[ktEle]='1';
  77.                 tab[i].slowoZmienione+=tab[i].slowoPrawidlowe[ktEle];
  78.             }  
  79.         }
  80.     }
  81. }
  82. string wypiszBledy(int ktE,int ileB){
  83.     string zw="";
  84.     for(int d=0;d<ileB;d++){
  85.         zw+=tab[ktE].tabBledneSlowa[d];
  86.         if(d!=ileB-1) zw+=", ";
  87.     }
  88.     return zw;
  89. }
  90. void gra(string &nick){
  91.     liczbaPunktow=0;
  92.     string podaneSlowo;
  93.     for(int i=0;i<dlT;i++){
  94.         tab[i].iloscBledow=0;
  95.         int *liBl=&tab[i].iloscBledow;
  96.         do{
  97.             if(*liBl>0) cout<<"Zle ("<<tab[i].slowoZmienione<<")[bledow: "<<*liBl<<"]\n";else
  98.             cout<<"Odgadnij co to za slowo: "<<tab[i].slowoZmienione<<"\n";
  99.             cin>>podaneSlowo;
  100.             if(podaneSlowo==tab[i].slowoPrawidlowe){
  101.                 liczbaPunktow+=tab[i].iloscBledow;
  102.                 cout<<"Dobrze\n";
  103.                 break;
  104.             }else{
  105.                 tab[i].iloscBledow++;
  106.                 tab[i].tabBledneSlowa[*liBl-1]=podaneSlowo;
  107.                 if(*liBl==5){
  108.                     liczbaPunktow+=tab[i].iloscBledow;
  109.                 }
  110.             }
  111.         }while(*liBl!=5);
  112.     }
  113.     ofstream uchw(nazwaWyn.c_str(),ios::app);
  114.     cout<<nick<<"\n";
  115.     uchw<<nick<<"\n";
  116.     for(int i=0;i<5;i++){
  117.         if(tab[i].iloscBledow>0){
  118.             cout<<"Bledy dla slowa "<<tab[i].slowoPrawidlowe<<"("<<tab[i].iloscBledow<<")"<<" to: "<<wypiszBledy(i,tab[i].iloscBledow)<<"\n";
  119.             uchw<<"Bledy dla slowa "<<tab[i].slowoPrawidlowe<<"("<<tab[i].iloscBledow<<")"<<" to: "<<wypiszBledy(i,tab[i].iloscBledow)<<"\n";
  120.         }
  121.     }
  122.     cout<<"Ogolna liczba bledow: "<<liczbaPunktow;
  123.     uchw<<"Ogolna liczba bledow: "<<liczbaPunktow<<"\n*\n";
  124.     uchw.close();
  125. }
  126. void tworzTab(){
  127.     string pom1;
  128.     dlT=0;
  129.     ifstream uchw(nazwaZag.c_str());
  130.     while(!uchw.eof()){
  131.         getline(uchw,pom1);
  132.         if(pom1!="") dlT++;
  133.     }
  134.     uchw.close();
  135.     tab = new slowa[dlT];
  136. }
  137. int main(){
  138.     string nick;
  139.     char wybor;
  140.     do{
  141.         system("cls");
  142.         menu();
  143.         wybor=getch();
  144.         switch(wybor){
  145.             case '1':{
  146.         tworzTab();
  147.                 skopiujDoTablicy();
  148.                 cout<<"Podaj swoj nick: ";cin>>nick;
  149.                 gra(nick);
  150.                 delete [] tab;
  151.                 tworzTab();
  152.                 z();
  153.                 break;
  154.             }
  155.             case '2':{
  156.                 wyswietlWyniki();
  157.                 break;
  158.             }                        
  159.         }
  160.     }while(wybor!='3');
  161.     return 0;
  162. }
Advertisement
Add Comment
Please, Sign In to add comment