首页 > 解决方案 > 如何使用 cout

问题描述

在这段代码中,我使用以索引 1;1 开头的 n(矩阵大小)查找数组中的值(可以使用吗?),并且在代码计算 sin 之后(使用代码中的公式)它计算数组中正元素的数量。

我的问题是,我如何使用 cout<< 以显示确凿的数字,而不是在每个 sin 值之后计数?

#include < iostream >
#include < conio.h >
#include < math.h >
using namespace std;
int main ()
{
    int n ;
    float f ;
    cout << "Kvadrat matriciin irembiig oruulnuu:" << endl ;  //Энэ матриц квадрат байна. Яагаад гэвэл i,j = 1,....n.
    cin >> n;
    float A [n] [n] ;
    for ( int i = 1 ; i < n + 1 ; i++)
    {
        for ( int j = 1 ; j < n + 1 ; j++)
        {
            f = j ;
            f  / = 2 ;
            A [i] [j] = float ( sin ( i + f ) ) ;
            cout << "[ " << i << "]" << "[" << j << "]" << A [i] [j] <<endl ;

        if ( A [i] [j] > 0 )
        {
            int count = 0 ;
            count + = count + i ;
        }
        }
    }



    return 0;
}

编辑:因为当我在循环中编写 cout<< 时,它会在计算每个 sin 值后对其进行计数,但在循环之外它会显示错误

编辑2:

#include < iostream >
#include < conio.h >
#include < math.h >
using namespace std;
int main ()
{
    int n ;
    float f ;
    cout << "Kvadrat matriciin irembiig oruulnuu:" << endl ;  //Энэ матриц квадрат байна. Яагаад гэвэл i,j = 1,....n.
    cin >> n;
    float A [n] [n] ;
    for ( int i = 1 ; i < n + 1 ; i++)
    {
        for ( int j = 1 ; j < n + 1 ; j++)
        {
            f = j ;
            f  / = 2 ;
            A [i] [j] = float ( sin ( i + f ) ) ;
            cout << "[ " << i << "]" << "[" << j << "]" << A [i] [j] <<endl ;

        if ( A [i] [j] > 0 )
        {
            int count = 0 ;
            count + = count + i ;
            cout << count << endl ;  //this counts it after each value of sin, meaning it doesn't show one answer but multiple of them 

        }
         cout<<count<<endl;  //when i do this, it says that count wasn't declared
        }
    }



    return 0;
}

标签: c++arrays

解决方案


正如其中一条评论所述,如果您现在开始编写代码,请先阅读一本好的初学者书籍,而不是随意编写代码。

我会指出您代码中的一些错误;一开始可能很难消化,但稍后再回来,您可能会发现有价值的信息。

第一个错误是在你的A数组声明中。在 C++ 中,数组的大小必须是我们所说的常量表达式(或constexpr语言类型)。常量表达式是你的编译器能够评估的东西,它的值在运行时不会改变。因此,由于你的变量n不是一个常量表达式——它可能在运行时改变,即在你的代码执行期间——这个声明是一个错误。正如另一位用户所说,这只有在允许可变大小数组的语言中才有可能。C++ 不是这样的语言。不知何故,您的编译器似乎正在绕过它。

其次,在 C++ 中,数组索引总是从 0 开始,而不是从 1 开始,例如 Fortran。因此,数组的范围是 [0,n-1],而不是 [1,n]。这意味着您的循环是错误的,因为您从 开始1并结束于n. 当您开始时没有问题1(除了代码可能不会按照您的意图执行),但是当您尝试将数组下标为 index 时会出现问题n,因为它不存在。即使它正在工作,这也是一种未定义的行为,您不应该依赖它。当你的输入改变,或者当你的编译器改变,或者当你在另一台机器上运行它时,你可能会得到一个错误或完全不同的输出。

第三,如果您希望仅在计算结束时显示计数器,那么毫无疑问您应该将cout表达式放在for循环之外。因为它在里面,它确实会打印你循环的每个计数,因为它会在你的每次迭代中执行for。此外,count变量是在if块语句内定义的,因此它仅在该块内可见。这意味着如果您尝试访问count之外的变量if,您将无法并且将收到编译器错误——我们说这count是超出范围的。for所以在你的循环之外声明你的计数器,你的最后一个cout将能够“看到”它,因为它们都在main()范围内。

祝你学习顺利。


推荐阅读