Prawdziwe oblicze Informatyki. Tysiące linijek kodu i kompilatory które nigdy nie wybaczają.
Awatar użytkownika

winuser

Zasłużony użytkownik
Posty: 980
Rejestracja: 29 sie 2013, 12:15
    Windows 10 Chrome

Post09 sty 2016, 16:59

Cześć, muszę napisać (dość dla mnie dziwny, jako osoby nie korzystającej kilka lat z C++) program o takiej specyfikacji:
Należy stworzyć grę „w 33” wg poniższych założeń. Gra powinna być napisana w języku C++,
w formie aplikacji konsolowej lub okienkowej (do wyboru). Przebieg działania aplikacji:
Użytkownik podaje swoje imię. Następnie zaczyna się gra: użytkownik podaje liczbę od 1 do 3. Dalej
przeciwnik (czyli program o imieniu Komputer), losuje liczbę z zakresu od 1 do 3 i dodaje do liczby
podanej przez przeciwnika i wyświetla wynik dodawania. Jeśli liczba podana przez użytkownika
jest większa od 15, komputer sprawdza, czy może podać liczbę będącą wielokrotnością liczby 4
– jeśli może, podaje właśnie tą liczbę (przez to ma szansę na wygraną z człowiekiem).
Następne kroki to podawanie wyników sumy poprzedniej liczby z liczbami z zakresu od 1 do 3
na przemian. Podaną przez użytkownika liczbę należy zweryfikować, czy faktycznie jest sumą
poprzedniej liczby oraz liczby z zakresu od 1 do 3. Jeśli nie, upominamy użytkownika i prosimy o
podanie poprawnej wartości i tak w koło.
Gra toczy się aż do liczby 33. Kto jest zmuszony podać taką liczbę - przegrywa. Zwycięzcę należy
podać w formie: "Grę wygrywa <imię>!".

Z poprzedniego, podobnego programu, mam tyle:

Kod: Zaznacz cały

#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;

int main()
{
   int x=0, suma=1,turn=1;
   srand( time( NULL ) );
   
   cout << suma << endl;
   while (suma<33)
   {
      if (turn==1)
      {
         cin >> x;
         if ((x>0)&&(x<4)&&(suma+x<=33))
         {
            suma+=x;
            cout << suma << endl;
            turn=2;
         }
      }
      else if (turn==2)
      {
         x=( rand() % 2 ) + 1;
         if (suma+x<=33)
         {
            suma+=x;
            cout << suma << endl;
            turn=1;
         }
      }
      
      if (suma==33)
      {
         cout << (turn==1?"Wygrales!":"Przegrales!");
      }   
   }
}


