Programmiersprache – die besten Beiträge

Java Programm Gleichungssytem 3. Grades/Cramersche Regel?

Hallo, ich habe ein Programm erstellt, dass mithilfe der Cramerschen Regel ein Gleichungssytem 3. Grades löst (siehe unten) Nur kommt bei dem Ergebnis immer x1=0.0, x2=0.0 und x3=0.0 raus, egal was man eingibt. Ich finde den Fehler einfach nicht, kann mir da bitte jemand weiterhelfen?

LG

import java.util.*;
public class gs3 {
    public static void main(String[] args) {
        Scanner ein = new Scanner(System.in);
        System.out.println("Geben Sie den Koeffizienten des Gleichungssystems ein:");
        double[][] m = new double[3][4];
        for (int i = 0; i < 3; i++) {
            System.out.println("Gleichung " + (i + 1) + ":");
            for (int j = 0; j < 3; j++) {
                System.out.println("Koeffizient x" + (j + 1) + ":");
                m[i][j] = ein.nextDouble();
            }
            System.out.println("Rechte Seite: ");
            m[i][3] = ein.nextDouble();
        }
        double determinanteA = calculateDeterminant(m);
        if (determinanteA == 0) {
            System.out.println("Gleichungssystem nicht lösbar.");
        } else {
            double[] ergebnis = new double[3];
            for (int i = 0; i < 3; i++) {
                double[][] modifiedM = modifyM(m, i);
                double determinantModified = calculateDeterminant(modifiedM);
                ergebnis[i] = determinantModified / determinanteA;
            }
            System.out.println("Lösung: x1 = " + ergebnis[0] + ", x2 = " + ergebnis[1] + ", x3 = " +
                ergebnis[2]);
        }
        ein.close();
    }
    private static double calculateDeterminant(double[][] m) {
        double determinante = 0.0;
        determinante = m[0][0] * (m[1][1] * m[2][2] - m[1][2] * m[2][1]) -
            m[0][1] * (m[1][0] * m[2][2] - m[1][2] * m[2][0]) +
            m[0][2] * (m[1][0] * m[2][1] - m[1][1] * m[2][0]);
        return determinante;
    }
    private static double[][] modifyM(double[][] m, int column) {
        double[][] modifiedM = new double[3][3];
        for (int i = 0; i < 3; i++) {
            for (int j = 0, k = 0; j < 3; j++) {
                if (j != column) {
                    modifiedM[i][k++] = m[i][j];
                }
            }
        }
        return modifiedM;
    }
}

Computer, Programm, programmieren, Java, Array, codieren, Codierung, Informatik, Programmiersprache

Funktionierender 4 Bit Volladdiere in C?

Ich hab eine Aufgabe erhalten und sitze daran schon eine ganze weile:

Aufgabe 3: 4-Bit-Volladdierer Schreiben Sie ein C-Programm, das die Funktionalität eines 4-Bit-Volladdierers simuliert. Ein Nutzer gibt zwei Zahlen a und b ein, die jeweils im Bereich von 0 bis 15 liegen müssen. Liegt eine Zahl außerhalb dieses Bereichs, bricht das Programm mit einer Fehlermeldung ab. Die beiden Zahlen werden binär addiert, wobei für jede Stelle der verwendete Übertrag angezeigt werden muss. Das Ergebnis darf mit 5 Bit ausgegeben werden. Eine Beispielausgabe des Programms kann z.B. wie folgt aussehen:

Enter first number from 0 to 15: 7
Enter second number from 0 to 15: 12

00111 (x)
+ 01100 (y)
c 11000 (Übertrag)
-------------------
10011 (x + y)

Hinweis: Bei dieser Aufgabe bietet es sich an, mit binären Operatoren zu arbeiten.

Mein Programm dafür war erstmal wie folgt. Dabei Handelt es sich um die Programmiersprache C :

Ich hab es auch schon mit Bitweise Operatoren versucht komme aber nicht weiter.
Mir wurde gesagt, man könne mit >> und << Operatoren diese Aufgabe lösen

#include <stdio.h>

// Funktion zur Ausgabe der Binärdarstellung einer Zahl
void printBinary(int num, int bits) {
    for (int i = bits - 1; i >= 0; i--) {
        printf("%d", (num >> i) & 1);
    }
}

int main() {
    // Benutzereingabe für die beiden 4-Bit-Zahlen
    int a, b;
    printf("\n");
    printf("\n");

    // Eingabe für die erste Zahl
    printf(" Tippe deine erste Zahl zwischen 0 und 15 ein: ");
    scanf("%d", &a);

    // Überprüfung der Gültigkeit der Eingabe
    if (a < 0 || a > 15) {
        printf("Error: Zahl liegt nicht zwischen 0 und 15\n");
        printf("    Programm beendet...\n");
        return 1;  // Programm mit Fehlercode beenden
    }

    // Eingabe für die zweite Zahl
    printf("Tippe deine zweite Zahl zwischen 0 und 15 ein ");
    scanf("%d", &b);

    // Überprüfung der Gültigkeit der Eingabe
    if (b < 0 || b > 15) {
        printf("Error: Zahl liegt nicht zwischen 0 und 15\n");
        printf("    Programm beendet...\n");
        return 1;  // Programm mit Fehlercode beenden
    }
    printf("\n");

    // Berechnung des 4-Bit-Volladdierers
    int summe = a + b;
    int uebertrag = (a & b) << 1;

    // Ausgabe des Ergebnisses im binären Format
    printf("  ");
    printBinary(a, 5);
    printf(" (x)\n");

    printf("+ ");
    printBinary(b, 5);
    printf(" (y)\n");

    printf("U ");
    printBinary(uebertrag, 5);
    printf(" (Uebertrag)\n");

    printf("-------------------\n");

    printf("+ ");
    printBinary(summe, 5);
    printf(" (x + y)\n");

    return 0;  // Programm erfolgreich beenden
 }
Programmiersprache

Meistgelesene Beiträge zum Thema Programmiersprache