Ich habe versucht, dieses Problem zu lösen, aber diese Nachricht erschien nach Abschluss der ersten Testfall Schleife, und wenn ich es Codeforces hochgeladen es ein Laufzeitfehler Urteil bekommt!dynamisch zugewiesene 2D-Array Laufzeitfehler
Gegeben 2D Array von ganzen Zahlen der Größe N * N. Drucke die Summe der perfekten Quadratzahlen.
Zum Beispiel sind 25, 16, 36 und 9 perfekte Quadratzahlen. Aber 35, 17, 23 und 11 sind nicht.
Eingang
Ihre Eingabe besteht aus T (1 ≤ T ≤ 10^2) Testfällen. Jeder Testfall enthält nur 1 ganze Zahlen N (1 ≤ N ≤ 10^2). N Zeilen folgen jeder Zeile enthält N Leerzeichen getrennt ganze Zahlen (1 ≤ Nij ≤ 10^2).
Ausgabe
Für jeden Testfall drucken Sie eine einzelne ganze Zahl in einer einzigen Zeile, die erforderliche Summe.
Beispiel Eingangs
2
2
9 97
8 56
3
1 18 6
16 42 100
25 16 17
output:
9
158
Code:
void main()
{
int n, x, **z, m, i, j, q, p, sum;
float y;
scanf("%d", &x);
for (i = 0; i < x; i++)
{
sum = 0;
scanf("%d", &n);
z = (int**)malloc(sizeof(int*)*n);
for (j = 0; j < n; j++)
z[j] = (int*)malloc(sizeof(int)*n);
for (p = 0; p < n; p++)
for (q = 0; q < n; q++)
{
scanf("%d", &z[p][q]);
m = sqrt(z[p][q]);
y = sqrt(z[p][q]) - m;
if ((y) == 0)
sum += z[p][q];
}
printf("%d\n", sum);
for (j = 0; j < n; j++)
free(z[i]);
free(z);
}
return;}
image of message i get when i debug on VSc++
Update: frei (z [i]) wurde bearbeitet, frei zu sein (z [j])
Update: Danke für jpw es funktionierte gut in VS, aber dieses Mal führte Kompilierungsfehler in Codeforces statt Runtime-Fehler.
[Bitte sehen Sie diese Diskussion darüber, warum nicht zu werfen seine
free(z[j]);
ändern, die es gut laufen macht der Rückgabewert von 'malloc()' und Familie in 'C'.] (http://stackoverflow.com/q/605845/2173917). –
Welchen Kompilierungsfehler bekommst du? –
Datei kann nicht kompiliert werden: program.cpp (25): Fehler C2668: 'sqrt': mehrdeutiger Aufruf der überladenen Funktion es könnte 'long double sqrt (long double)' oder float sqrt (float) 'oder sein 'double sqrt (double)' beim Versuch, die Argumentliste abzugleichen '(int)' –