0 / 0 / 0
Регистрация: 04.10.2015
Сообщений: 95

Написанная программа не компилируется, не могу понять в чем дело

11.10.2016, 16:17. Показов 553. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть три файла в одном проекте:
main.cpp
cyber.cpp
cyber.h

//main.cpp:
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
#include <iostream>
#include "cyber.h"
 
using namespace std;
 
int main(){
    int total, station[total], size=1;
    User *user = new User[size];
    cout << "Enter Total Lab Number: ";
    cin >> total;
    char *** lab = new char **[total];
    for(int x=0; x<total; x++){
        cout << "Enter total computer in Lab " << x+1 << ": ";
        cin >> station[x];
        lab[x] = new char *[station[x]];
        for(int y=0; y<station[x]; y++){
            //strcpy(lab[x][y], "empty"); //segmentation error
            lab[x][y] = (char*)&"empty";
        }
    }
 
    //Display the computer lab info
    displayLab(lab, total, station);
 
    double totalCharge = 0;
    int option;
    while(true){
        //Display the menu in proper formatting
        cout << "\t\tCyber Cafe Menu" << endl
            << "1. Log in" << endl
            << "2. Log out" << endl
            << "3. Search user" << endl
            << "4. List lab" << endl
            << "5. Display total charges" << endl
            << "0. Exit" << endl;
        cout << "Option: ";
        cin >> option; // read choice from user
        switch(option){
            case 1: // Log in
                login(lab, total, station, user, size);
                displayLab(lab, total, station); //Display the computer lab info
                break;
            case 2: // Log out
                logout(lab, user, size, totalCharge);
                break;
            case 3: // Search user
                search(user, size);
                break;
            case 4: // List Lab
                list(lab, total, station);
                break;
            case 5: // Display total charges
                displayTotal(totalCharge);
                break;
            case 0: // close the program
                cout << "Program terminated." << endl << endl;
                return 0;
            default: // re-prompt user the menu
                cout << "Wrong input, please try again." << endl << endl;
        }
    }
}
//cyber.cpp:

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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
#include "fstream"
#include <iostream>
#include "cyber.h"
using namespace std;
// This function Log in new user
void login(char ***lab, int total, int station[], User *&user, int &size){
    User *newUser = new User; //create a struct to store the new user temporarily
    bool valid = false;
    //read data from user
    while(valid == false){
        valid = true;
        cout << "Enter 5-digit ID: ";
        cin >> newUser->id;
        //if the id is existed in the user[]
        for(int x=0;x<size;x++){
            if(strcmp(newUser->id, user[x].id) == 0){
                //inform client and reprompt
                cout << "ID existed, please try again." << endl;
                valid = false;
                break;
            }
        }
    }
    valid = false;
    char *empty;
    empty = (char*)&"empty";
    while(valid == false){
        cout << "Enter Lab: ";
        cin >> newUser->lab;
        cout << "Enter Station: ";
        cin >> newUser->station;
        //check for the lab
        for(int x=0; x<total; x++)
            if(newUser->lab == x+1)
                //check for the station
                for(int y=0; y<station[x]; y++)
                    if(newUser->station == y+1)
                        //when the station is empty, then only assign it to user.
                        if(strcmp(lab[x][y], empty) == 0){
                            lab[x][y] = newUser->id;
                            valid = true;
                        } else {
                            cout << "The Lab Station Computer is occupied.\n";
                        }
    }
    valid = false;
    //ask client to input the login time
    while(valid == false){
        cout << "Login Time(HH MM): ";
        cin >> newUser->inHour >> newUser->inMin;
        valid = true;
        if(newUser->inHour > 23 || newUser->inMin > 59){
            valid = false;
            cout << "The time is in 24hours format. please try again." << endl;
        }
    }
    //when user[] is null, perform if
    //if there is info in id, perform else
    if(strcmp(user[0].id, "") == 0){
        user[0] = *newUser;
    } else {
        size+=1; //increase size
        User *temp = new User[size]; //create temp User struct
        for(int x=0; x<size;x++){
            temp[x] = user[x]; //assign all old user[] data to temp[]
            if(x == size-1){
                temp[size-1] = *newUser; //last location for the new user
            }
        }
        user = temp; //assign the data to user[]
    }
}
// This function is used to Log out user that is leaving
void logout(char ***lab, User *&user, int &size, double &totalCharge){
    int target;
    char id[6];
    bool valid = false;
    //read id from user
    while(valid == false){
        cout << "Enter 5-digit ID: ";
        cin >> id;
        for(int x=0;x<size;x++){
            if(strcmp(id, user[x].id) == 0){
                target = x; //when the user is found, set x to target
                valid = true;
                break;
            }
        }
    }
    valid = false;
    //prompt client to input the log out time
    while(valid == false){
        cout << "Logout Time(HH MM): ";
        cin >> user[target].outHour >> user[target].outMin;
        valid = true;
        if(user[target].outHour > 23 || user[target].outMin > 59){
            valid = false;
            cout << "The time is in 24hours format. please try again." << endl;
        }
    }
    //edit the lab table
    strcpy(lab[user[target].lab-1][user[target].station-1], (char*)&"empty");
    //calculate charges in minutes, each minutes = RM0.02
    int login = user[target].inHour *60 + user[target].inMin;
    int logout = user[target].outHour *60 + user[target].outMin;
    // if the logout time is smaller than login time,
    //logout time have to add 24hours as it had passed a day
    if(logout < login){
        logout = logout + (24 * 60);
    }
    user[target].price = (logout - login) * 0.02;
    //print the payment details
    cout << "Payment Amount: RM" << user[target].price << endl << endl;
    //increase total charge
    totalCharge += user[target].price;
    //write the logout info to log file.
    ofstream logfile("log.txt", ios::app);
    logfile << "\n" << user[target].id << ":"
            << user[target].lab << ":"
            << user[target].station << ":"
            << user[target].inHour << "." << user[target].inMin << ":"
            << user[target].outHour << "." << user[target].outMin << ":"
            << user[target].price;
    logfile.close();
 
    //set the user[] smaller
    size-=1;
    // create a temp User struct to store the data without logout user
    User *temp = new User[size];
    for(int x=0; x<size;x++){
        temp[x] = user[x];
        if(x >= target){
            temp[x] = user[x+1];
        }
    }
    user = temp; // user User struct point to temp User struct.
}
// This function is used to Search user by the user id
void search(User user[], int &size){
    char id[6];
    bool valid = false;
    //read data from user
    cout << "Enter 5-digit ID: ";
    cin >> id;
    //search from the user[], if the id matched, print out the user current session info
    for(int x=0;x<size;x++){
        if(strcmp(id, user[x].id) == 0){
            cout << "User ID: " << user[x].id << endl
                << "Lab:\t" << user[x].lab << endl
                << "Station: " << user[x].station << endl
                << "Login Time: " << user[x].inHour << ":" << user[x].inMin << endl << endl;
            valid = true;
            break;
        }
    }
    //if the id is not found in the user[], tell client.
    if(valid == false){
        cout << "User ID: " << id << " not found!" << endl << endl;
    }
}
 