Jak to zmodyfikować, jakie warunki muszę dodać w pętli, żeby to działało jak powinno ? Stawiam browary każdemu, kto pomoże, bo muszę to mieć na jutro, więc nockę raczej zarwę \\ :(
Mój PC:
Intel Core i3-4170 @3.70GHz + SilentiumPC SpartanPro | MSI B85M-G43 | Zotac GeForce GTX 750 Ti 1GB | 8 GB RAM Crucial Ballistix Sport 1600Mhz 9-9-9-24| Patriot Blaze SSD 120 GB | Windows 10 Pro 1703 x64
Laptop:
Lenovo IdeaPad P580 | Intel Core i5 3210M @ 3.1 GHz| nVidia GeForce GT630M | 16GB RAM Kingston | LiteON LCS 128-L9S 128GB | Windows 7 Pro x64
Apple iPhone 5s | Apple A7 @1.3 GHz | PowerVR SGX543MP3 | 1GB RAM | 16GB PAMIĘCI | iOS 10.3
Inne telefony:

Spoiler: pokaż
Apple iPhone 5 | Apple A6 @1.3 GHz | PowerVR G6430 | 1GB RAM | 32GB PAMIĘCI | iOS 10.3
Nokia N9 | TI OMAP3630 @1,1GHz OC | PowerVR SGX-530 | 1GB RAM LPDDR | 16 GB PAMIĘCI | MeeGo 1.2 Harmattan
Lumia 520 | Qualcomm MSM8227 @ 1GHz | Qualcomm Adreno 305 | 512MB RAM | 8GB PAMIĘCI| WP 8.1 GDR2

Awatar użytkownika

bsystem

Zasłużony użytkownik
Posty: 652
Rejestracja: 03 lis 2010, 16:44
    Linux Firefox

Post09 sty 2016, 17:35

KOCHAM NAZWY ZMIENNYCH W DWÓCH JĘZYKACH
Spoiler: pokaż
Asus n61v | c2d p7450 | GT 240m | 4GB DDR3 | 320GB | Windows 8.1 x64
Fujitsu Siemens Esprimo V5505 | C2D T7550 2,2GHz 4MB Cache L2 (Merom) | 4GB RAM DDR2| 120GB| Windows 8.1 x64
Pentium 4 |Pentium 4 3.0GHz (Prescott) | 1 GB RAM DDR1 | 60 GB |Windows 8 RTM
Toshiba Satellite 1400-503 | Celeron-S 1,33GHz (tualatin :hyhy:) | 768 MB SD-RAM | 40GB | Windows XP SP3
K6-2| AMD K6-2 300MHz | 64MB SD-RAM |1GB| Windows 2000 Fresh by Rublik
Serwer 'Sempik': AMD Sempron 2800+ | ASUS K8V-MX | 1024 MB RAM DDR1 | S3 Graphics DeltaChrome Pro IGP | 20GB + 500GB | Windows 2k8
Pentium 4 1,7 GHz| OEM Fujitsu | 512MB SD RAM| 40GB
Sempron 2200+ | jakieś mobo MSI | 128MB DDR | 40GB
Intel Pentium III Coppermine | mobo na intelu | 128MB SD RAM | 80GB
Sempron 2800+ | ASRock K8NF4G-SATA2 | 512MB DDR | 160GB RAID0
Pentium II | mobo na slot1 | 128MB SD RAM | 2GB


Komputery mniej lub bardziej kompletne:

Amilo M7400 | Pentium M 1,3 GHz (Banias)| 512 MB RAM | dysk zbrickowany | +15" CRT


iPhone 5c + Dell e6230

Awatar użytkownika

pc.qwerty

Zasłużony użytkownik
Posty: 3272
Rejestracja: 01 lip 2010, 11:28
    Windows 7 Chrome

Post09 sty 2016, 19:51

Nie wiem czy dobrze zrozumiałem polecenie ale program nawet działa (pisałem od zera). Wiem że kod jest brzydki jak noc, jak chcesz to mogę dodać komentarze.

Kod: Zaznacz cały

#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
int main(){
   int liczba_uzytkownik,liczba_komputer,licznik=0,suma=0,komputer_zakres;
   komputer_zakres=4;
   srand(time(NULL));
   
   string imie;
   cout<<"Podaj imie: ";
   cin>>imie;
   
   do{
      cout<<"Podaj liczbe [1-3]: ";
      cin>>liczba_uzytkownik;
   }
   while(liczba_uzytkownik==0||liczba_uzytkownik>3);
   suma+=liczba_uzytkownik;
   
   do(liczba_komputer=rand()%4); while(liczba_komputer==0);
   suma+=liczba_komputer;
   cout<<"Komputer podaje: "<<suma<<"\n";
   
   for(;;){
      if(suma==32){cout<<"Wygral komputer";break;}
      if(suma==33){cout<<"Wygral "<<imie; break;}
      licznik++;
      cout<<"Podaj liczbe: ["<<suma<<"+[1-3]: ";
      cin>>liczba_uzytkownik;
      if(liczba_uzytkownik<=suma||liczba_uzytkownik>suma+3){cout<<"Bledna liczba\n";}   
      else{
         suma=liczba_uzytkownik;
         if(suma>15&&licznik<2){
            for(int i=1;i<9;i++){
               if(4*i>suma&&4*i<33){
                  liczba_komputer=4*i;
                  break;
               }
            }
            suma=liczba_komputer;
            cout<<"Komputer podaje: "<<suma<<"\n";
         }
         else{
            if(suma==32){liczba_komputer=1;}
            else{
               if(suma>30) komputer_zakres=2;
               do{
                  liczba_komputer=rand()%komputer_zakres;
                  if(liczba_komputer!=0&&suma+liczba_komputer<34) break;
               }
               while(1);
            }
            suma+=liczba_komputer;
            cout<<"Komputer podaje: "<<suma<<"\n";
         }
      }
   }
}
There is no cloud. It's just someone else's computer.

Awatar użytkownika

winuser

Zasłużony użytkownik
Posty: 980
Rejestracja: 29 sie 2013, 12:15
    Windows 7 Chrome

Post09 sty 2016, 23:08

@pc.qwerty, wiszę Ci dobre piwo co najmniej :) Wielkie dzięki :)
Mój PC:
Intel Core i3-4170 @3.70GHz + SilentiumPC SpartanPro | MSI B85M-G43 | Zotac GeForce GTX 750 Ti 1GB | 8 GB RAM Crucial Ballistix Sport 1600Mhz 9-9-9-24| Patriot Blaze SSD 120 GB | Windows 10 Pro 1703 x64
Laptop:
Lenovo IdeaPad P580 | Intel Core i5 3210M @ 3.1 GHz| nVidia GeForce GT630M | 16GB RAM Kingston | LiteON LCS 128-L9S 128GB | Windows 7 Pro x64
Apple iPhone 5s | Apple A7 @1.3 GHz | PowerVR SGX543MP3 | 1GB RAM | 16GB PAMIĘCI | iOS 10.3
Inne telefony:

Spoiler: pokaż
Apple iPhone 5 | Apple A6 @1.3 GHz | PowerVR G6430 | 1GB RAM | 32GB PAMIĘCI | iOS 10.3
Nokia N9 | TI OMAP3630 @1,1GHz OC | PowerVR SGX-530 | 1GB RAM LPDDR | 16 GB PAMIĘCI | MeeGo 1.2 Harmattan
Lumia 520 | Qualcomm MSM8227 @ 1GHz | Qualcomm Adreno 305 | 512MB RAM | 8GB PAMIĘCI| WP 8.1 GDR2

Awatar użytkownika

pc.qwerty

Zasłużony użytkownik
Posty: 3272
Rejestracja: 01 lip 2010, 11:28
    Windows 7 Chrome

Post09 sty 2016, 23:21

Cieszę się, że działa zgodnie z założeniami.
There is no cloud. It's just someone else's computer.

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 1 gość