数组“双数组[var];”

问题描述 投票:0回答:2

我给出了一个这样的任务:数组 S[j] ( =0,…,7) 至少有一个零元素。编写一个程序来计算该数组的元素之和,直到第一个值为零的元素。

数组必须是双精度的。

我已经尝试过这个。但我得到了 0;

/* S[j] = (  =0,…,7) massivda  bittagina bo‘lsa  ham nolga teng elementi  mavjud. 
 Ushbu massivning qiymati nolga teng bo‘lgan birinchi elementgacha bo‘lgan 
 elementlarning yig‘indisini hisoblash dasturini tuzing. Boshlang‘ich 
 ma’lumotlar: 1, 17, 2, 4, -5, 0, 7, 8. */
 
 #include <iostream>
 
 using namespace std;
 
 int main()
 {
    int j;
    cout << "j:"; cin >>j;
    
    double S[j] = {};
    int P;
    
    for (int i = 0; i >= j-1; i++)
    {
        cout << "S[" << i << "]:"; cin >> S[i];
    }
    
    for (int i = 0; i >= j; i++)
    {
        if (S[i] == 0) break;
        else P += S[i];
    }
    
    cout << P;
    return 0;
 }
c++ arrays g++ double
2个回答
0
投票

像这样的变长数组

double S[j] = {};

其中

j
不是编译时常量表达式,不是标准 C++ 功能。

如果你想处理一个数组,那么你需要像这样动态分配它

double *S = new int[j];

在程序结束时,您需要像这样释放数组

delete [] S;

或使用标准容器

std::vector<double>

两个 for 循环由于其条件而被跳过

for (int i = 0; i >= j-1; i++)

//..

for (int i = 0; i >= j; i++)

如果

j
至少大于
1
,因为
0
不能大于任何正数。

循环应该看起来像

for (int i = 0; i < j; i++)

for (int i = 0; i < j and S[i] != 0; i++)

变量

P
必须初始化为零

int P = 0;

0
投票

有几个问题。

错误是:

  • 原生数组难以管理,VLA 被禁止。更喜欢使用一些标准容器(这里
    vector
    );
  • P
    未初始化。

建议是:

  • 不要以大写字母开头变量标识符,更喜欢小写字母(强烈推荐);

  • 更喜欢使用有意义的名称,(

    sum
    优于
    P
    array
    优于
    S
    );

  • 如果可能的话,组织代码,以便通过靠近在一起的指令进行计算(在计算之前初始化/声明

    sum
    );

  • 更喜欢重要的消息(

    "How many doubles you need?"
    优于
    "j:"

  • 不喜欢使用

    using namespace std

    #包括 #包括

    int main() { 整数j; std::cout << "How many doubles? "; std::cin >>j;

      // fill an "array" with values from the input
      std::vector<double> array;
      for (int i = 0; i < j; i++) {
          double v;
          std::cout << "array[" << i << "]? ";
          std::cin >> v;
          array.push_back(v);
      }   
    
      // sum elements up to the one that is 0
      int sum=0;    
      for (int i = 0; i < array.size(); i++) {
          if (array[i] == 0) break;
          else sum += array[i];
      }   
      std::cout << sum;
      return 0;
    

    }

© www.soinside.com 2019 - 2024. All rights reserved.