C ++如何通过阵列的功能,然后把它称为显示阵列的价值观? [英] C++ How to pass arrays to function then have it called to display the values of the arrays?
问题描述
我更新了code。与你给我的建议!现在,我不知道如何赫克调用主的displayinfo功能?它说太少参数传递然而我为什么要传递参数时,我有所有的数据的另一个函数传递参数!我不知道如何在displayinfo来电显示displayinfos内容
#包括LT&;&iostream的GT;
#包括LT&;阵列GT;
#包括LT&;&了iomanip GT;
#包括LT&;串GT;
使用命名空间std;无效setCourseName(字符串);
inputValue的无效();
诠释的main()
{
inputValue将();
displayinfo(D,B);
}无效displayinfo(INT D,阵列<焦炭,7> B)
{
对于(INT K = 0; K< d; k ++)
{
COUT<< 学期:<< B〔k]的&下;&下; ENDL;
}}
inputValue的无效()
{
焦炭学期;
串courseTitle;
串courseType;
诠释学分;
串lettergrade;
双GPA; 阵列<焦炭,7个sem1array;
阵列下;串,7个sem1coursetitles;
阵列下;串,7个sem1courseTypes;
阵列下;整型,7个sem1credits;
阵列下;串,7个sem1lettergrades;
INT amountOFgrades = 0; COUT<< 有多少等级将要输入今天分1 - 最大7?&所述;&下; ENDL;
CIN>> amountOFgrades;
对于(INT计数器= 0;反< amountOFgrades;反++)
{
布尔valid1 = FALSE;
布尔validCredits = FALSE;
布尔valid3 = FALSE;
布尔valid4 = FALSE;
而(valid1 == FALSE)
{
COUT<< 输入号码学期<< ENDL;
CIN>>学期;
如果(学期=='1'||学期=='2')
{
COUT<< 有效的输入<< ENDL;
sem1array [计数器] =学期;
valid1 = TRUE;
}
其他
{ COUT<< 无效的输入!RE ENTER学期NUMBER 1或2个! << ENDL;
}
}
COUT<< 进入课程名称:<< ENDL;
cin.ignore();
函数getline(CIN,courseTitle);
如果(courseTitle.size()< = 25)
sem1coursetitles [计数器] = courseTitle;
其他
{
COUT<< 课程名称不能超过25个字符;课程名称限制为前25个字符! << ENDL;
courseTitle = courseTitle.substr(0,25);
sem1coursetitles [计数器] = courseTitle;
} 而(valid3 == FALSE)
{
COUT<< 进入课程类型:正常,AP,或荣誉<< ENDL; 函数getline(CIN,courseType);
如果(courseType ==常规|| courseType ==AP|| courseType ==荣誉)
{
sem1courseTypes [计数器] = courseType;
valid3 = TRUE;
}
其他
{
COUT<< 无效的输入!RE ENTER课程类型究竟如何似乎是规则的,AP或荣誉! << ENDL;
}
}
而(validCredits == FALSE)
{
COUT<< 输入赢得课程学分:**两者都可以1-4学分**<< ENDL;
CIN>>学分;
如果(学分== 1 ||学分== 2 ||学分== || 3学分== 4)
{
sem1credits [计数器] =学分;
validCredits = TRUE;
}
其他
{
COUT<< 无效的输出!必须输入号码1-4赚取的积分! << ENDL;
}
}
而(valid4 == FALSE)
{
COUT<< 输入字母等级;大写字母后跟一个加+号或减号 - 如果有一个例子:A +,A-,A,B + ......<< ENDL;
cin.ignore();
函数getline(CIN,lettergrade);
如果(lettergrade ==A +)
{
GPA = 4.0;
sem1lettergrades [计数器] = lettergrade;
valid4 = TRUE;
}
否则,如果(lettergrade ==A)
{
GPA = 4.0;
sem1lettergrades [计数器] = lettergrade;
valid4 = TRUE;
}
否则,如果(lettergrade ==A-)
{
GPA = 3.7;
sem1lettergrades [计数器] = lettergrade;
valid4 = TRUE;
}
否则如果(lettergrade ==B +)
{
GPA = 3.3;
sem1lettergrades [计数器] = lettergrade;
valid4 = TRUE;
}
否则如果(lettergrade ==B)
{
GPA = 3.0;
sem1lettergrades [计数器] = lettergrade;
valid4 = TRUE;
}
否则,如果(lettergrade ==B-)
{
GPA = 2.7;
sem1lettergrades [计数器] = lettergrade;
valid4 = TRUE;
}
否则,如果(lettergrade ==C +)
{
GPA = 2.3;
sem1lettergrades [计数器] = lettergrade;
valid4 = TRUE;
}
否则如果(lettergrade ==C)
{
GPA = 2.0;
sem1lettergrades [计数器] = lettergrade;
valid4 = TRUE;
}
否则,如果(lettergrade ==C-)
{
GPA = 1.7;
sem1lettergrades [计数器] = lettergrade;
valid4 = TRUE;
}
否则,如果(lettergrade ==D +)
{
GPA = 1.3;
sem1lettergrades [计数器] = lettergrade;
valid4 = TRUE;
}
否则如果(lettergrade ==D)
{
GPA = 1.0;
sem1lettergrades [计数器] = lettergrade;
valid4 = TRUE;
}
否则如果(lettergrade ==F)
{
GPA = 0.0;
sem1lettergrades [计数器] = lettergrade;
valid4 = TRUE;
} 其他
{
COUT<< 无效的输入请重新输入字母等级举例:!A +,A-,A,B + ......<< ENDL;
}
}
}
displayinfo(amountOFgrades,sem1array);
}
返回和传递数组是非常简单的。这里是一个非常的简化的版本。
的#include<阵列GT;
#包括LT&;&iostream的GT;的std ::阵列< INT,7个将input_value()
{
的std ::阵列< INT,7个数据;
//填写阵列
返回的数据;
}无效display_array(的std ::阵列< INT,7个数据)
{
对于(INT X:数据)
性病::法院LT&;<点¯x所述&;&下; '';
性病::法院LT&;<的'\\ n';
}诠释的main()
{
的std ::阵列< INT,7个数据=将input_value();
display_array(数据);
}
您可以通过多种事物改善这一点。更改 display_array
取一个const引用,而不是将是最容易的。请通过使用模板(或上),它比较一般。但要确保你了解这些差异和学习。
I Updated the code with the suggestions you gave me! Now i dont know how the heck to call the displayinfo function in main? it says too few arguments passed yet why should i pass arguments when I have another function passing arguments with all the data! I dont know how to call on displayinfo to display displayinfos contents
#include<iostream>
#include<array>
#include<iomanip>
#include<string>
using namespace std;
void setCourseName(string);
void InputValue();
int main()
{
InputValue();
displayinfo( d, b);
}
void displayinfo(int d, array<char, 7> b)
{
for (int k = 0; k < d; k++)
{
cout << "Semester: " << b[k] << endl;
}
}
void InputValue()
{
char semester;
string courseTitle;
string courseType;
int credits;
string lettergrade;
double gpa;
array<char, 7> sem1array;
array<string, 7> sem1coursetitles;
array<string, 7> sem1courseTypes;
array<int, 7> sem1credits;
array<string, 7> sem1lettergrades;
int amountOFgrades = 0;
cout << "How many grades are going to be entered today? min 1 - max 7" << endl;
cin >> amountOFgrades;
for (int counter = 0; counter < amountOFgrades; counter++)
{
bool valid1 = false;
bool validCredits = false;
bool valid3 = false;
bool valid4 = false;
while (valid1 == false)
{
cout << "Enter Semester Number" << endl;
cin >> semester;
if (semester == '1' || semester == '2')
{
cout << "valid input" << endl;
sem1array[counter] = semester;
valid1 = true;
}
else
{
cout << "Invalid Input! RE ENTER SEMESTER NUMBER EITHER 1 OR 2!" << endl;
}
}
cout << "Enter Course Title: " << endl;
cin.ignore();
getline(cin, courseTitle);
if(courseTitle.size() <= 25)
sem1coursetitles[counter] = courseTitle;
else
{
cout << "Course Name Cannot Be More Than 25 Characters; Course name limited to first 25 characters!" << endl;
courseTitle = courseTitle.substr(0, 25);
sem1coursetitles[counter] = courseTitle;
}
while (valid3 == false)
{
cout << "Enter Course Type: Regular, AP, or Honors" << endl;
getline(cin, courseType);
if (courseType == "Regular" || courseType == "AP" || courseType == "Honors")
{
sem1courseTypes[counter] = courseType;
valid3 = true;
}
else
{
cout << "Invalid Input! RE ENTER COURSE TYPE EXACTLY HOW IT APPEARS EITHER Regular, AP, or Honors!" << endl;
}
}
while(validCredits == false)
{
cout << "Enter Credits Earned For Course: **Can Either Be 1-4 Credits**" << endl;
cin >> credits;
if (credits == 1 || credits == 2 || credits == 3 || credits == 4)
{
sem1credits[counter] = credits;
validCredits = true;
}
else
{
cout << "Invalid Output! Must Enter Number 1-4 For Credits Earned!" << endl;
}
}
while (valid4 == false)
{
cout << "Enter Letter Grade; Capital Letter Followed By A Plus + or Minus - If There Is One!Example: A+, A-, A, B+..." << endl;
cin.ignore();
getline(cin, lettergrade);
if (lettergrade == "A+")
{
gpa = 4.0;
sem1lettergrades[counter] = lettergrade;
valid4 = true;
}
else if (lettergrade == "A")
{
gpa = 4.0;
sem1lettergrades[counter] = lettergrade;
valid4 = true;
}
else if (lettergrade == "A-")
{
gpa = 3.7;
sem1lettergrades[counter] = lettergrade;
valid4 = true;
}
else if (lettergrade == "B+")
{
gpa = 3.3;
sem1lettergrades[counter] = lettergrade;
valid4 = true;
}
else if (lettergrade == "B")
{
gpa = 3.0;
sem1lettergrades[counter] = lettergrade;
valid4 = true;
}
else if (lettergrade == "B-")
{
gpa = 2.7;
sem1lettergrades[counter] = lettergrade;
valid4 = true;
}
else if (lettergrade == "C+")
{
gpa = 2.3;
sem1lettergrades[counter] = lettergrade;
valid4 = true;
}
else if (lettergrade == "C")
{
gpa = 2.0;
sem1lettergrades[counter] = lettergrade;
valid4 = true;
}
else if (lettergrade == "C-")
{
gpa = 1.7;
sem1lettergrades[counter] = lettergrade;
valid4 = true;
}
else if (lettergrade == "D+")
{
gpa = 1.3;
sem1lettergrades[counter] = lettergrade;
valid4 = true;
}
else if (lettergrade == "D")
{
gpa = 1.0;
sem1lettergrades[counter] = lettergrade;
valid4 = true;
}
else if (lettergrade == "F")
{
gpa = 0.0;
sem1lettergrades[counter] = lettergrade;
valid4 = true;
}
else
{
cout << "Invalid Input! Please Re-Enter Letter Grade! Example: A+, A-, A, B+..." << endl;
}
}
}
displayinfo(amountOFgrades, sem1array);
}
Return and passing arrays is very straight forward. Here is a very simplified version.
#include <array>
#include <iostream>
std::array<int, 7> input_value()
{
std::array<int, 7> data;
// fill array
return data;
}
void display_array(std::array<int,7> data)
{
for (int x : data)
std::cout << x << ' ';
std::cout << '\n';
}
int main()
{
std::array<int,7> data = input_value();
display_array(data);
}
You can improve this by multiple things. Changing display_array
to take a const reference instead would be easiest. Make it more general by using templates (or spans). But make sure you understand the differences and learn.
这篇关于C ++如何通过阵列的功能,然后把它称为显示阵列的价值观?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!