我的作业问题是修改为先前作业编写的代码,该作业保存了一组(用户指定的大小)测试分数,这样它也可以保存与这些考试分数相关的并行数学学生名称。我们尽可能使用指针和指针表示法。
我的问题发生在早期:我要求学生的全名并使用getline cin对象和cin.ignore()接收输入,以避免将姓氏传递给我的下一个cout / cin请求。 / p>
但是,当我尝试使用指针符号(deref指针)或数组表示法来调用学生名称时,我得到的只是空格。字符串对象对我来说是最难掌握的,所以有可能只是因为我错过了一点关键的推理。我已经回过头来阅读我的文字,但它并不是非常有用,因为它显示了我的确切格式以获得类似的期望结果。此外,大多数在线研究已经产生的信息远远超出像我这样的第一季度c ++学生。很感谢任何形式的帮助!以下是我认为我的问题所在的代码片段:
#include<iostream>
#include<cmath>
#include<iomanip>
#include<string>
using namespace std;
void sortArray(int*, string*, int);
void averageScore(int*, int);
int main()
{
//pointer to point to test scores
int* scores;
string* student;
// integer test to indicate size of array
int test;
// get user defined array size
cout << "How many tests would you like to save?" << endl;
cin >> test;
// define dynamically allocated array scores
scores = new int[test];
student = new string[test];
// for loop to enter each test score as an element of scores array
for (int i = 0; i < test; i++)
{
cout << "Enter the student's name: " << endl;
getline(cin, student[i]);
cin.ignore();
cout << "Enter the test score for " << *(student+i) << " : "<< endl;
cin >> *(scores+i);
编辑:
我玩了它并且能够通过以下代码获得我想要的结果:
for (int i = 0; i < test; i++)
{
cout << "Enter the student's first name: " << endl;
cin >> first;
cout << "Enter the student's last name: " <<endl;
cin >> last;
*(student+i) = first + " " + last;
cout << "Enter the test score for " << *(student+i) << " : "<< endl;
cin >> *(scores+i);