我制作了一个程序,该程序以形状的形式打印出数字。 我希望能够计算选定行的总和,例如我显示3行的形状
1
1 2
1 2 3
1 2
1
如果我想计算第2行的总和,它将把1
和2
加在一起以显示结果。
我将如何实现?
到目前为止,这是我的代码
#include <iostream>
using namespace std;
int main()
{
int i,k=0,n;
int space = n-1;
cout << "Enter amount of rows: ";
cin >> n;
while(k <= n)
{
for(i = 1; i <= k; i++)
cout<<i;
cout<<endl;
k++;
}
k=n;
while (k)
{
k--;
for (i = 1; i <= k; i++)
cout<<i;
cout<<endl;
}
return 0;
}
答案 0 :(得分:1)
由于每行中的数字均以1开头,并且您知道输入n
的行总数,因此可以轻松计算每行中的数字总和。
您可以在第二个while
循环之后添加以下代码:
int rowNo; //For which the sum has to be calculated
cout << "Enter the row for which the sum has to be calculated" << endl;
cin >> rowNo;
int sum = 0;
int totalRows = n * 2 - 1;
if(rowNo <= totalRows)
{
if(rowNo > n)
rowNo = n - rowNo%n;
for (int i = 1; i <= rowNo; i++)
{
sum = sum + i;
}
cout << "Sum is " << sum << endl;
}
else
{
cout << "rowNo: "<< rowNo << " is greater than the total no of rows: " << totalRows << endl;
}
答案 1 :(得分:0)
一旦打印了所有行,就没有简单的方法可以返回并计算特定行上的数字总和。
最简单的方法是计算所有行的数量之和(在打印时)并存储在例如vector。然后,当您需要获取特定行的总和时,只需从向量中获取预先计算的总和即可。
答案 2 :(得分:0)
我不会为您回答家庭作业,但我想给您一些有关如何改进代码以及如何构建能够计算所需行总和的解决方案的想法。 / p>
当用户输入数字时,不要简单地打印形状,而是建立一个包含行信息并可以打印的对象。
class Shape {
...
private:
std::vector<Row> rows;
public:
Shape( int numberOfRows );
void Print();
...
}
另一方面,Row
只能包含有关单行内容的信息
class Row {
...
private:
std::vector<int> content;
public:
void Print();
...
}
您所需要的就是找到一种实现从Row
请求单个Shape
的方法,并计算其总和。这种方法的好处是,您可以轻松地重复2.步骤并一遍又一遍地要求不同的行。
然后您主要需要执行以下步骤
Shape
并将其打印到屏幕上编辑:
我刚刚读到您只有一些基础知识,因此您可能还没有听说过类。因此,IMO最好的选择是将形状存储在一个数组(或多个数组)中,顺便说一句。 std::vector<int>
有点类似于C样式数组(int[]
)。然后,在打印数据并计算单行的总和之后,仍然可以访问数据。