c++ - 如何使用 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;
}
解决方案
正如其中一条评论所述,如果您现在开始编写代码,请先阅读一本好的初学者书籍,而不是随意编写代码。
我会指出您代码中的一些错误;一开始可能很难消化,但稍后再回来,您可能会发现有价值的信息。
第一个错误是在你的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()
范围内。
祝你学习顺利。
推荐阅读
- scala - Scala 语句和表达式 - Var vs Val
- javascript - 如果存在 setTimeout,则输出顺序不同
- javascript - 带有嵌套 React 组件的 onMouse 事件
- java - 麻烦理解这里的递归
- c - 给定一个有序整数数组,并在 c 中找到与给定数字最接近的值。数组可能包含重复值
- angularjs - HTML 的加载速度比 AngularJS 中的数据快
- c# - 在映射同一类的源和目标时避免 CreateMap
- c++ - '_HAS_CXX17' 宏是否可用于自定义项目标头以启用 C++17 语言集功能?
- git - Git:gnutls_handshake()失败:拉函数中的错误
- python - 如何在 Python 中将字典转换为数据框