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;
}

Verwandte Einträge: