Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.09.2019, 16:06   #1
Karalina Hovard
 
Регистрация: 02.03.2019
Сообщений: 8
По умолчанию [C] Игра-тест не компилируется

Компилятор выводит ошибку о том, что функции указанные в теле main неправильные. Подскажите, пожалуйста, что исправить, чтобы код заработал?
Код:
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <windows.h>
#include <time.h>

void question_one(int n);
void question_two(int t);
void pet(int p);
void eat(int e);
void walk(int w);
void home(int h);

int main()
{
  int qu;
  printf("Вы вошли в игру Тест-потеряшка. Вам дано 2 варианта теста.После ответа на все вопросы, вы сможете увидеть свой результат.\n");
  printf("\n\nВыбирите, какой тест хотите пройти:\n");
  printf("\n1. Кто из GOT7 твоя родственная душа?\n");
  printf("2. Ты ученый или звезда?\n");
  printf("Выш выбор:");
  scanf("%d", &qu);

      while (qu<1 || qu>2){ //Если нажата не та цифра, будет выполняться цикл
        printf("Такого номера варианта нет. Попробуйте еще раз:");
        scanf("%d", &qu);
        }
        switch(qu){
        case 1: question_one(); break;
        case 2: question_two(); break;
        }

  getch();
  return 0;
}
void question_one(int n)//Первый тест
{
    printf("Каждый из участников группы обладает яркой индивидуальностью, поэтому было бы любопытно: кто из них мог бы стать вашей родственной душой?");
    system("cls");
    printf("В 6 утра звонит будильник, и ты:\n"); 
    printf("1) Лениво сползаешь с кровати &_&");
    printf("2) Ты его вообще не ставил, так как лег в 5 утра *o*");
    printf("3) Уже готов к новому дню ^-*");
    printf("4) Продолжаешь дальше спать или переключаешь на 5 минут позже '-'");
    printf("5) Встаешь, напевая под нос, как жесток этот мир к таким прекрасным созданиям, как ты \(^_^)/ ");
    printf("Ваш вариант ответа:\n");
    scanf("%d", &n);

        while (n<1 || n>5){//Если нажата не та цифра
        printf(" Попробуйте еще раз:");
        scanf("%d", &n);
        }
    switch(n){
case 1: case 2: case 3: case 4: case 5:
    pet();
    break;
    }
}

void pet(int p)
{
    printf("Ты бы хотел себе милую домашнюю зверушку?\n ");
    printf("1) Хочу большую собаку");
    printf("2) Хочу маленького нежного котенка");
    printf("3) Да, мимишного кролика Додо");
    printf("4) Меня бы кто приручил, приласкал ");
    printf("5) Жаль... ");
    printf("Ваш вариант ответа:\n");
    scanf("%d", &p);
            while (p<1 || p>5){
        printf("Попробуйте еще раз:");
        scanf("%d", &p);
        }

    switch(p)
    {
    case 1:case 2:case 3: case 4: case 5:
       eat();
       break;
    }
}
void eat(int e)
{
    printf("Выбери вкусняшку:\n ");
    printf("1) Большое пирожное");
    printf("2) Чаджанмен");
    printf("3) Макаруны");
    printf("4) Шоколадка");
    printf("5) Апельсинка");
    printf("Ваш вариант ответа:\n");
    scanf("%d", &e);
        while (e<1 || e>5){
        printf(" Попробуйте еще раз:");
        scanf("%d", &e);
        }
    switch(e)
    {
    case 1: case 2:case 3:case 4:case 5:
        home();
        break;
    }
}
void home(int h)
{
    printf("Дом твоей мечты\n ");
    printf("1) Дом с застекленной крышей на берегу моря");
    printf("2) Домик на дереве в горах");
    printf("3) Роскошный замок");
    printf("4) Китайская пагода");
    printf("5) буду жить в отеле");
    printf("Ваш вариант ответа:\n");
    scanf("%d", &h);
        while (h<1 || h>5){
        printf("Попробуйте еще раз:");
        scanf("%d", &h);
        }
    switch(h)
    {
    case 1:case 2:case 3:case 4: case 5:
        walk();
        break;
    }
}
void walk(int w)
{
    printf("Каким ты видишь идеальное путешествие?\n ");
    printf("1)  в другой город или страну");
    printf("2) по виртульному миру");
    printf("3) по Тихому океану на яхте");
    printf("4) Люблю путешествовать, читая книги");
    printf("5) Идеальное путешествие бывает только с любимыми людьми");
    printf("Ваш вариант ответа:\n");
    scanf("%d", &w);
            while (w<1 || w>5){
        printf(" Попробуйте еще раз:");
        scanf("%d", &w);
        }
    system("cls");//Очистка экрана
    switch(w){//Вывод результатов теста
    case 1: printf("\n\t\t\t\t\tМарк!"); break;
    case 2: printf("\n\t\t\t\t\t Енджэ!"); break;
    case 3: printf("\n\t\t\t\t\t Бэмбэн!"); break;
    case 4: printf("\n\t\t\t\t\t JB!"); break;
    case 5: printf("\n\t\t\t\t\t Джуниор!."); break;
    default: printf("\n\t\t\t\t\t Югём! ");
    }
}

