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

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

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

Author24 — интернет-сервис помощи студентам
Есть три файла в одном проекте:
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
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
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;); ...

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

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

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

14
шКодер самоучка
2227 / 1921 / 927
Регистрация: 09.10.2013
Сообщений: 4,266
Записей в блоге: 7
11.10.2016, 16:19 2
Цитата Сообщение от almazuulu Посмотреть сообщение
Почему не компилируется?
ошибку хоть какую выдает при компиляции?
0
Эксперт С++
8739 / 4317 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
11.10.2016, 16:24 3
Цитата Сообщение от almazuulu Посмотреть сообщение
уже как пол дня потратил, чтобы понять почему не компилируется, но так и не понял в чем дело. Ошибок в коде нету
помойму последнее предложение противоречит первому, не?

http://rextester.com/VAWIJ69431
0
nd2
3437 / 2816 / 1249
Регистрация: 29.01.2016
Сообщений: 9,426
11.10.2016, 16:25 4
Цитата Сообщение от almazuulu Посмотреть сообщение
Ошибок в коде нету
Цитата Сообщение от almazuulu Посмотреть сообщение
Почему не компилируется?
Что значит - не компилируется?
0
шКодер самоучка
2227 / 1921 / 927
Регистрация: 09.10.2013
Сообщений: 4,266
Записей в блоге: 7
11.10.2016, 16:29 5
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  [ТС] 6
Max Dark,hoggy, nd2,Тупо выдает вот такое сообщение:
Миниатюры
Написанная программа не компилируется, не могу понять в чем дело  
0
nd2
3437 / 2816 / 1249
Регистрация: 29.01.2016
Сообщений: 9,426
11.10.2016, 16:44 7
Цитата Сообщение от almazuulu Посмотреть сообщение
Почему не компилируется?
Цитата Сообщение от almazuulu Посмотреть сообщение
Тупо выдает вот такое сообщение:
Это называется: компилируется, но не работает. Среда какая? Отладчиком умеешь пользоваться?
1
0 / 0 / 0
Регистрация: 04.10.2015
Сообщений: 95
11.10.2016, 16:48  [ТС] 8
nd2, Среда CodeBlocks, отладчиком похоже не умею
0
nd2
3437 / 2816 / 1249
Регистрация: 29.01.2016
Сообщений: 9,426
11.10.2016, 16:53 9
В меню что выбираешь?
0
0 / 0 / 0
Регистрация: 04.10.2015
Сообщений: 95
11.10.2016, 16:56  [ТС] 10
nd2, Просто build and run. Извините что я такой, я просто зеленый еще, не все понимаю
0
nd2
3437 / 2816 / 1249
Регистрация: 29.01.2016
Сообщений: 9,426
11.10.2016, 16:56 11
Цитата Сообщение от almazuulu Посмотреть сообщение
int total, station[total]
total неинициализированна, а ты задаёшь ею размер массива.
0
0 / 0 / 0
Регистрация: 04.10.2015
Сообщений: 95
11.10.2016, 17:01  [ТС] 12
Max Dark, а вы там ничего не меняли? У меня точно также как и у вас но никак не получается все равно
0
nd2
3437 / 2816 / 1249
Регистрация: 29.01.2016
Сообщений: 9,426
11.10.2016, 17:31 13
Для начала так сделай:
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  [ТС] 14
nd2, спасибо, попробую )
0
шКодер самоучка
2227 / 1921 / 927
Регистрация: 09.10.2013
Сообщений: 4,266
Записей в блоге: 7
11.10.2016, 18:03 15
Цитата Сообщение от almazuulu Посмотреть сообщение
а вы там ничего не меняли?
не менял. собирал g++ 6й версии для 64х бит.

Добавлено через 2 минуты
Сейчас попробовал собрать для 32х бит - собралось, но упало.
Посмотрел код - лучше используйте std::string для строк и std::vector для массивов
0
11.10.2016, 18:03
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.10.2016, 18:03
Помогаю со студенческими работами здесь

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

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

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

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

не могу понять, в чем дело...
Стояло у меня две планки 2+1 оперативки DDR2 PC2-6400 (800) одной фирмы NCP но на разных чипах......

не могу понять в чём дело
Доброго всем дня! Объясню ситуацию. на работе корпоративная сеть (домен и т.д.) от Циски идут 3...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru