Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Mr_Mario
0 / 0 / 0
Регистрация: 14.07.2015
Сообщений: 5
#1

Массив "hotel", в который пользователь добавляет "жильцов" - C++

14.07.2015, 18:13. Просмотров 254. Ответов 4
Метки нет (Все метки)

Дорогие форумчане, помогите мне решить проблему в данной программе!

Суть программы: Есть массив "hotel", в который пользователь добавляет "жильцов" (присваивает значения переменным из массива), вводит он их с клавиатуры. Так же если пользователь "не хочет никого туда заселять", он вводит вместо "имени заселяемого" слово "нет!", что присваивает переменной значение "свободен". Либо если он вообще не хочет "никого заселять", он вводит слово "стоп!", что останавливает игру. И еще при начале игры, всем переменным массива "hotel" присваиваются значения "свободен".

Теперь о проблеме: при выборе пункта "начать играть", выводится такая ошибка:
11 [main] ____________ 1336 cygwin_exception::open_stackdumpfile: Dumping stack trace to ____________.exe.stackdump
ВЫПОЛНЕНИЕ FAILED (значение выхода 35*584,, общее время: 2s)

Вот сам код программы:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;
 
void play(int floor, int number);
void help();
int main()
{
    int user_answer, floor, number;
    floor = 3;
    number = 5;
    do {
       cout <<"Меню игры: \n"; 
       cout <<"1. Начать игру.\n";
       cout <<"2. Строительсво гостиницы.\n";
       cout <<"3. Справочник по игре.\n";
       cout <<"4. Выход из игры.\n";
    do {
        cout <<"Выбранный вариант: ";
        cin >> user_answer;
    } while(user_answer < 1 || user_answer > 4);
    switch(user_answer){
        case 1:
            play(floor, number);
            break;
        case 2:
            // изменение параметров массива "гостиницы"
            cout <<"Вы вошли в режим строительства:\n";
            cout <<"Введите количество этажей:";
            cin >> floor;
            cout <<"Введите колчество номеров:";
            cin >> number;
            break;
        case 3:
            cout <<"Справочник, появится в новой версии.";
            break;
        case 4:
            cout <<"Игра окончена!";
            break;
    }
    } while(user_answer != 4);
    
    return 0;
}
void play(int floor, int number)
{
    int t, i;
    char* hotel[floor][number];
    //присваивание всем элементам массива, значения "свободен"
    for(t = 0; t < floor; t++){
        for(i = 0; i < number; i++){
            strcpy(hotel[t][i], "свободен");
        }
    }
    cout <<"Регистрация жильцов гостиницы:\n";
    //"заселение жильцов в отель" 
    for(t = 0; t < floor; t++){
        for(i = 0; i < number; i++){
            cout <<"Этаж " << t <<", номер " << i <<":";
            gets(hotel[t][i]);
            if(hotel[t][i] == "нет!") strcpy(hotel[t][i], "свободен"); //если не хочешь заселять номер.
            if(hotel[t][i] == "стоп!"){  // если вообще ни хочешь ничего делать.
                strcpy(hotel[t][i], "свободен");
                return;
            }
        }
    }
    
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.07.2015, 18:13     Массив "hotel", в который пользователь добавляет "жильцов"
Посмотрите здесь:

C++ "НОК трех чисел" и "Площадь треугольника"
"вставка" с "заменой" текста в файле. C++
C++ Не работает "setlocale( LC_ALL,"Russian" )"
Невозможно преобразовать "overloaded-function" в "LPDSENUMCALLBACKW" C++
Сокращение слов (например, "напряженность"- "напр-ть") C++
C++ Ошибка: namespace "geoo" has no member "ch"
Результаты денежной лотереи подано таблицей выигрышных номеров "А" и таблицей выигрышей в гривне "С", где с (и C++
Class "IEntity" не содержит члена "m_pEntityId" C++
Во введённом предложении заменить все сочитания "ах" на "ух" C++
Несовместимые типы операндов ("HKL" и "int") C++
C++ Не корректно считает перегрузку оператора "-" после "+"
C++ Ошибки "system" is ambiguous и identifier "_getch" is undefined

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Raali
622 / 326 / 34
Регистрация: 06.07.2013
Сообщений: 1,054
Завершенные тесты: 1
14.07.2015, 18:45     Массив "hotel", в который пользователь добавляет "жильцов" #2
Цитата Сообщение от Mr_Mario Посмотреть сообщение
char* hotel[floor][number];
заменить на
char hotel[floor][number];
Mr_Mario
0 / 0 / 0
Регистрация: 14.07.2015
Сообщений: 5
14.07.2015, 18:58  [ТС]     Массив "hotel", в который пользователь добавляет "жильцов" #3
Цитата Сообщение от Raali Посмотреть сообщение
заменить на
char hotel[floor][number];
Не помогло. Получается еще больше ошибок. Так как в типе "char" в одном элементе можно вместить один символ,
а если прибавить "*" сколько угодно.
HELLKAR
14 / 14 / 7
Регистрация: 11.04.2015
Сообщений: 50
Завершенные тесты: 1
15.07.2015, 14:41     Массив "hotel", в который пользователь добавляет "жильцов" #4
Попробуй немного изменить главную функцию:
C++
1
2
3
4
5
6
int main()
{
    setlocale(LC_ALL,"Russian");
    int user_answer, floor, number;
    floor = 3;
    number = 5;
И еще пробуй использовать другой компилятор, а не GCC.
Может просто не хватает нужных библиотек для этого компилятора
Zazy
39 / 39 / 11
Регистрация: 14.04.2013
Сообщений: 171
15.07.2015, 16:34     Массив "hotel", в который пользователь добавляет "жильцов" #5
49 строка, вам нужен динамический массив
62 и 63 строка, строки в стили Си сравниваются strcmp();
Yandex
Объявления
15.07.2015, 16:34     Массив "hotel", в который пользователь добавляет "жильцов"
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru