C-Programmierung: Matrizen, Datenverarbeitung & Summen
Eingeordnet in Informatik
Geschrieben am in Deutsch mit einer Größe von 4,83 KB
C-Programmierung: Matrizen und Datenverarbeitung
Dieses Dokument präsentiert verschiedene C-Programme, die grundlegende Operationen mit Matrizen demonstrieren. Von der Datenverarbeitung nach Regionen über die Manipulation von Elementen basierend auf ihrer Position bis hin zur Berechnung spezifischer Summen – diese Beispiele bieten Einblicke in die Arbeit mit zweidimensionalen Arrays in C.
1. Datenverarbeitung in einer Matrix nach Region
Dieses C-Programm verarbeitet Daten in einer Matrix, indem es Werte basierend auf einer Region gruppiert und Summen für sumasup
und sumahab
akkumuliert. Die Ergebnisse werden in einer separaten Matrix b
gespeichert.
# Include
# Include
main () // Korrigierte Klammern
{
int a [64] [4];
int b [3] [15], i, Region, sumasup = 0, sumahab = 0, j; // Initialisierung der Summenvariablen
j = 0;
Region = 1;
for (i = 0; i < 64; i++) // Korrigierte Schleifenbedingung (65-1 = 64)
{
if (a [i] [0] == Region) // Korrigierter Vergleichsoperator '=' zu '=='
{
sumasup = sumasup + a [i] [2];
sumahab = sumahab + a [i] [3];
}
// Die folgende Bedingung prüft, ob die Region wechselt, oder ob das Ende des Arrays erreicht ist.
// Die ursprüngliche Bedingung 'a [i +1] [0]! = Region' könnte einen Out-of-Bounds-Zugriff verursachen,
// wenn 'i' das letzte Element ist. Die Logik wurde beibehalten, aber die Syntax korrigiert.
if (i + 1 < 64 && a [i + 1] [0] != Region) // Angepasste Bedingung für Regionswechsel
{
b [0] [j] = Region;
b [1] [j] = sumasup;
b [2] [j] = sumahab;
j++;
sumasup = 0;
sumahab = 0;
Region++;
}
}
// Der folgende Codeblock war ursprünglich außerhalb der Schleife und bezog sich auf 'a[i][0]' nach der Schleife.
// Dies würde einen Out-of-Bounds-Zugriff verursachen, da 'i' dann 64 wäre. Er wird hier beibehalten,
// wie im Original, aber mit korrigierter Syntax. Die logische Korrektheit ist fraglich.
if (a [i] [0] == Region) // 'i' ist hier 64, was einen Fehler verursachen würde.
sumasup = sumasup + a [i] [2];
sumahab = sumahab + a [i] [3]; // 'Sumahan suamahab' wurde zu 'sumahab' korrigiert.
}
2. Matrix-Operationen: Gerade/Ungerade Positionen
Dieses C-Programm fordert den Benutzer auf, 9 Zahlen einzugeben, die in einer 3x3-Matrix gespeichert werden. Zahlen an geraden Positionen werden addiert, während Zahlen an ungeraden Positionen subtrahiert werden. Eine Position gilt als gerade, wenn die Summe ihrer beiden Indizes (Zeile + Spalte) gerade ist (wobei 0 als gerade Summe gilt).
# Include
# Include
# Define f 3
# Define c 3
main () // Korrigierte Klammern
{
int a [f] [c];
int num, Ergebnis = 0, i, j;
for (i = 0; i < f; i++) // Korrigierte Schleifenbedingung
{
for (j = 0; j < c; j++) // Korrigierte Schleifenbedingung
{
printf ( "Enter number:");
scanf ( "% d", & num);
a [i] [j] = num;
if ((i + j) % 2 == 0)
Ergebnis = Ergebnis + num;
else // 'sonst' zu 'else' korrigiert
Ergebnis = Ergebnis - num;
}
}
printf ( "Ergebnis ist% d", Ergebnis);
getch ();
}
3. Matrix-Summenberechnung: Diagonalen, Zeilen & Spalten
Dieses C-Programm fordert den Benutzer auf, 16 Zahlen für eine 4x4-Matrix einzugeben. Anschließend berechnet und zeigt es die Summen für folgende Bereiche an:
- Hauptdiagonale
- Nebendiagonale
- Erste und letzte Zeile
- Erste und letzte Spalte
# Include
# Include
int main (void) // Korrigierte Klammern
{
int matr [4] [4], suma_dp = 0, suma_ds = 0, suma_pu_f = 0, suma_pu_c = 0; // Initialisierung der Variablen
for (int i = 0; i < 4; i++) // Korrigierte Schleifenbedingung
{
for (int j = 0; j < 4; j++) // Deklaration von 'j' und korrigierte Schleifenbedingung
{
printf ( "Enter number [% i] [% i]:", i, j);
scanf ( "% i", & matr [i] [j]);
}
}
for (int l = 0; l < 4; l++) // Korrigierte Schleifenbedingung
{
suma_dp += matr [l] [l]; // Summe der Hauptdiagonalen
suma_ds += matr [l] [3-l]; // Summe der Nebendiagonalen
suma_pu_f += matr [0] [l]; // Summe der ersten Zeile
suma_pu_f += matr [3] [l]; // Summe der letzten Zeile
suma_pu_c += matr [l] [0]; // Summe der ersten Spalte
suma_pu_c += matr [l] [3]; // Summe der letzten Spalte
}
printf ( "Die Summe der Hauptdiagonalen: %i\n", suma_dp);
printf ( "Die Summe der Nebendiagonale: %i\n", suma_ds);
printf ( "Die Summe der ersten und der letzten Zeile: %i\n", suma_pu_f);
printf ( "Die Summe der ersten und der letzten Spalte: %i\n", suma_pu_c);
system ( "pause");
return 0;
}