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

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

Восстановить пароль Регистрация
 
Mr_Mario
0 / 0 / 0
Регистрация: 14.07.2015
Сообщений: 2
14.07.2015, 18:13     Массив "hotel", в который пользователь добавляет "жильцов" #1
Дорогие форумчане, помогите мне решить проблему в данной программе!

Суть программы: Есть массив "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;
            }
        }
    }
    
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Raali
572 / 276 / 12
Регистрация: 06.07.2013
Сообщений: 917
Завершенные тесты: 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
Сообщений: 2
14.07.2015, 18:58  [ТС]     Массив "hotel", в который пользователь добавляет "жильцов" #3
Цитата Сообщение от Raali Посмотреть сообщение
заменить на
char hotel[floor][number];
Не помогло. Получается еще больше ошибок. Так как в типе "char" в одном элементе можно вместить один символ,
а если прибавить "*" сколько угодно.
HELLKAR
 Аватар для 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
 Аватар для Zazy
37 / 37 / 11
Регистрация: 14.04.2013
Сообщений: 167
15.07.2015, 16:34     Массив "hotel", в который пользователь добавляет "жильцов" #5
49 строка, вам нужен динамический массив
62 и 63 строка, строки в стили Си сравниваются strcmp();
Yandex
Объявления
15.07.2015, 16:34     Массив "hotel", в который пользователь добавляет "жильцов"
Ответ Создать тему
Опции темы

Текущее время: 16:11. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru