C++で作業するのが初めてのので、エラーがどこにあるのかを見つけるのが難しいです。私のコードがassignGate
という呼出しに達すると、それは動作を停止します。私は行を削除して私のプログラムを試してみました。だから問題は、その機能の可能性が高いですが、私はそれに間違って何かを見ることはできません。関数呼び出し時にC++プログラムが停止する
#include "stdafx.h"
#include <stdio.h>
#include <iostream>
#include <string>
#include <fstream>
using namespace std;
struct node {
string code;
int flight;
int time;
string gate;
node *next;
};
bool isEmpty(node *head);
void insert(node *&head, node *&last, string code, int flight, int time);
void remove(node *&head, node *&last);
void assignGate(node *&head, int gates);
void print(node *&head);
int main()
{
int gates;
bool x = false;
string code;
int flight, time, gate;
node *head = NULL;
node *last = NULL;
cout << "Welcome to Gate Scheduler.\n";
ifstream file("FlightList.txt");
if (!file) {
cout << "Unable to open text file. \n";
cout << "Make sure file is in correct location then restart program. \n";
}
while (file >> code >> flight >> time) {
insert(head, last, code, flight, time);
}
cout << "Please enter the max number of gates avaliable:";
cin >> gates;
assignGate(head, gates);
cout << "\n";
print(head);
return 0;
}
bool isEmpty(node *head) {
if (head == NULL) {
return true;
}
else {
return false;
}
}
void insert(node *&head, node *&last, string code, int flight, int time) {
node *temp = new node;
temp->flight = flight;
temp->code = code;
temp->time = time;
temp->next = NULL;
if (isEmpty(head)) {
head = temp;
last = temp;
}
else {
last->next = temp;
last = temp;
}
}
void remove(node *&head, node *&last) {
if (isEmpty(head)) {
cout << "The list is already empty \n";
}
else if (head == last) {
delete head;
head = NULL;
last = NULL;
}
else {
node *temp = head;
head = head->next;
delete temp;
}
}
void assignGate(node *&head, int gates) {
int y = 0;
int gate[6];
node* temp = head;
while (temp->next != NULL) {
if (temp->time > 2300 || temp->time < 600) {
temp->gate = "N/A: Plane lands outside of airport operating hours.";
}
else {
for (y = 0; y <= gates; ++y) {
if (gate[y] == NULL) {
temp->gate = y;
}
else if (gate[y] + 100 < temp->time) {
temp->gate = y;
}
}
if (temp->gate != "0" || "1" || "2" || "3" || "4") {
temp->gate == "All gate are full at this time";
}
}
}
}
void print(node *&head) {
node* temp = head;
while (temp->next != NULL) {
cout << "Flight " << temp->code << " " << temp->flight << " will be at gate " << temp->gate << "\n";
temp = temp->next;
}
}
「assignGate」には多くの問題がありますが、それらはすべて、良い本を使って解決できる基本的なC++ルールです。 – DeiDei
私はC++でプログラミングするのが初めてだと言いましたが、私のコードはデバッグする際にエラーが出ません。だからもしあなたが少なくとも私がそれを感謝するだろうエラーを修正する正しい方向に私を指すことができる。ありがとう! – mathmaster12
'assignGate'関数で 'gates'引数として入力するものは何ですか? 'ファイル'に1行があり、ゲート値が1より大きい場合、 'assignGate'は予期せず終了します –