/*
Main-Funktion
*/
int main(int argc, char *argv[]) {

  // Zufallszahlengenerator initialisieren
  srand(time(NULL));
  matrix a = initMatrixRand(5,5);
  matrix b = initMatrixRand(5,5);

  printf("a =\n"); prettyPrint(a);
  printf("\nb =\n"); prettyPrint(b);

  matrix c = addMatrix(a, b);
  printf("\na + b =\n");
  prettyPrint(c);
  freeMatrix(c);

  c = subMatrix(a, b);
  printf("\na - b =\n");
  prettyPrint(c);
  freeMatrix(c);

  c = multMatrix(a, b);
  printf("\na * b =\n");
  prettyPrint(c);
  freeMatrix(c);

  c = transposeMatrix(a);
  printf("\na^T =\n");
  prettyPrint(c);
  freeMatrix(c);

  printf("\ndet(a) = %.2f\n", determinante(a));
  printf("detQuick(a) = %.2f\n\n", detQuick(a));

  printf("\ndet(b) = %.2f\n", determinante(b));
  printf("detQuick(b) = %.2f\n\n", detQuick(b));

  freeMatrix(a);
  freeMatrix(b);

  return 0;
}
예제 #2
0
matriz *inversao(matriz *m)
{
              matriz *inversa,*m1,*m2;              
		
	      inversa=alocaMatriz(m->linhas,m->colunas);

          inversa->linhas=m->linhas;
          inversa->colunas=m->colunas;
              
          if(((m->colunas)!= (m->linhas)) || (determinante(m)==0))
	      {
                   	m->colunas=0;
			        m->linhas=0;
			        return m;
          }
          m1=cofator(m);
	      m2=transpor(m1);
	      inversa=(divideEscalar(m2,determinante(m)));
	      desalocaMatriz(m1);
	      desalocaMatriz(m2);
		                 
          return inversa;
}
예제 #3
0
파일: matrix.c 프로젝트: JuarezASF/Code
int main(){
	
	
	Matrix *A, *b, *x, *E;
	Matrix *S, *L, *U, *I;
	
	A = new_M_from_string(2,2, "1 1 2 3");
	printf("detA = %.3lf \n", determinante(A));
	kill_M(&A);

	
    EndProgram();
	return(0);
	
	}
