![](/img/trans.png)
[英]What is the issue in my code? Not getting correct output of C++ program
[英]Output not correct for my C++ program
所以,我有以下問題:
將為以下功能編寫函數:
例:
tabl.in :
4
5 8 2 12
1 0 3 16
1 2 1 11
5 7 2 19
tabl.out :
2 1 3
哪里
(12 + 3 + 2 + 5)%10 = 22%10 = 2
22是回文數= 1
1 + 2 + 2 + 1 + 7 + 5 = 18,18/6 = 3
到目前為止,我的代碼是:
#include <fstream>
using namespace std;
ifstream fin("tabl.in");
ofstream fout("tabl.out");
void readn(int Arr[][51], int n) {
for (int i = 1; i <= n; i++)
for (int j = 1; j <= n; j++)
fin >> Arr[i][j];
}
int sumsec(int Arr[][51], int n) {
int s = 0;
float r;
for (int i = 1; i <= n; i++)
s = s + Arr[i][n - i + 1];
r = s % 10;
return r;
}
void pald(int Arr[][51], int n) {
int s = 0, pal = 0;
for (int i = 1; i < n; i++)
s = s + Arr[i][n - i + 1];
while (s != 0) {
pal = pal * 10 + s % 10;
s = s / 10;
}
if (pal == s)
fout << "1 ";
else
fout << "0 ";
}
int ambmd(int Arr[][51], int n) {
int s = 0, k;
float ame;
for (int i = 2; i <= n; i++) {
for (int j = 1; j <= i - 1; j++) {
s = s + Arr[i][j];
k++;
}
}
ame = s / k;
return ame;
}
int main() {
int Arr[51][51], n;
float r, ame;
fin >> n;
readn(Arr, n);
r = sumsec(Arr, n);
fout << r << " ";
pald(Arr, n);
ame = ambmd(Arr, n);
fout << ame;
}
但是我對palindrome()
函數有一個問題:對於示例中的給定數組,我的輸出文件將寫入2 0 3
,而不是2 1 3
。 我究竟做錯了什么?
如果在計算pal
之后, sumsec
與sumsec
相同的方式計算s
,並且s
仍包含總和,則您的pald
函數將起作用。
在您的情況下, while (s != 0) {...}
之后是if (pal == s) {...}
可以重寫為if (pal == 0)
,顯然不是預期的解決方案。 只需在計算pal
之前保存您的總和,然后與保存的總和進行比較即可。
同樣,將用於計算s
循環條件更改為for (int i = 1; i <= n; i++)
。
int s = 0, pal = 0, sum = 0;
for (int i = 1; i <= n; i++)
s = s + Arr[i][n - i + 1];
sum = s;
while (s != 0) {
pal = pal * 10 + s % 10;
s = s / 10;
}
if (pal == sum)
fout << "1 ";
else
fout << "0 ";
您還應該考慮各種注釋以改進代碼,例如不要在pald
函數中重新計算總和。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.