Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[C++] gra z losowaniem liczb

Paladyn55555 09 Lip 2010 12:18 1125 6
  • #1 09 Lip 2010 12:18
    Paladyn55555
    Poziom 12  

    Witam. Od dwóch dni uczę się programować w języku c++ i po napisaniu kodu mam następujące błędy:

    Code:
    expected primary expression before "else" [22]
    
    expected ; before else [22]
    expected primary expression before "else" [28]
    expected ; before else [28]


    Nie jestem w stanie tego naprawić. Średnik niby zachowałem a pomimo tego nadal kompilator prosi o niego. Oto kod programu:

    Code:
    #include <iostream.h>
    
    #include <conio.h>
    #include <cstdlib>
    #include <ctime>

    main()
    {
    srand(time(NULL));
    int b; //Deklaracja b
    int min=1; //Minimalna liczba
    int max=99; // Maksymalna liczba
    int a=rand()%(max-min+1)+min;
    cout << "Wpisz swoja liczbe" << endl;
    cin >> b;

    while (b==a) // Pętla potwierdzenia
    {
        {
        cout << (b==a) << "Odgadles//las moja liczbe!"; // Jeśli zgadl
        }

    else // jeśli źle to
        {
        cout << if(b<a) << "Twoja liczba jest zbyt mala. Wpisz nowa "; //jeśli tu się nie zgadza leci do nastepnej klamry
        cin >> b; //jesli jest podal zbyt mala chce od uzytkownika nowa liczbe
        }

    else
        {
        cout << (b>a) <<"Twoja liczba jest zbyt duza. Wpisz nowa ";
        cin >> b; //jesli liczba gracza jest zbyt duza chce nowej
        }
    }
    getch();
    }


    Proszę o szybką odpowiedź

    0 6
  • #2 09 Lip 2010 12:55
    livex21
    Poziom 22  

    Kolego, skąd Ci wyszło 'else po while' ? Czytałeś o pętlach? Instrukcjach warunkowych?

    Tak na szybko:

    Code:

    #include <stdio.h>

    #include <iostream.h>
    #include <conio.h>
    #include <cstdlib>
    #include <ctime>

    main()
    {
      srand(time(NULL));
      int b; //Deklaracja b
      int min=1; //Minimalna liczba
      int max=99; // Maksymalna liczba
      int a=rand()%(max-min+1)+min;

      cout << "Wpisz swoja liczbe" << endl;
      cin >> b;

      if (b==a) // Pętla potwierdzenia
      {
        cout << "Odgadles//las moja liczbe!"; // Jeśli zgadl
      } else // jeśli źle to
      {
        if(b<a)
        {
          cout <<  "Twoja liczba jest zbyt mala. Wpisz nowa "; //jeśli tu się nie zgadza leci do nastepnej klamry
          cin >> b; //jesli jest podal zbyt mala chce od uzytkownika nowa liczbe
        } else
        {
          cout << (b>a) <<"Twoja liczba jest zbyt duza. Wpisz nowa ";
          cin >> b; //jesli liczba gracza jest zbyt duza chce nowej
        }
      }

      getchar();
      cin.ignore();
    }


    Pozdrawiam!

    0
  • #3 09 Lip 2010 13:08
    Paladyn55555
    Poziom 12  

    wszystko git ale gdy wpisuje liczbę to nie sprawdza ponownie czy jest zbyt duża czy zbyt mała. Do tego potrzebowałem pętli while

    0
  • Pomocny post
    #4 09 Lip 2010 13:19
    livex21
    Poziom 22  

    Dlatego poczytaj o pętlach i użyj jej z głową.

    Pozdrawiam!

    0
  • #5 10 Lip 2010 14:32
    Paladyn55555
    Poziom 12  

    Code:
    #include <stdio.h>
    
    #include <iostream.h>
    #include <conio.h>
    #include <cstdlib>
    #include <ctime>

    main()
    {
      srand(time(NULL));
      int b; //Deklaracja b
      int min=1; //Minimalna liczba
      int max=99; // Maksymalna liczba
      int a=rand()%(max-min+1)+min;

      cout << "Wpisz swoja liczbe" << endl;
      cin >> b;
    do
      {
        if(b<a)
        {
          cout <<  "Twoja liczba jest zbyt mala. Wpisz nowa "; //jeśli tu się nie zgadza leci do nastepnej klamry
          cin >> b; //jesli jest podal zbyt mala chce od uzytkownika nowa liczbe
        } else
        {
          cout << (b>a) <<"Twoja liczba jest zbyt duza. Wpisz nowa ";
          cin >> b; //jesli liczba gracza jest zbyt duza chce nowej
        }
      }
      while (b!=a); // Pętla potwierdzenia
      {
        cout << "Odgadles/las moja liczbe!"; // Jeśli zgadl
      }

      getchar();
      cin.ignore();
    }


    Oto co stworzyłem, pytanie jest moje następujące - co zrobić, aby wyłączał program(co wpisać) i co wpisać by wracał an sam początek programu(zaczynał od początku)

    Livex ma soga ;)

    0
  • #6 10 Lip 2010 17:33
    gaskoin
    Poziom 38  

    żeby wracał na sam początek to albo wszystko obejmujesz pętlą while, albo na koniec programu wywołujesz maina ( :) )

    z tym, że jak wciśniesz i wyjdzie z programu trzeba trochę kombinować - można chociażby zakończyć pętlę używając break'a. Uniwersalnego sposobu nie ma

    0
  • #7 10 Lip 2010 19:36
    livex21
    Poziom 22  

    Jest uniwersalny sposób - pętla główna programu.

    Code:

    #include <stdio.h>
    #include <iostream.h>
    #include <conio.h>
    #include <cstdlib>
    #include <ctime>

    main()
    {
      srand(time(NULL));
      int b; //Deklaracja b
      int min=1; //Minimalna liczba
      int max=99; // Maksymalna liczba
      int a;
      char key;

      while(1)
      {

        a=rand()%(max-min+1)+min;

        cout << "Wpisz swoja liczbe" << endl;
        cin >> b;
        do
        {
          if(b<a)
          {
            cout <<  "Twoja liczba jest zbyt mala. Wpisz nowa "; //jeśli tu się nie zgadza leci do nastepnej klamry
            cin >> b; //jesli jest podal zbyt mala chce od uzytkownika nowa liczbe
          } else
          {
            cout << (b>a) <<"Twoja liczba jest zbyt duza. Wpisz nowa ";
            cin >> b; //jesli liczba gracza jest zbyt duza chce nowej
          }
        }
        while (b!=a); // Pętla potwierdzenia

        cout << "Odgadles/las moja liczbe!"; // Jeśli zgadl

        cout << "   " << "Raz jeszcze: t/n?"; // Jeśli zgadl
        cin >> key;
        if(key=='n') break;
      }
    }


    Kolego, robisz straszne błędy. Poczytaj jeszcze o pętlach.

    Pozdrawiam!

    0