예제 #4
0
int det(matriz **m)
{
	int indice;	
	float det;

	printf("Qual o indice da matriz que sera calculado o determinante: ");
	scanf("%d",&indice);
	if(indice>numeroMatrizes-1)
	{
		printf("Matriz inexistente.\n");
		return 1;
	}
	det=determinante(m[indice]);
	printf("%f\n",det);
	return 0;
예제 #5
0
파일: server.c 프로젝트: fedpep/MyPersonalC
void server(void *x){
    
    int sa = (int) x;
           
    determinante(sa);
    close(sa);   
    printf("\nConnessione terminata (Server socket accepted: %d).\n\n", sa);
        
    pthread_mutex_lock(&mutex);
    count--;
    pthread_cond_broadcast(&full);
    pthread_mutex_unlock(&mutex);
    
    
    pthread_exit(0);
    
}
예제 #6
0
float determinante(matriz *m)
{
    int lin,sinal;
    float det;
    matriz* m1;
    
    if((m->linhas)==1)
	              return (m->valores[0][0]);

    sinal =-1;
    det=0;

    for(lin=0;lin<(m->linhas);lin++)
    {
	                               	m1=semicof(m,lin,0);
					sinal = sinal * -1;
	                               	det = det + (m->valores[lin][0] * determinante(m1) * sinal);
	                               	desalocaMatriz(m1);
    }
    return det;
}
예제 #7
0
int main () {
    int numLinhas, numColunas;
    printf ("Escolha o tamanho da matriz esparsa (MxN) > ");
    scanf ("%d %d", &numLinhas, &numColunas);

    if (numLinhas <= 0 || numColunas <= 0) {
        fprintf (stderr, "Matriz não pode ter dimensão menor que 1\n");
        return -1;
    }

    matrizEsparsa *mat = criaMatrizEsparsa (numLinhas, numColunas);

    int opcao, y, x, ret;
    double valor;
    double det;
    do {
        menu ();
        scanf ("%d", &opcao);

        switch (opcao) {
        case 1:
            printf ("Escolha a posição da matriz a ser consultada (MxN) > ");
            scanf ("%d %d", &y, &x);
            ret = consultaValor (mat, y, x);
            if (ret != ERRO) {
                printf ("Matriz[%d][%d] = %d\n", y, x, ret);
            }
            break;

        case 2:
            printf ("Escolha o valor a ser inserido > ");
            scanf ("%lf", &valor);
            printf ("Escolha em que posição da matriz o valor será inserido (MxN) > ");
            scanf ("%d %d", &y, &x);
            if (insereValor (mat, y, x, valor) != ERRO) {
                printf ("Valor %6.3lf inserido em %dx%d\n", valor, y, x);
            }
            break;

        case 3:
            printf ("Escolha a linha a ser somada > ");
            scanf ("%d", &y);
            ret = somaLinha (mat, y);
            if (ret != ERRO) {
                printf ("Soma da linha %d = %d\n", y, ret);
            }
            break;

        case 4:
            printf ("Escolha a coluna a ser somada > ");
            scanf ("%d", &x);
            ret = somaColuna (mat, x);
            if (ret != ERRO) {
                printf ("Soma da coluna %d = %d\n", x, ret);
            }
            break;

        case 5:
            printMatriz (mat);
            break;

        case 6:
            det = determinante (mat);
            if (det != ERRO) {
                printf ("Determinante da matriz = %f", det);
            }
            break;

        case 7:
            gaussSeidel (mat);
            break;

        }

        puts ("");
    } while (opcao != 0);

    apagaMatrizEsparsa (mat);
    return 0;
}
예제 #8
0
matriz *cofator(matriz *m)
{
    matriz *cof,*m1;
    int i,j;
    
    cof=alocaMatriz(m->linhas,m->colunas);
    
    if(cof==NULL)
    {
                         return NULL;
    }
    
    cof->linhas=m->linhas;
    cof->colunas=m->colunas;
    
    if((cof->linhas)==1 && (cof->colunas)==1)
                     return m;     
    
    for(i=0;i<(cof->linhas);i++)
    {
	                              	for(j=0;j<(cof->colunas);j++)
                                  	{
                                                                m1=semicof(m,i,j);
								if((i+j)%2==0)
                                                                              cof->valores[i][j]=determinante(m1);
                                                                else
                                                                    cof->valores[i][j]=-determinante(m1);
                                  	}
	desalocaMatriz(m1);
    }
    return cof;
}
예제 #9
0
*/
void menu(matriz **m,matriz *deposito)
{
	int escolha,indice;	
	while(escolha!=15)
	{
		printf("\t╔══════════════════════════════════════════════════════════╗\n");
		printf("\t║1)Lista de Matrizes da memoria                            ║\n");
		printf("\t╠══════════════════════════════════════════════════════════╣\n");
		printf("\t║2)Multiplicar por Escalar                                 ║\n");
		printf("\t╠══════════════════════════════════════════════════════════╣\n");
		printf("\t║3)Dividir por escalar                                     ║\n");
		printf("\t╠══════════════════════════════════════════════════════════╣\n");
		printf("\t║4)Multiplicar duas matrizes                               ║\n");
		printf("\t╠══════════════════════════════════════════════════════════╣\n");
		printf("\t║5)Verificar se a matriz é quadrada                        ║\n");
		printf("\t╠══════════════════════════════════════════════════════════╣\n");
		printf("\t║6)Verificar se a matriz é nula                            ║\n");
		printf("\t╠══════════════════════════════════════════════════════════╣\n");
		printf("\t║7)Calcular o determinante                                 ║\n");
		printf("\t╠══════════════════════════════════════════════════════════╣\n");
		printf("\t║8)Calcular a transposta de uma matriz                     ║\n");
		printf("\t╠══════════════════════════════════════════════════════════╣\n");
		printf("\t║9)Calcular a matriz dos cofatores de uma matriz           ║\n");
		printf("\t╠══════════════════════════════════════════════════════════╣\n");
		printf("\t║10)Calcular a matriz adjunta de uma matriz quadrada       ║\n");
		printf("\t╠══════════════════════════════════════════════════════════╣\n");
		printf("\t║11)Verificar se uma matriz é inversível                   ║\n");
		printf("\t╠══════════════════════════════════════════════════════════╣\n");
		printf("\t║12)Calcular inversa                                       ║\n");
		printf("\t╠══════════════════════════════════════════════════════════╣\n");
		printf("\t║13)Adicionar Matriz                                       ║\n");
		printf("\t╠══════════════════════════════════════════════════════════╣\n");
		printf("\t║14)Imprime no arquivo                                     ║\n");
		printf("\t╠══════════════════════════════════════════════════════════╣\n");
		printf("\t║15)Sair                                                   ║\n");
		printf("\t╚══════════════════════════════════════════════════════════╝\n");
		printf("O que deseja fazer: ");
		scanf("%d",&escolha);
	
		switch(escolha)
		{
			case 1:
				listaMatrizes(m);
				break;
			case 2:
				deposito=multiplicaE(m);
				if(deposito==NULL)
					printf("Erro!!!Matriz inexistente.\n");
				else
					m=salvarMatriz(m,deposito);
				break;
			case 3:
				deposito=divideE(m);
				if(deposito==NULL)
					printf("Erro!!!Matriz inexistente.\n");
				else
					m=salvarMatriz(m,deposito);
				break;
			case 4:
				deposito=multiplicaM(m);
				if(deposito==NULL)
					printf("Nao foi possivel multiplicar.\n");
				else
					m=salvarMatriz(m,deposito);
				break;
			case 5:
				printf("Qual o indice da matriz que deseja verificar: ");
				scanf("%d",&indice);
				if(indice>numeroMatrizes-1)
				{
					printf("Matriz inexistente.\n");
					break;
				}
				if(verificaQuadrada(m,indice)==1)
					printf("É quadrada.\n");
				else
					printf("Não é quadrada.\n");
				break;
			case 6:
				printf("Qual o indice da matriz que deseja verificar: ");
				scanf("%d",&indice);

				if(verificaNula(m,indice)==2)
				{
					printf("Matriz inexistente.\n");
					break;
				}
				if(verificaNula(m,indice)==0)
					printf("Matriz nula.\n");
				else
					printf("Matriz nao nula.\n");
				break;
			case 7:
				det(m);
				break;
			case 8:
				deposito=transpondo(m);
				if(deposito==NULL)
				{
					printf("Matriz inexistente.\n");
					break;
				}
				m=salvarMatriz(m,deposito);
				break;
			case 9:
				deposito=cof(m);
				if(deposito==NULL)
				{
					printf("Matriz inexistente.\n");
					break;
				}
				m=salvarMatriz(m,deposito);
				break;
			case 10:
				deposito=adj(m);
				if(deposito==NULL)
				{
					printf("Matriz inexistente.\n");
					break;
				}
				m=salvarMatriz(m,deposito);
				break;
			case 11:
				printf("Qual o indice da matriz que deseja verificar: ");
				scanf("%d",&indice);
				if(indice>numeroMatrizes-1)
				{
					printf("Matriz inexistente.\n");
					break;
				}
				if(verificaQuadrada(m,indice)==1 && determinante(m[indice])!=0)
					printf("É inversivel.\n");
				else
					printf("Não é iversivel.\n");
				break;
			case 12:
				deposito=inv(m);
				if(deposito==NULL)
				{
					printf("Matriz inexistente.\n");
					break;
				}
				m=salvarMatriz(m,deposito);
				break;
			case 13:
				m=adicionaMatriz(m);
				break;
			case 14:
				imprimeResultado(m);
				break;
			case 15:
				break;
			default:
				printf("Escolha nao consta no menu\n");
				break;	
		}
	}