Visualizzazione dei risultati da 1 a 10 su 17

Visualizzazione discussione

  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2013
    Messaggi
    15

    [c] problema determintante matrice

    ciao a tutti, devo creare un programma che da file prenda gli elementi di una matricce quadrata e restituisca il det. ora l algoritmo credo sia giusto,ma mi da un warning (nn facendo funzionare il programma)
    codice:
    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    #include <string.h>
    int matri(int **M,int rc);
    int finale(int **M);
    
    
    int main(int argc,char *argv[])
    {
        int **M;
        int i,j,rc;
        FILE *f;
        int prova=0;
        f=fopen(argv[1],"r");
        while(!feof(f))
        {
            fscanf(f,"%d",&prova);
            prova++;
        }
        rc=sqrt(prova);
        rewind(f);
        M=(int**)malloc(rc*sizeof(int*));
        for(i=0; i<rc; i++)
        {
            M[i]=(int*)malloc(rc*sizeof(int));
            for(j=0; j<rc; j++)
            {
                fscanf(f,"%d",&M[i][j]);
            }
        }
       printf("%d",matri(M,rc)) ;
        return 0;
    }
    int matri(int **M,int rc)
    {
        int sommam=0;
        int **TEM;
        int i,j,k,r,c;
    
    
        if (rc==2)
        {
            return finale(M);
        }
    TEM=(int**)malloc((rc-1)*sizeof(int*));
        for(k=0; k<rc; k++)
        {
            r=0;
            c=0;
            for(i=1; i<rc; i++)
            { TEM[i]=(int*)malloc((rc-1)*sizeof(int));
                for(j=0; j<rc; j++)
                {
    
    
                    if(j!=k)
                    {
                        TEM[r][c]=M[i][j];
                        c++;
                    }
                    if(c==rc-1)
                    {
                        r++;
                        c=0;
                    }
                }
            }
    
    
                sommam=sommam+pow(-1,k)*(M[0][k])*matri(TEM,rc-1);
    
    
    
    
    
    
    
    
    }
    
    
    
    
        return sommam;
    
    
    }
    int finale(int **M)
    {
    
    
      return   M[0][0]*M[1][1] -M[0][1]*M[1][0];
    }

    grazie a tutti
    Ultima modifica di razzoman; 23-11-2013 a 11:16

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.