1 Востаннє редагувалося Chemist-i (24.06.2015 21:40:24)

Тема: Мені не виходить прога на с. ПОМОЖІТЬ!!!

Код на с правильний.
А в консолі вибиває помилку.
Це ігра тіпа мілліонер.
Нижче код програми.

#include <iostream>
using namespace std;
void main ()
{
system ("color B0");

    cout<<"                                 GAME                                    "<<endl;

    cout<<"    Yka stoluza ukrainu"<<endl;
    
    cout<<"  a: Kyiv          c: Lviv     "<<endl;
    cout<<"  b: London        d: Berlin   "<<endl;
    int capital,a;
    cin>>capital;
    if(capital == a )
     {
         cout<<"Pereutu do nastypnogo putanna"<<endl;
         cout<<"What kind of plant is called \"wild rose\"?"<<endl;
         cout<<" a: rose                  c: dog-rose           "<<endl; 
         cout<<" b: cornflower            d: camomile           "<<endl;
         
                      int plant, c;
                      cin>>plant;
                      if (plant==c)
                      {
                           
                             cout<<"Pereutu do nastypnogo putanna"<<endl;
                             cout<<"How many squares on a chessboard?"<<endl;
                             cout<<" a: 64                  c: 40             "<<endl;
                             cout<<" b: 54                  d: 46             "<<endl;
                             
                                  int squares, a;
                                  cin>>squares;
                                  if (squares==a)
                                  {

                                              cout<<"Pereutu do nastypnogo putanna"<<endl;
                                              cout<<"What word consists of seven identical letters?"<<endl;
                                              cout<<" a: flag               c: doctor              "<<endl;
                                              cout<<" b: error              d: family              "<<endl;
                                              
                                                     int seven, d;
                                                     cin>>seven;
                                                     if (seven==d){
                                                         cout<<"VU VUGRALU 400  $      CAME OVER  !!!!!!!!!!!! DETKA  !!!!!!!  :-)   :-)   :-)  "<<endl;
                                                         }
            }
            else
            {
                cout<<"Nevirno,             CAME OVER DETKA :-("<<endl;
            }
        }
        else
        {
            cout<<"Nevirno,        GAME OVER DETKA    :-(  "<<endl;
        }
    }
    else 
    {
        cout<<"Nevirno, do pobachennya,  GAME OVER DETKA :-(!!!"<<endl;
    }

}

Chemist-i: для коду використовуйте, будь ласка, теґ [ code ]

2 Востаннє редагувалося mike (24.06.2015 21:20:13)

Re: Мені не виходить прога на с. ПОМОЖІТЬ!!!

вирвиоко, візьміть код в тег code

 if(capital == a )// неправильно
 if(capital == "a" ) // думаю так буде вірно, так само як і інші if-и

3

Re: Мені не виходить прога на с. ПОМОЖІТЬ!!!

Дякую!!!! Буду пробувати.

4

Re: Мені не виходить прога на с. ПОМОЖІТЬ!!!

muhasjo написав:

вирвиоко, візьміть код в тег code

 if(capital == a )// неправильно
 if(capital == "a" ) // думаю так буде вірно, так само як і інші if-и


ні так не можна
тому що це змінна
ми цього не виводим на екран
це сама програма дія

5

Re: Мені не виходить прога на с. ПОМОЖІТЬ!!!

1. Вживайте тег code.
2. Це не C.
3. Чим можна допомогти, якщо код правильний і немає завдання? Це ж означає, що завдання було - отримати помилку, а отже, ніц не треба виправляти чи допомагати. Визначайтеся - якщо є помилка, значить, код неправильний. Ну а ми не телепати і не знаємо ані завдання, ані того, яка помилка, доки ви цього не скажете.
4. muhasjo помиляється.
5. Де ви значення a виставляєте?

6

Re: Мені не виходить прога на с. ПОМОЖІТЬ!!!

volodyasdidukh написав:
muhasjo написав:

вирвиоко, візьміть код в тег code

 if(capital == a )// неправильно
 if(capital == "a" ) // думаю так буде вірно, так само як і інші if-и


ні так не можна
тому що це змінна
ми цього не виводим на екран
це сама програма дія

ну ви хочете ввести з клавіатури літеру в змінну "capital", яку потім і збираєтесь порівнювати із правильною буквою. А змінна "а" у вас тільки оголошується, але їй нічого не присвоюється. для чого тоді порівнювати дві змінні??? я тут не бачу логіки.

7

Re: Мені не виходить прога на с. ПОМОЖІТЬ!!!

koala написав:

4. muhasjo помиляється.

і в чому ж?

8

Re: Мені не виходить прога на с. ПОМОЖІТЬ!!!

muhasjo написав:
koala написав:

4. muhasjo помиляється.

і в чому ж?

В тому, що capital - змінна типу int, а "a" типу char *. Вказівник можна порівнювати з int-ом, але в цілому це безглузда операція, якщо це не спеціальна програма для дослідження роботи менеджера пам'яті в компіляторі. Хоча автор не писав, що він робить, так що можливо, що я помилився...

Подякували: mike1

9

Re: Мені не виходить прога на с. ПОМОЖІТЬ!!!

koala написав:
muhasjo написав:
koala написав:

4. muhasjo помиляється.

і в чому ж?

В тому, що capital - змінна типу int, а "a" типу char *. Вказівник можна порівнювати з int-ом, але в цілому це безглузда операція, якщо це не спеціальна програма для дослідження роботи менеджера пам'яті в компіляторі. Хоча автор не писав, що він робить, так що можливо, що я помилився...

так, дійсно, не звернув уваги на тип. відвик від строгої типізації.

10

Re: Мені не виходить прога на с. ПОМОЖІТЬ!!!

Вибачте що невідписував .
я мав написати ігру перший мілліонер
і самі бачите шо натупив
я тільки початківець
і починаю трохи в'їжджати

11

Re: Мені не виходить прога на с. ПОМОЖІТЬ!!!

то скажіть будь ласка шо я не так начтворив

12 Востаннє редагувалося koala (24.06.2015 22:15:34)

Re: Мені не виходить прога на с. ПОМОЖІТЬ!!!

Ви очікуєте, що вам будуть натискати літеру a,b,c,d на клавіатурі? Тоді тип int вам ніяк не годиться для цього.

char capital; //символ, не число
cin >> capital; //вводимо відповідь

тут треба бути обережним - якщо користувач введе ab↵, то capital буде 'a', а символи 'b' і '↵' (що найгірше) будуть чекати в буфері клавіатури, доки ви не прочитаєте наступний символ. Тому одразу робимо

cin.ignore(100); //пропустити наступні 100 символів

не дуже красиве рішення, але для початківця досить зрозуміле.
А далі порівнюємо:

if( capital == 'a' ) //якщо ввели символ a

Одинарні лапки - символ, подвійні - рядок, без лапок - ідентифікатор.
Символи і рядки розрізняються, бо в C/C++ символи насправді - числа у відповідному кодуванні. Зокрема, 'a'==97. А рядки - це масиви... коротше, воно складно. Розберетеся з часом.

Подякували: volodyasdidukh, quez2