void question_two(int t)//Второй тест
{
    int ch=0;
    printf("\n\t\t\t\tПеред вами тест-потеряшка: Ты ученый или звезда?");
     system("cls");//очистка экрана
    //Первый вопрос
    printf("Вы прочитали научную статью о том, что в определённой местности количество аистов коррелирует с количеством новорожденных. Ваша реакция?");
    printf("\n1.  вы умалчиваете о чём-то важном.");
    printf("\n2. Я в курсе — родители говорили, что меня принёс аист.");
    scanf("%d", &t);
    while (t<1 || t>2){//Если введена не та цифра
        printf("Такого номера варианта нет. Попробуйте еще раз:");
        scanf("%d", &t);
        }
        if(t=1) ch+=1;//Если ответ 1, то +1
        if(t=2) ch+=2;// Если ответ 2, то +2
    system("cls");//Очистка экрана
   
    printf("Тебе понравилась песня (очень), и ты ...\n");
    printf("\n1. Послушаю, но загружать не буду");
    printf("\n2. Нет бы просто прослушать, так загрузил и слушаю 24/7!");
    scanf("%d", &t);
    while (t<1 || t>2){
        printf(" Попробуйте еще раз:");
        scanf("%d", &t);
        }
        if(t=1) ch+=1;//Если ответ 1, то +1
        if(t=2) ch+=2;//Если ответ 2, то +2
    system("cls");//Очистка экрана
    
    printf("Ты подобрал на улице котенка. Что будешь делать дальше?\n");
    printf("\n1. Отведу в в ветеринарную клинику");
    printf("\n2. Приведу домой, отмою и накормлю");
    scanf("%d", &t);
    while (t<1 || t>2){
        printf("Попробуйте еще раз:");
        scanf("%d", &t);
        }
        if(t=1) ch+=1;//Если ответ 1, то +1
        if(t=2) ch+=2;//Если ответ 2, то +2
    system("cls");//Очистка экрана
   
    printf("Дома есть фосфор, тыква, свечка, книга для великих изобретателей. Твои действия?\n");
    printf("\n1. Прочитаю книжку. Может, смогу из этих материалов создать что-то для получения нобелевской премии");
    printf("\n2. Тут и думать нечего! Сделаю приведение и буду ночью пугать соседей ");
    scanf("%d", &t);
    while (t<1 || t>2){
        printf("Попробуйте еще раз:");
        scanf("%d", &t);
        }
        if(t=1) ch+=1;//Если ответ 1, то +1
        if(t=2) ch+=2;//Если ответ 2, то +2

    system("cls");//Очистка экрана
    
    printf("В субботу твой лучший друг разбудил тебя в 7 утра...\n");
    printf("\n1.  я уже час назад встал");
    printf("\n2. Молча, с ноги, чтоб впредь неповадно было!");
    scanf("%d", &t);
    while (t<1 || t>2){
        printf(" Попробуйте еще раз:");
        scanf("%d", &t);
        }
        if(t=1) ch+=1;//Если ответ 1, то +1
        if(t=2) ch+=2;//Если ответ 2, то +2

    system("cls");//Очистка экрана
  
    printf("Тебе предложили сыграть в любительском театре. Согласишься или откажешься?\n");
    printf("\n1. Откажусь. Я лучше посмотрю интеллектуальное шоу");
    printf("\n2. Вы позвали нужного человека! ");
    scanf("%d", &t);
    while (t<1 || t>2){
        printf(" Попробуйте еще раз:");
        scanf("%d", &t);
        }
        if(t=1) ch+=1;//Если ответ 1, то +1
        if(t=2) ch+=2;//Если ответ 2, то +2

    if(ch=6) printf("Ты еще пока не ученый, но кое в чем разбираешься. Достигай успехов в учебе и продолжай интересоваться окружающим миром!");
    if(ch=12) printf("Вау! Перед нами будущая звезда. Продолжай усердно тренироваться, и вскоре ты станешь самым знаменитым человеком!");

    getch();
    return 0;
    }
