我是C ++的新手,使用数组和队列在C ++中编写程序。 我有个问题。 虽然我将数据插入到数组中没有问题,但是当我尝试显示数据时,它没有正确显示数组元素,但没有显示数据显示为空。 请帮我解决这个问题。 我是以错误的方式宣布数组还是其他任何东西 这里我的两个功能如下。 提前谢谢
#include <iostream>
#include<conio.h>
#include<stdlib.h>
#include<Windows.h>
#include<string>
#include<bits/stdc++.h>
#define MAX_SIZE 100
using namespace std;
class Candidate {
private:
int roll_no, i;
string name,last_degree;
char gender;
int arr_roll[MAX_SIZE];
string arr_name[MAX_SIZE];
string arr_last_degree[MAX_SIZE];
char arr_gender[MAX_SIZE];
int rear;
int front;
public:
Candidate() {
rear = 0;
front = 0;
}
void insertIntoQ() {
char a;
do{
cout << "\nEnter The Roll No : ";
cin>>roll_no;
cout << "\nEnter Name of Student";
cin>>name;
cout<< "\n Enter Gender M/F";
cin>>gender;
cout<<"\nEnter Last Degree";
cin>>last_degree;
arr_roll[rear++] = roll_no;
arr_name[rear++] = name;
arr_gender[rear++] = gender;
arr_last_degree[rear++] = last_degree;
cout<<"\n Do you want to continue y/n: ";
cin>>a;
}while(a=='y'||a=='Y');
}
void display_invigilator_m() {
cout << "\n## Queue Size : " << (rear - front);
for (i = front; i < rear; i++){
if(arr_gender[i] == 'm'){
cout<<"\nRoll No : "<<arr_roll[i];
cout<<"\nName : "<<arr_name[i];
cout<<"\nGender : "<<arr_gender[i];
cout<<"\nLast Degree : "<<arr_last_degree[i];
}
}
}
};
这些函数用于插入和显示数据。 我在main函数中调用这些函数 请帮帮我
答案 0 :(得分:1)
每次迭代应增加rear
次,而不是每次分配都增加{。}。
以下内容:
arr_roll[rear++] = roll_no;
arr_name[rear++] = name;
arr_gender[rear++] = gender;
arr_last_degree[rear++] = last_degree;
应该是:
arr_roll[rear] = roll_no;
arr_name[rear] = name;
arr_gender[rear] = gender;
arr_last_degree[rear] = last_degree;
++rear;
(或同等的。)
答案 1 :(得分:1)
如果您正在学习C ++,我建议您对代码进行一些改进。
第一次使用C ++容器,例如std :: vector或std:queue而不是C样式数组(您使用的是旧方法)。
第二,你应该更好地利用面向对象的优势。候选人应该是一个候选人,你的队列应该是一个候选队列。良好的OOP设计是您计划的重要组成部分。以下是一个例子:
#include <stdlib.h>
#include <iostream>
#include <queue>
#include <string>
using namespace std;
class Candidate
{
public:
Candidate(int roll_no, string name, string last_degree, char gender)
: _roll_no(roll_no), _name(name), _last_degree(last_degree), _gender(gender)
{}
void print()
{
cout << "\nCandidate:";
cout << "\n Roll No : " << _roll_no;
cout << "\n Name : " << _name;
cout << "\n Gender : " << _gender;
cout << "\n Last Degree : " << _last_degree;
}
char getGender() { return _gender; }
private:
int _roll_no;
string _name;
string _last_degree;
char _gender;
};
class App
{
public:
void getCandidatesFromUser()
{
char choice;
do
{
int roll_no;
string name;
char gender;
string last_degree;
cout << "\nEnter The Roll No: ";
cin >> roll_no;
cout << "\nEnter Name of Student: ";
cin >> name;
cout << "\nEnter Gender M/F: ";
cin >> gender;
cout << "\nEnter Last Degree: ";
cin >> last_degree;
// Create candidate instance
Candidate candidate(roll_no, name, last_degree, gender);
// Store in queue
_candidates.push(candidate);
cout << "\n Do you want to continue y/n: ";
cin >> choice;
} while (choice == 'y' || choice == 'Y');
}
void display()
{
cout << "\n## Queue Size : " << _candidates.size();
while (!_candidates.empty())
{
Candidate candidate = _candidates.front();
if (candidate.getGender() == 'm' || candidate.getGender() == 'M')
{
candidate.print();
}
_candidates.pop();
}
}
private:
queue<Candidate> _candidates;
};
int main()
{
App myApp;
myApp.getCandidatesFromUser();
myApp.display();
}