(C++) 将数组索引和它所保存的元素从一个函数移动到另一个函数

(c++) moving array index and element it holds from function to function

提问人:john wang 提问时间:12/6/2022 最后编辑:273Kjohn wang 更新时间:12/6/2022 访问量:50

问:

我必须创建多个函数(没有限制),main 应该创建 75 个随机数。范围{0 到 100}。在另一个函数中,我需要添加奇数索引元素(称为 S2),并在另一个函数中添加偶数(S1)。另一个函数将打印 S1 和 S2 的答案。 我得到的实际问题:

使用 C++ 代码,编写一个程序来计算偶数的和 S1 和 S2 的乘积 (索引 0, 2, 4, 6, 8, ...)和向量的奇数(索引 1、3、5、7、9、...)元素 (或数组)n 的 A = [0,100] 范围内的 75 个随机整数。首先,创建并初始化 A 在函数 main 中使用 75 个随机整数。其次,even_sum接收的函数, 作为参数 A 和 n,并计算并返回 S1。第三,函数odd_sum 作为参数接收 A 和 n,并计算并返回 S2。最后,一个函数 finalize 接收 S1 和 S2 作为参数,并计算和打印 S1 的乘积 和 S2。

到目前为止,我完成了 main,在它里面创建了唯一的完全随机数。我无法将 Vales 从主功能移动到另一个功能。希望这是有道理的。我对编码很陌生,很想从中学习意见或评论家。

#include<iostream>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <unistd.h>
#include <stdbool.h>
using namespace std;


void odd()

{
    
}

void fill(int array[], int length, int min, int max);//inital
int main()
{
    srand (unsigned(time(NULL)));
    cout<<"random 75 numbers are following: \n";
    int a[75];
    //void fill(int array[], int length, int min, int max);
    fill(a, 75, 1, 100);
    
    for (int i=0;i<75;i++)
    {
        printf("a[%d] = %d\n", i, a[i]);
            }
    
  
}

    void fill(int array[], int length, int min, int max)
{
        int new_num;
        bool unique;//verify if the new number is unique compared to array
        
        for(int i=0; i<length; i++)//generate number, make sure its unique
        {
            do
            {
                new_num=(rand()%(max-min+1))+ min;
                unique= true;
                
                for(int j=0; j<i;j++)
                    if (array[j]==new_num)

                        unique= false;
            }
            while(!unique);
            
            array[i]= new_num;
            void odd();
    }
   
  // game plan is to go from main to odd fuction to even to finialize and in finalize, cout/print the sums
}

C++ 函数 嵌套 void

评论

1赞 Retired Ninja 12/6/2022
试着把注意力集中在一个问题上。我不确定你说的“将值从主函数移动到另一个函数”是什么意思。您将参数(例如数组和长度)传递给函数,那么所有其他函数的工作方式不都一样吗?传递一些值并返回一个值。fill
0赞 Thomas Matthews 12/6/2022
为什么要在函数中声明函数?似乎宁愿这样做。我希望函数声明位于函数的顶部而不是底部。如果要调用函数,请使用语法 。oddodd();

答:

0赞 AsulconS 12/6/2022 #1

该问题要求您计算两个依赖于 A 的总和,然后将这些结果相乘,因此在这种情况下,您可能希望通过将这些总和视为“函数”来模块化您的任务。让我解释一下

  1. 你想计算 A 的奇数索引数之和,所以你考虑了 2 个主要参数:A 及其长度,对吧?因此,让我们这样做:
// Here, you will define the odd_sum function
int odd_sum(int array[], int length)
{
    // Here, you compute the odd-indexed values and accumulate them,
    // For example, you may declare a
    // int sum = 0;
    // and start adding the values within a for loop
    // Finally you return sum
    return sum;
}
  1. 您要计算 A 的偶数索引数的总和,因此您执行的操作与前一个相同,但略有不同:
// Here, you will define the even_sum function
int even_sum(int array[], int length)
{
    // Here, you compute the even-indexed values and accumulate them,
    // For example, you may declare a
    // int sum = 0;
    // and start adding the values within a for loop
    // Finally you return sum
    return sum;
}
  1. 最后,您希望获得这些值并将它们相乘,因此在主函数中执行此操作可能并不困难:
int odd_sum(int array[], int length);
int even_sum(int array[], int length);

int main()
{
    int a[75];
    // Do your generating stuff
    int oddSum = odd_sum(a, 75);
    int evenSum = even_sum(a, 75);
    int product = oddSum * evenSum;
    printf("Product is %d", product);
}