C ++如何通过阵列的功能,然后把它称为显示阵列的价值观? [英] C++ How to pass arrays to function then have it called to display the values of the arrays?

查看:150
本文介绍了C ++如何通过阵列的功能,然后把它称为显示阵列的价值观?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我更新了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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