Karalina Hovard вне форума Ответить с цитированием
Старый 21.09.2019, 18:43   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,707
По умолчанию

А вы до 2 считать умеете?

Код:
void question_one(int n);
void question_two(int t);
Код:
        case 1: question_one(); break;
        case 2: question_two(); break;
Разницу видите?

И пока вы не задали следущий вопрос - почему оно неправильно работает - быстро выучите разницу между операторами = и ==.
p51x вне форума Ответить с цитированием
Старый 21.09.2019, 20:25   #3
uberchel
Участник клуба
 
Аватар для uberchel
 
Регистрация: 19.01.2009
Сообщений: 1,453
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
Разницу видите?

И пока вы не задали следущий вопрос - почему оно неправильно работает - быстро выучите разницу между операторами = и ==.
Поди просто с паскаля перешел ) да и я бы убрал break у последних case, они там ненужны
uberchel вне форума Ответить с цитированием
Старый 23.09.2019, 11:27   #4
Karalina Hovard
 
Регистрация: 02.03.2019
Сообщений: 8
По умолчанию

Я не совсем поняла, в чем ошибка-то? Дело не в том, что работает неправильно, а в том, что вообще не работает! Я только начала изучать Си и не могу понять, что нужно исправить. Компилятор выдает ошибку: too few arguments to function 'question_one'. И с остальными функциями также. Можете объяснить, что это за ошибка и как ее исправить? Пожалуйста!

Последний раз редактировалось Karalina Hovard; 23.09.2019 в 11:29.
Karalina Hovard вне форума Ответить с цитированием
Старый 23.09.2019, 11:31   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Karalina Hovard Посмотреть сообщение
Компилятор выдает ошибку: too few arguments to function 'question_one'. Можете объяснить, что это за ошибка и как ее исправить? Пожалуйста!
т.е. вы не поняли пост #2


Цитата:
Сообщение от p51x Посмотреть сообщение
А вы до 2 считать умеете?
вот описание функции question_one
Цитата:
Сообщение от Karalina Hovard Посмотреть сообщение
Код:
void question_one(int n)//Первый тест
Видите, что описанная вами функция требует целочисленный параметр ?

Цитата:
Сообщение от Karalina Hovard Посмотреть сообщение
Код:
case 1: question_one();
Вызываете функцию question_one
сколько параметров Вы в неё передаёте?


p.s. тоже самое и с функцией question_two() - вызов не соответствует описанию

p.p.s. компилятор вполне адекватно и понятно сообщил об ошибке " too few arguments to function 'question_one'." - стоило перевести на русский.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 23.09.2019, 12:13   #6
Karalina Hovard
 
Регистрация: 02.03.2019
Сообщений: 8
По умолчанию

То есть мне нужно в () вставить int n и int t? Но я пробовала уже по-разному и просто int, и с переменной. Все равно выдает ошибку. Я все никак не могу понять, как эти функции-то правильно вызвать. Если я пишу question_one(int n), компилятор выдает: ожидается выражение перед int. А если question_one(n, int) то это тоже ошибка. Что за выражение нужно туда вставить-то? Можете, пожалуйста, объяснить?!
Karalina Hovard вне форума Ответить с цитированием
Старый 23.09.2019, 12:35   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Karalina Hovard Посмотреть сообщение
То есть мне нужно в () вставить int n и int t?
1) откуда Вы взяли этот код? (только не говорите, что Вы его сами написали, у Вас не тот уровень).
2) Вас не смущает, что как не отвечай на quistion_one в результате на ответ влияет только ответ на последний вопрос (Каким ты видишь идеальное путешествие?\n )
остальные вопросы просто так? Это так и задумано?

