Also, ich habe folgendes Problem:Ausgang nicht richtig für meine C++ Programm
- Aus der Datei tabl.in eine Reihe n gelesen werden (n < = 50).
- Danach wird ein quadratisches Array mit n Zeilen und n Spalten gelesen werden; Alle Zahlen im Array bestehen aus maximal 2 Ziffern.
- Angezeigt in der Datei tabl.out, der Modulo zwischen der Summe der Zahlen auf der zweiten Diagonale des Arrays und 10, wenn die Summe Palindrom (true = 1, false = 0), und das arithmetische Mittel der Elemente unterhalb der Hauptdiagonalen.
Wird Schreibfunktionen für:
- das Array zu lesen
- Berechnung des Betriebs Summe von Nebendiagonale% 10
- prüft wird, ob das vorherige Ergebnis es Palindrom ist
- Berechnung des arithmetischen Mittels unterhalb der Hauptdiagonalen
Beispiel:
tabl.in:
4
5 8 2 12
1 0 3 16
1 2 1 11
5 7 2 19
tabl.out:
2 1 3
wo
(12 + 3 + 2 + 5)% 10 = 22% 10 = 2
22 ist Palindrom = 1
1 + 2 + 2 + 1 + 7 + 5 = 18, 18/6 = 3
Mein Code so weit ist:
#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;
}
Aber ich habe eine Problem mit der palindrome()
Funktion: meine Ausgabedatei wird 2 0 3
für das angegebene Array aus dem Beispiel anstelle von 2 1 3
geschrieben haben. Was mache ich falsch?
Wozu braucht 'pald()' das Array? – CinCout
Palindrom-Funktion für die Modulo ergab nach der Operation der Summe für Elemente aus sekundären Diag geteilt durch 10. Sie finden die Antwort auf Algorithmus oben im Code: (12 + 3 + 2 + 5)% 10 = 22% 10 = 2 .... 22 ist palindrome = 1 –
Gibt es einen Grund, warum Sie nicht 'std :: vector' (oder gar' std :: array') anstelle von C-Arrays verwenden? Neben den Stream-Operatoren ist dies C-Code, nicht C++. –