Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/153.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 字符串数组/字符数组_C++_Arrays - Fatal编程技术网

C++ 字符串数组/字符数组

C++ 字符串数组/字符数组,c++,arrays,C++,Arrays,这就是我要做的: 一位老师要求所有的学生按照他们的名字排成一行。例如,在一节课上,艾米将排在队伍的最前面,尤兰达将排在队伍的最后。编写一个程序,提示用户输入课堂上的学生人数,然后循环读取这么多的名字。一旦所有的名字都读过了,报告哪个学生会在队伍的前面,哪个学生会在队伍的末尾。你可以假设没有两个学生有相同的名字。输入验证:不接受学生人数小于1或大于25的数字 这就是我到目前为止所做的: #include <iostream> #include <iomanip> #incl

这就是我要做的:

一位老师要求所有的学生按照他们的名字排成一行。例如,在一节课上,艾米将排在队伍的最前面,尤兰达将排在队伍的最后。编写一个程序,提示用户输入课堂上的学生人数,然后循环读取这么多的名字。一旦所有的名字都读过了,报告哪个学生会在队伍的前面,哪个学生会在队伍的末尾。你可以假设没有两个学生有相同的名字。输入验证:不接受学生人数小于1或大于25的数字

这就是我到目前为止所做的:

#include <iostream>
#include <iomanip>
#include <string>
using namespace std;

int main()
{
    int StudentNum;

    cout << "How many student are in the class?\n";
    cin >> StudentNum;

    char sname[StudentNum + 1][25];
    if (StudentNum < 1 || StudentNum > 25)
    {
    cout << "Please enter a number between 1-25 and try again\n"; 
    return 0;
    }

    for (int i = 1; i <= StudentNum; i++); 
    {
        cout << "Please enter the name of student #" << i << endl;
        cin >> sname[i];        
    }   
    for (int output = 0; output <=StudentNum; output++);
    {
    cout << endl << sname[output] << endl;
    } 
    system ("pause");
    return 0;
}
#包括
#包括
#包括
使用名称空间std;
int main()
{
int StudentNum;
cout>StudentNum;
charsname[StudentNum+1][25];
如果(StudentNum<1 | | StudentNum>25)
{

cout您无法创建这样的数组,因为它的长度必须在编译时已知(即,它不能是表达式的结果,例如
StudentNum+1

您可以解决这个问题,因为根据问题定义,您知道数组大小的上限,因此可以将其用作编译时常量

但是,这个问题根本不需要使用数组就可以解决。请仔细阅读措辞

无阵列解决方案提示:将阵列视为一张纸(变量)所有的名字都是一个接一个地写的。不使用数组意味着你必须能够解决这个问题,而不需要同时查看所有的名字。如果我只允许你一个接一个地查看这些名字,你怎么会得到答案


另一个提示:如果班上有数万亿名学生(唯一的名字不少于数万亿),那么这个问题仍然可以解决,也就是说,任何时候计算机内存中可能容纳的学生都不多。

你不能创建这样的数组,因为它的长度必须在编译时知道(即,它不能是表达式的结果,例如
StudentNum+1

您可以解决这个问题,因为根据问题定义,您知道数组大小的上限,因此可以将其用作编译时常量

但是,这个问题根本不需要使用数组就可以解决。请仔细阅读措辞

无阵列解决方案提示:将阵列视为一张纸(变量)所有的名字都是一个接一个地写的。不使用数组意味着你必须能够解决这个问题,而不需要同时查看所有的名字。如果我只允许你一个接一个地查看这些名字,你怎么会得到答案


另一个提示:如果班上有数万亿名学生(唯一的名字不少于),这个问题仍然是可以解决的,也就是说,任何时候计算机内存中可能容纳的学生都不多。

C++数组维度必须在编译时已知(即不依赖于运行时用户输入的变量)。请改用字符串:

string sname[25];

如果您使用的不仅仅是
char
数组,还可以使用。

C++数组维度必须在编译时已知(即不依赖于运行时用户输入的变量)。请改用字符串:

string sname[25];

如果您使用的不是字符数组,还可以使用。

想想问题陈述的实际要求。您的程序只需要按字母顺序输出名字和姓氏。您真的需要存储所有的名字吗?

想想问题陈述的实际要求是什么king for。你的程序只需要按字母顺序输出名字和姓氏。你真的需要存储所有的名字吗?

只是为了好玩,我会这样做。除非你准备好向你的老师解释它是如何工作的,否则不要交这个

struct MinMax {
    std::string min;
    std::string max;
    MinMax& operator+(const std::string& kid) {
        if( min.empty() || kid < min) min = kid;
        if( max.empty() || kid > max) max = kid;
        return *this;
    }
};

int main() {
    int nKids;
    std::cout << "How many students? " << std::flush;
    std::cin >> nKids;

    std::cout << "Enter students' names, followed by EOF\n";
    MinMax mm(std::accumulate(
        std::istream_iterator<std::string>(std::cin),
        std::istream_iterator<std::string>(),
        MinMax()));
    std::cout << mm.min << ", " << mm.max << "\n";
}
struct MinMax{
std::字符串最小值;
std::字符串最大值;
最小值和运算符+(常量标准::字符串和基德){
如果(最小值为空()| | kidmax)max=kid;
归还*这个;
}
};
int main(){
int-nKids;
std::cout-nKids;

std::cout只是为了好玩,我会这样做。除非你准备好向你的老师解释它是如何工作的,否则不要交这个

struct MinMax {
    std::string min;
    std::string max;
    MinMax& operator+(const std::string& kid) {
        if( min.empty() || kid < min) min = kid;
        if( max.empty() || kid > max) max = kid;
        return *this;
    }
};

int main() {
    int nKids;
    std::cout << "How many students? " << std::flush;
    std::cin >> nKids;

    std::cout << "Enter students' names, followed by EOF\n";
    MinMax mm(std::accumulate(
        std::istream_iterator<std::string>(std::cin),
        std::istream_iterator<std::string>(),
        MinMax()));
    std::cout << mm.min << ", " << mm.max << "\n";
}
struct MinMax{
std::字符串最小值;
std::字符串最大值;
最小值和运算符+(常量标准::字符串和基德){
如果(最小值为空()| | kidmax)max=kid;
归还*这个;
}
};
int main(){
int-nKids;
std::cout-nKids;

std::cout那么,在不知道用户输入之前要存储的对象的实际数量的情况下,在变量中存储内容的最佳方法是什么?你必须给我一个提示。这个问题让我很生气哈哈……我知道我可以为所有25个名称创建变量,但我需要一个简单实用的方法way@JoshLake字体你为什么要把所有的数组中的e个名称?我不想先创建单独的变量,然后再执行一堆if语句。我也不想使用switch。@乔什莱克:这不是我问题的答案。我知道你为什么认为你需要数组。我想让你考虑一下。我想要的答案是“将所有学生的名字存储在数组中”.你为什么要存储所有的学生姓名?另外,请看我即将进行的更新。那么,在不知道用户输入之前要存储的对象的实际数量的情况下,在变量中存储某些内容的最佳方法是什么?你必须给我一个提示。这个问题让我非常生气哈哈…我知道我可以为所有25个n的对象创建变量但是我需要一个简单实用的way@JoshLake:为什么要将所有名称放在一个数组中?我不想创建单独的变量,然后执行一系列其他if语句。我也不想使用switch。@JoshLake:这不是我问题的答案。我知道你为什么认为需要数组。我想