3) если формально, то сделать код компилируемым можно так:
Код:
        switch(qu){
        case 1: question_one(qu); break;
        case 2: question_two(qu); break;
        }

....
    switch(n){
case 1: case 2: case 3: case 4: case 5:
    pet(n);
    break;
    }

....

    switch(p)
    {
    case 1:case 2:case 3: case 4: case 5:
       eat(p);
       break;
    }

и т.д.
но, в связи с пунктом 2) можно вообще ВСЕ параметры выкинуть.
ведь они Вам не нужны - всё равно на каждом следующем этапе Вам нет необходимости знать, как ответили на предыдущем!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 23.09.2019, 13:05   #8
Desc
Участник клуба
 
Аватар для Desc
 
Регистрация: 21.11.2007
Сообщений: 1,063
По умолчанию

Или так (перед main):
Код:
using namespace std;
void question_one(void);
void question_two(void);
void pet(void);
void eat(void);
void walk(void);
void home(void);
И в каждую функцию внести изменения:
Код:
void question_one(void)//Первый тест
{   int n;
...
...
void pet(void)
{   int p;
...
...
void eat(void)
{   int e;
...
...
void home(void)
{   int h;
...
...
void walk(void)
{   int w;
...
...
void question_two(void)//Второй тест
{   int t;
...
...
Т. е. функции объявляем виртуальными (неявными).
P. S.
С учетом вот этого:
Цитата:
Сообщение от p51x Посмотреть сообщение
выучите разницу между операторами = и ==
(=) -- оператор присваивания.
(==) -- оператор сравнения (равенства).
Такой вариант и вариант из предыдущего поста позволят сделать код компилируемым.

Цитата:
Сообщение от uberchel Посмотреть сообщение
да и я бы убрал break у последних case
они действительно там лишние (как зайцу стоп-сигнал).
I am not a wizard, I am just learning.

Последний раз редактировалось Desc; 23.09.2019 в 13:41.
Desc вне форума Ответить с цитированием
Старый 23.09.2019, 15:30   #9
Karalina Hovard
 
Регистрация: 02.03.2019
Сообщений: 8
По умолчанию

Цитата:
Сообщение от Desc Посмотреть сообщение
Или так (перед main):
Код:
using namespace std;
void question_one(void);
void question_two(void);
void pet(void);
void eat(void);
void walk(void);
void home(void);
И в каждую функцию внести изменения:
Код:
void question_one(void)//Первый тест
{   int n;
...
...
void pet(void)
{   int p;
...
...
void eat(void)
{   int e;
...
...
void home(void)
{   int h;
...
...
void walk(void)
{   int w;
...
...
void question_two(void)//Второй тест
{   int t;
...
...
Т. е. функции объявляем виртуальными (неявными).
P. S.
С учетом вот этого:

(=) -- оператор присваивания.
(==) -- оператор сравнения (равенства).
Такой вариант и вариант из предыдущего поста позволят сделать код компилируемым.


они действительно там лишние (как зайцу стоп-сигнал).
Спасибо, с функциями получилось. Но вылезла ошибка: преобразование в выполнение набора символов недопустимая последовательность байтов. Вот здесь
Цитата:
Сообщение от Karalina Hovard Посмотреть сообщение
printf("\n2. Я в курсе — родители говорили, что меня принёс аист.");
Не подскажите еще и этот вопрос, пожалуйста?
Karalina Hovard вне форума Ответить с цитированием
Старый 23.09.2019, 15:37   #10
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Karalina Hovard Посмотреть сообщение
Но вылезла ошибка: преобразование в выполнение набора символов недопустимая последовательность байтов.
не вижу в этой строчке ничего криминального.

покажите, пожалуйста, скриншот с ошибкой.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как созданный в программе Май Тест тест вставить в проект Ольга ))))) Помощь студентам 11 16.05.2016 17:18
запрограммировать в делфи 7 тест Лири и тест Торстона через базу данных (курсовая на 1-м курсе) mekil Помощь студентам 10 10.06.2014 17:56
Не компилируется код dannae Помощь студентам 5 29.10.2013 00:02
НЕ компилируется swat1193 Помощь студентам 0 23.10.2012 11:16