Matix eingabe



  • Ich habe diesen Code gefunden um eine determinante zu berechnen,
    wie kann ich hier eine Matrix abfrage machen, so dass der Code
    Den anwender die Matrix eingeben lässt
    und nicht im code das verändert werden muss

    // determinante.cpp : Diese Datei enthält die Funktion "main". Hier beginnt und endet die Ausführung des Programms.
    //

    #include "pch.h"
    #include <iostream>
    #include <cmath>
    #include <stdio.h>
    #include <stdlib.h>

    // C++ program to find Deteminant of a matrix

    using namespace std;

    // Dimension of input square matrix
    #define N 5

    // Function to get cofactor of mat[p][q] in temp[][]. n is current
    // dimension of mat[][]
    void getCofactor(int mat[N][N], int temp[N][N], int p, int q, int n)
    {
    int i = 0, j = 0;

    // Looping for each element of the matrix 
    for (int row = 0; row < n; row++)
    {
    	for (int col = 0; col < n; col++)
    	{
    		//  Copying into temporary matrix only those element 
    		//  which are not in given row and column 
    		if (row != p && col != q)
    		{
    			temp[i][j++] = mat[row][col];
    
    			// Row is filled, so increase row index and 
    			// reset col index 
    			if (j == n - 1)
    			{
    				j = 0;
    				i++;
    			}
    		}
    	}
    }
    

    }

    /* Recursive function for finding determinant of matrix.
    n is current dimension of mat[][]. */
    int determinantOfMatrix(int mat[N][N], int n)
    {
    int D = 0; // Initialize result

    //  Base case : if matrix contains single element 
    if (n == 1)
    	return mat[0][0];
    
    int temp[N][N]; // To store cofactors 
    
    int sign = 1;  // To store sign multiplier 
    
     // Iterate for each element of first row 
    for (int f = 0; f < n; f++)
    {
    	// Getting Cofactor of mat[0][f] 
    	getCofactor(mat, temp, 0, f, n);
    	D += sign * mat[0][f] * determinantOfMatrix(temp, n - 1);
    
    	// terms are to be added with alternate sign 
    	sign = -sign;
    }
    
    return D;
    

    }

    /* function for displaying the matrix */
    void display(int mat[N][N], int row, int col)
    {
    for (int i = 0; i < row; i++)
    {
    for (int j = 0; j < col; j++)
    printf(" %d", mat[i][j]);
    printf("n");
    }
    }

    // Driver program to test above functions
    int main()
    {
    /* int mat[N][N] = {{6, 1, 1},
    {4, -2, 5},
    {2, 8, 7}}; */

    int mat[N][N] = { {4, 8, 3, 4, 1},
    				 {5, 4, 1, 5, 2},
    				 {1, 3, 2, 5, 4},
    				 {3, 4, 5, 6, 3},
                     {3, 4, 5, 6, 5}
    };
    
    printf("Determinant of the matrix is : %d",
    	determinantOfMatrix(mat, N));
    
    
    return 0;


  • // C++ program to find Deteminant of a matrix

    C?

    Matrix abfrage

    Was soll eine Matrixabfrage sein? Du musst die N*N Werte einlesen und zuweisen.



  • @manni66 ja genau
    Also einfach das der benutzer sagt er will eine 55/44/3*3 (und so weiter) matrix und dann soll er alle werte eingeben und danach wird die matrix wieder ausgegeben.



  • Zwei verschachtelte Schleifen für Zeilen/Spalten und darin dann die Eingabe.

    Da die Ausgabe auch so aufgebaut ist, kannst du damit anfangen.



  • #include "pch.h"
    #include <iostream>

    int main()
    {
    void matrix(float m_koeffizent[i][j], float* m_konstante, int m_groesse)
    {
    int i, j;

    	printf("\nGeben Sie nun die Koeefizientenmatrix A an.");
    	for (i = 0; i < m_groesse; i++)
    	{
    		printf("\nZeile eingeben bitte", i + 1);
    		for (j = 0; j < m_groesse; j++)
    			scanf_s("%f", &m_koeffizent[i][j]);
    	}
    
    	printf("\nGeben Sie nun den konstanten Vektor b an.");
    	for (i = 0; i < m_groesse; i++)
    	{
    		printf("\nZeile eingeben bitte", i + 1);
    		scanf_s("%f", &m_konstante[i]);
    	}
    	return;
    }
    
    int i, j;
    for (i = 0; i < m_groesse; i++)
    {
    	printf("\nZeile ", i + 1);
    	for (j = 0; j < m_groesse; j++)
    		printf("%f", &m_koeffizent[i][j]);
    }
    
    printf("\nkonstanten Vektor b ");
    for (i = 0; i < m_groesse; i++)
    {
    	printf("\nZeile ", i + 1);
    	printf("%f", &m_konstante[i]);
    }
    return;
    

    }

    Das ist momentan mein versuch



  • Funktionen werden außerhalb jeder anderen Funktion definiert.

    Die Sache mit dem N solltest du dir auch mal ansehen.

    Wo kommt der Konstantenvektor auf einmal her?



  • #include "pch.h"
    #include <iostream>
    #include <cmath>

    int main()
    {
    int ig, iw[5][5];

        printf("Geben Sie die Groesse der Matrix an \n");
    	scanf_s("%i", &ig);
    	printf("Die Groesse ist %i", ig);
    	
    	int i, j;
    	
    	printf("\nGeben Sie nun die Koeefizientenmatrix A an.");
    	for (i = 0; i < ig; i++)
    	{
    		printf("\nZeile eingeben bitte", i + 1);
    		for (j = 0; j < ig; j++)
    			scanf_s("%i", &iw [i][j]);
    	}//for scan
    	for (i = 0; i < ig; i++)
    	{
    		printf("\n Der Wert ist", i + 1);
    		for (j = 0; j < ig; j++)
    			printf("%i", &iw[i][j]);
    	}//for print
    

    }//main

    leider gibrt er mir sehr komische werte aus und nicht meine matrix



  • @schnell_hilfe sagte in Matix eingabe:

    printf("\nZeile eingeben bitte", i + 1);

    Warnungen einschalten?



  • @schnell_hilfe Wie wäre es mit Leerzeichen oder Kommas zwischen den Werten.



  • @schnell_hilfe Ach ja, pack bitte deinen Code zwischen Codetags.
    Code mit der Maus markieren und auf das </> Symbol Klicken.

    Rechts in der Vorschau kannst du das Ergebnis sehen.



  • @schnell_hilfe egal wie du es lernst, oder von wem, du lernst quatsch. wegwerfen (buch) oder verprügeln (tutor).


Log in to reply