//This function allow the user to choose particular lab for display purposes.
void list(char ***lab, int total, int station[]){
    int num;
    //prompt user to enter lab number
    cout << "Enter Lab number: ";
    cin >> num;
    //if the lab number is not in range, reprompt.
    while(num > total || num <= 0){
        cout << "Lab number not found!" << endl;
        cout << "There is " << total << " lab in this cyber cafe." << endl;
        cout << "Enter Lab number: ";
        cin >> num;
    }
    //formating - Lab: Stations
    cout << "Lab Number\tComputer Stations" << endl
        <<  "----------\t--------------------------------------------" << endl;
    cout << '\t' << num << '\t'; // display lab
    for(int y=0; y<station[num-1]; y++){
        cout << y+1 << ": " << lab[num-1][y] << '\t'; //display station
    }
    cout << endl << "----------\t--------------------------------------------" << endl;
}
 
//This function is used to display total charges of the cyber cafe at particular session
void displayTotal(double totalCharge){
    cout << "Total charges of this session is RM" << totalCharge << endl << endl;
}
 
//This function is used to display the full details of the cyber cafe
void displayLab(char ***lab, int total, int station[]){
    //formating - Lab: Stations
    cout << "Lab Number\tComputer Stations" << endl
        <<  "----------\t--------------------------------------------" << endl;
    for(int x=0; x<total; x++){
        cout << '\t' << x+1 << '\t'; // display lab
        for(int y=0; y<station[x]; y++){
            cout << y+1 << ": " << lab[x][y] << '\t'; //display station
        }
        cout << endl;
    }
    cout << "----------\t--------------------------------------------" << endl;
}
//cyber.h:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <cstring>
using namespace std;
 
struct User{
    char id[6];
    int lab, station, inHour, inMin, outHour, outMin;
    float price;
};
 
void login(char***, int, int[], User*&, int&); // Log in
void logout(char***, User*&, int&, double&); // Log out
void search(User[], int&); // Search user
void list(char***, int, int[]); // List Lab
void displayTotal(double); // Display total charges
void displayLab(char***, int, int[]); // Display the computer lab info
уже как пол дня потратил, чтобы понять почему не компилируется, но так и не понял в чем дело. Ошибок в коде нету, да и все файлы в одном проекте, кириллиц на пути нету
Почему не компилируется? Подскажите кто нибудь
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
11.10.2016, 16:17
Ответы с готовыми решениями:

Не работает программа не могу понять в чём дело.
asm(&quot;movb 0x0,%AH&quot;); asm(&quot;movb 0x10,%al&quot;); asm(&quot;int 0x10&quot;); asm(&quot;movb 0xC,%AH&quot;); asm(&quot;movb 0xE,%AL&quot;); ...

Есть программа, но при при вызове одной функции из main Visual Studio показывает ошибку. Не могу понять в чём дело
#include&lt;iostream&gt; #include&lt;vector&gt; using namespace std; struct Basket { int made; int needed; int money;

не могу понять в чем дело
In file included from /usr/local/lib/gcc47/include/c++/csignal:44:0, from /home/dir/core.h:67: ...

14
Диванный эксперт
Эксперт С++
 Аватар для Max Dark
2549 / 2061 / 971
Регистрация: 09.10.2013
Сообщений: 4,790
Записей в блоге: 4
11.10.2016, 16:19
Цитата Сообщение от almazuulu Посмотреть сообщение
Почему не компилируется?
ошибку хоть какую выдает при компиляции?
0
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
11.10.2016, 16:24
Цитата Сообщение от almazuulu Посмотреть сообщение
уже как пол дня потратил, чтобы понять почему не компилируется, но так и не понял в чем дело. Ошибок в коде нету
помойму последнее предложение противоречит первому, не?

http://rextester.com/VAWIJ69431
0
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,427
11.10.2016, 16:25
Цитата Сообщение от almazuulu Посмотреть сообщение
Ошибок в коде нету
Цитата Сообщение от almazuulu Посмотреть сообщение
Почему не компилируется?
Что значит - не компилируется?
0
Диванный эксперт
Эксперт С++
 Аватар для Max Dark
2549 / 2061 / 971
Регистрация: 09.10.2013
Сообщений: 4,790
Записей в блоге: 4
11.10.2016, 16:29
almazuulu, без проблем собрал и запустил ваш код
возможны проблемы из за отсутствия include guard в cyber.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#ifndef CYBER_H
#define CYBER_H
#include <iostream>
#include <cstring>
using namespace std;
 
struct User{
    char id[6];
    int lab, station, inHour, inMin, outHour, outMin;
    float price;
};
 
void login(char***, int, int[], User*&, int&); // Log in
void logout(char***, User*&, int&, double&); // Log out
void search(User[], int&); // Search user
void list(char***, int, int[]); // List Lab
void displayTotal(double); // Display total charges
void displayLab(char***, int, int[]); // Display the computer lab info
 
