这个问题已经在这里有了答案:

我正在尝试使用一本旧教科书自学C ++,希望您的投入。 我可以在线找到该程序的工作代码,但是我想在尝试完全不同的方法之前使我的代码工作。

我需要编写一个使用3x7二维数组的程序来保存3只猴子在一周中的每日食物消耗。

我需要输出平均每日食物总消耗量,任何猴子的每周食物消耗量最少以及任何猴子的每周最大食物消耗量。

到目前为止,一切正常,除了我的getLeast函数,它的功能听起来很像-使猴子每周的食物消耗最少。 但是,它输出为零,而我的getMost函数似乎可以正常工作。

另外,我欢迎任何可以提供有关如何改进或简化代码的建议的评论。 谢谢阅读!

这是我的代码:

#include<iostream>
using namespace std;

const int numberRows = 3;
const int numberCol = 7;

void getData(int array[][numberCol], int);
double getAverage(int array[][numberCol], int);
int getRowSum(int array[][numberCol], int);
double getAverage(int array[][numberCol], int);
int getLeast(int, int, int);
int getMost(int, int, int);

int main()
{
    int monkeys[numberRows][numberCol];
    int monkey1 = 0, monkey2 = 1, monkey3 = 2, monk1Total, monk2Total, monk3Total, largest, smallest;
    getData(monkeys,numberRows);
    monk1Total = getRowSum(monkeys, monkey1);
    monk2Total = getRowSum(monkeys, monkey2);
    monk3Total = getRowSum(monkeys, monkey3);
    smallest = getLeast(monk1Total, monk2Total, monk3Total);
    largest = getMost(monk1Total, monk2Total, monk3Total);
    cout << "The average daily food consumption by the monkeys was " << getAverage(monkeys, numberRows)/3 << "." << endl;
    cout << "The smallest amount of food eaten by one monkey in a week was: " << smallest << "."<<endl;
    cout << "The largest amount of food eaten by one monkey in a week was: " << largest << "."<<endl;

}
void getData(int monkeys[][numberCol],int numberRows)
{
    for (int rows = 0; rows < numberRows; rows++)
    {
        cout << "Monkey " << (rows + 1) << endl;
        for (int cols = 0; cols < numberCol; cols++)
        {
            cout << " Day " << (cols + 1) << ": ";
            cin >> monkeys[rows][cols];
            while (monkeys[rows][cols] < 0){
                cout << "Cannot accept negative numbers, please try again: ";
                cin >> monkeys[rows][cols];}}
        cout << endl;}}
int getRowSum(int monkeys[][numberCol], int monkeyNum)
{
    int total = 0;

    for (int rows = 0; rows < monkeyNum; rows++)
    {
        for (int cols = 0; cols < numberCol;cols++)
            total += monkeys[rows][cols];}
    return total;
}
double getAverage(int monkeys[][numberCol], int numberRows)
{
    double total = 0;

    for (int cols = 0; cols < numberCol; cols++){
        for (int rows = 0; rows < numberRows; rows++)
            total += monkeys[rows][cols];}
    return (total/(numberCol));
}

int getMost(int monkey1, int monkey2, int monkey3){
    int array[3]{monkey1, monkey2, monkey3};
    int max = array[0];
    for (int count = 0; count < 3; count++)
    {
        if (array[count] > max)
        {
            max = array[count];
        }}
    return max;
}

int getLeast(int monkey1, int monkey2, int monkey3)
{
    int array[3]{monkey1, monkey2, monkey3};
    int min = array[0];

    for (int count = 0; count < 3; count++)
    {
        if (array[count] < min)
        {
            min = array[count];
        }
    }
    return min;
}

#1楼 票数:0 已采纳

您在getRowSum逻辑有缺陷。 采用

int getRowSum(int monkeys[][numberCol], int monkeyNum)
{
   int total = 0;

   for (int cols = 0; cols < numberCol;cols++)
      total += monkeys[monkeyNum][cols];

      return total;
}

我不知道是否修复它可以解决另一个问题。

  ask by Meagan Sikorsky translate from so

未解决问题?本站智能推荐:

2回复

为什么数组从0而不是1开始?(C,C++)[重复]

这个问题已经在这里有了答案: 为什么索引在“ C”中从零开始? 14个答案 并不是真正的代码问题,而是一个疑问,为什么C和C ++上的数组从0开始? 它与某些内部流程有关系吗? 但是为什么那代替 ?
1回复

C++与C的区别&*[重复]

这个问题已经在这里有了答案: 参数c ++中的星号和&符 2答案 我有一个这样的C ++程序: 当我编译时不要显示任何错误。 现在,当我想将此代码用于C程序时,编译器显示错误: 在C ++和C中&和*之间有什么区别?
6回复

C/C++常数[重复]

可能重复: const int = int const? 这些关键字组合有什么区别? 是否可以通过使用指针访问常量的地址来修改常量的值?
2回复

C/C++单冒号[重复]

可能重复: “ unsigned temp:3”是什么意思 我是c / c ++的新手,并且此代码在linux和win32上运行 那么单个冒号对此变量做了什么? 他们指定要使用多少位? 这与某种类型的结构对齐属性有关吗?
2回复

C/C++代码的结果[重复]

可能重复: 未定义的行为和顺序点 以下代码的结果是什么: 为什么我在gcc上得到6作为输出? 为什么不5?
1回复

C++为什么会抛出这个?[重复]

这个问题在这里已有答案: function-try-block和noexcept 1回答 我创建了一个小的异常类。 我想创建一个不抛出的构造函数,但由于某种原因,编译器告诉我构造函数可能抛出,尽管“catch all”处理程序: 。 为什么呢? 谢谢。
2回复

C++重复符号

(苹果电脑) 我尝试了名称空间,包括警卫,编译指示一次等。 基本上,这是结构: 的CMakeLists.txt 游戏/ main.cpp中 游戏/ rtexture.cpp cleanup.h 如果有人问,我确实从教程中获取了这个“cleanup.h”,但是没有找到将
1回复

C程序结果说明[重复]

这个问题在这里已经有了答案: 某些宏语句在 C++ 中可能会产生意想不到的结果? (3 个回答) 1 年前关闭。 亲爱的,我有以下 C