#endif
Миниатюры
Написанная программа не компилируется, не могу понять в чем дело  
0
0 / 0 / 0
Регистрация: 04.10.2015
Сообщений: 95
11.10.2016, 16:33  [ТС]
Max Dark,hoggy, nd2,Тупо выдает вот такое сообщение:
Миниатюры
Написанная программа не компилируется, не могу понять в чем дело  
0
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,427
11.10.2016, 16:44
Цитата Сообщение от almazuulu Посмотреть сообщение
Почему не компилируется?
Цитата Сообщение от almazuulu Посмотреть сообщение
Тупо выдает вот такое сообщение:
Это называется: компилируется, но не работает. Среда какая? Отладчиком умеешь пользоваться?
1
0 / 0 / 0
Регистрация: 04.10.2015
Сообщений: 95
11.10.2016, 16:48  [ТС]
nd2, Среда CodeBlocks, отладчиком похоже не умею
0
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,427
11.10.2016, 16:53
В меню что выбираешь?
0
0 / 0 / 0
Регистрация: 04.10.2015
Сообщений: 95
11.10.2016, 16:56  [ТС]
nd2, Просто build and run. Извините что я такой, я просто зеленый еще, не все понимаю
0
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,427
11.10.2016, 16:56
Цитата Сообщение от almazuulu Посмотреть сообщение
int total, station[total]
total неинициализированна, а ты задаёшь ею размер массива.
0
0 / 0 / 0
Регистрация: 04.10.2015
Сообщений: 95
11.10.2016, 17:01  [ТС]
Max Dark, а вы там ничего не меняли? У меня точно также как и у вас но никак не получается все равно
0
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,427
11.10.2016, 17:31
Для начала так сделай:
C++
1
2
3
4
5
6
7
8
9
int main(){
    int total, size=1;
    User *user = new User[size];
    cout << "Enter Total Lab Number: ";
    cin >> total;
    int* station = new int[total];
    char *** lab = new char **[total];
    for(int x=0; x<total; x++){
    //...
1
0 / 0 / 0
Регистрация: 04.10.2015
Сообщений: 95
11.10.2016, 17:34  [ТС]
nd2, спасибо, попробую )
0
Диванный эксперт
Эксперт С++
 Аватар для Max Dark
2549 / 2061 / 971
Регистрация: 09.10.2013
Сообщений: 4,790
Записей в блоге: 4
11.10.2016, 18:03
Цитата Сообщение от almazuulu Посмотреть сообщение
а вы там ничего не меняли?
не менял. собирал g++ 6й версии для 64х бит.

Добавлено через 2 минуты
Сейчас попробовал собрать для 32х бит - собралось, но упало.
Посмотрел код - лучше используйте std::string для строк и std::vector для массивов
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
11.10.2016, 18:03
Помогаю со студенческими работами здесь

Не могу понять в чем дело
Ребята пишу программу по расчету Машины постоянного тока , все написал , проблема в том что у меня полученные значения соответствуют...

Не могу понять в чем дело.
Здраствуйте! Не давно поймал банер на сайте Vkontakte.ru, банер не давал возможности зайти на какой либо сайт кроме как в контакт при этом...

Не могу понять в чём дело
доброй ночи тем кому не спится и тем кто это сообщение увидит утром,доброго утра!!!! ребят помогите в одном деле,комп навернулся...

Не могу понять в чём дело
Ребят всем привет! Объясните мне пожалуйста в чём дело? Я установил ubuntu, после того как я отойду от компьютера и пройдёт время,...

Не могу понять в чем дело!!!
Системная :Asus P5B Deluxe, Intel Core 2 Duo E6600, 2400 MHz,OCZ XTC Platinum 2x1 Гб DDR2-800,ST3320620AS (320 Гб, 7200 RPM,...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

Новые блоги и статьи
Оптимизация производительности Express.js бэкенда
Reangularity 23.05.2025
Express. js заслуженно остаётся одним из самых популярных инструментов для создания бэкенда, но даже он не застрахован от проблем с производительностью. Многие разработчики сталкиваются с ситуацией,. . .
Продвинутая обработка данных с LINQ в C#
stackOverflow 23.05.2025
LINQ (Language Integrated Query) — это фундаментальное изменение парадигмы работы с данными в C#. Простые запросы Where и Select знакомы любому разработчику, но настоящая мощь LINQ раскрывается в. . .
Инфраструктура PKI и сертификатов безопасности
Mr. Docker 23.05.2025
PKI (Public Key Infrastructure) — это невидимый фундамент цифрового доверия, без которого современный интернет просто рассыпался бы как карточный домик. За этой аббревиатурой скрывается целый. . .
Аутентификация OAuth в Python
py-thonny 22.05.2025
OAuth (Open Authorization) — это целый стандарт для делегированного доступа. Звучит занудно? Давайте проще: OAuth позволяет приложениям получать доступ к информации пользователя на сторонних сервисах. . .
Хеширование и соль паролей в веб-приложениях C#
stackOverflow 22.05.2025
Когда-то в начале своей карьеры я тоже грешил простейшими подходами к хранению паролей – MD5-хеширование казалось верхом защиты. Но технологии не стоят на месте, вычислительные мощьности растут, и. . .
Генераторы Python для эффективной обработки данных
AI_Generated 21.05.2025
В Python существует инструмент настолько мощный и в то же время недооценённый, что я часто сравниваю его с тайным оружием в арсенале программиста. Речь идёт о генераторах — одной из самых элегантных. . .
Чем заменить Swagger в .NET WebAPI
stackOverflow 21.05.2025
Если вы создавали Web API на . NET в последние несколько лет, то наверняка сталкивались с зелёным интерфейсом Swagger UI. Этот инструмент стал практически стандартом для документирования и. . .
Использование Linq2Db в проектах C# .NET
UnmanagedCoder 21.05.2025
Среди множества претендентов на корону "идеального ORM" особое место занимает Linq2Db — микро-ORM, балансирующий между мощью полноценных инструментов и легковесностью ручного написания SQL. Что. . .
Реализация Domain-Driven Design с Java
Javaican 20.05.2025
DDD — это настоящий спасательный круг для проектов со сложной бизнес-логикой. Подход, предложенный Эриком Эвансом, позволяет создавать элегантные решения, которые точно отражают реальную предметную. . .
Возможности и нововведения C# 14
stackOverflow 20.05.2025
Выход версии C# 14, который ожидается вместе с . NET 10, приносит ряд интересных нововведений, действительно упрощающих жизнь разработчиков. Вы уже хотите опробовать эти новшества? Не проблема! Просто. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru