Fórum de Informática

Programação => Linguagens Não Web => Tópico iniciado por: Rafaela_cta em Agosto 18, 2008, 15:13:48 pm

Título: Programa
Enviado por: Rafaela_cta em Agosto 18, 2008, 15:13:48 pm
Gostaria de saber o que tem de errado nesse codigo


#include <stdlib.h>
#include <conio.h>
#include <conio.c>
int auxL1,auxC1, auxL2, auxC2;
int **matriz;
int **matriz2;
int **mat_aux;
int mt = 0;
void menu();
void igualdade();
void quadrada();
void nula();
void coluna_linha();
void matriz_diagonal();
void matriz_identidade_quadrada();
void matriz_triangular_superior();
void matriz_triangular_inferior();
void matriz_simetrica();
void matriz_transposta();
void insere();
int main () {
gotoxy(23,8);
printf ("-Trabalho Computacional 1-");
gotoxy(28,9);
printf ("Osmar M. Landarim");
gotoxy(28,10);
printf ("Rafaela Raganham\n");
getch();
menu();
system("PAUSE");
return 0;
}
void menu()
{
int op = 0;
int l,c;

system("cls");
printf ("\t\t\t\t-Menu-\n\n");
printf ("1 - Igualdade etre Matrizes:\n2 - Classificacao:\n3 - Sair\n\n");
scanf ("%d", &op);
switch (op)
{
case 1:
{
insere();
igualdade();
for (l=1; l<auxL1; l++)
free (matriz[l]);
free (matriz);
for (l=1; l<auxL2; l++)
free (matriz2[l]);
free (matriz2);
menu();
break;
}
case 2:
{
insere();
quadrada();
nula();
coluna_linha();
matriz_diagonal();
matriz_identidade_quadrada();
matriz_triangular_superior();
matriz_triangular_inferior();
matriz_simetrica();
matriz_transposta();
for (c=1; c<auxL1; c++)
free (matriz[c]);
free (matriz);
menu();
break;
}
case 3:
{
exit(0);
break;
}
default:
{
gotoxy(33,1);
printf("Op%c%co Inv%clida !", 135, 198, 160);
getch();
system("cls");
menu();
}
}
getch();
}
void igualdade()
{
int l,c;
int teste = 0;
system ("cls");
// ponteiro para a matriz de inteiros
printf("Digite o n%cmero de linhas da matriz: ",163);
scanf("%d",&auxL2);
// alocando espaço para as linhas

matriz2 = (int **)malloc(auxL2*sizeof(int *));
printf("Digite o n%cmero de colunas da matriz: ",163);
scanf("%d",&auxC2);
// alocando espaço para as colunas, uma de cada vez
for (c=1; c<=auxC2; c++)
matriz2[c] = (int *)malloc(auxC2*sizeof(int));
// inserindo números na matriz
printf ("Digite os n%cmeros a serem colocados na matriz:\n",163);
for (l=1;l<=auxL2;l++)
for (c=1;c<=auxC2;c++) {
printf ("Elemento [%d][%d]: ",l,c);
scanf("%d",&matriz2[l][c]);
}
system("cls");
// imprimindo a matriz
printf ("A matriz %c:\n\n",130);
for (l=1;l<=auxL2;l++)
{
for (c=1;c<=auxC2;c++)
{
printf ("%3d ",matriz2[l][c]);
}
printf ("\n");
}

//getch();
if ((auxL1 == auxL2) && (auxC1 == auxC2));
{
for (l=1; l<=auxL2; l++)
{
for (c=1; c<=auxC2; c++)
{
if (matriz[l][c] == matriz2[l][c])
{
teste = 1;
}
else
{
l = auxL2;
printf ("Nao e a igualdade entre Matrizes!!!\n");
getch();
break;
}
}
}
if (teste == 1)
{
printf ("Igualdade entre Matrizes\n");
}
// getch();
}
printf ("Nao e a igualdade entre Matrizes!!!\n");
//getch();
}
void insere()
{
int l,c;
system ("cls");
// ponteiro para a matriz de inteiros
printf("Digite o n%cmero de linhas da matriz: ",163);
scanf("%d",&auxL1);
// alocando espaço para as linhas
printf("Digite o n%cmero de colunas da matriz: ",163);
scanf("%d",&auxC1);




// alocando espaço para as colunas, uma de cada vez
matriz = (int **)malloc(auxL1*sizeof(int *));
for (l=1; l<auxL1; l++)
{
for (c=1; c<=auxC1; c++)
{

matriz[c] = (int *)malloc(auxC1*sizeof(int));
}
}
// inserindo números na matriz
printf ("Digite os n%cmeros a serem colocados na matriz:\n",163);
for (l=1;l<=auxL1;l++)
for (c=1;c<=auxC1;c++) {
printf ("Elemento [%d][%d]: ",l,c);
scanf("%d",&matriz[l][c]);
}
system("cls");
// imprimindo a matriz
printf ("A matriz %c:\n\n",130);
for (l=1;l<=auxL1;l++)
{
for (c=1;c<=auxC1;c++)
{
printf ("%3d ",matriz[l][c]);
}
printf ("\n");
}

getch();
}
void quadrada()
{
if (auxL1 == auxC1)
{
printf ("Matriz resultante e quadrada\n");
mt = 1;
}
// getch();
}
void nula()
{
int l, c;
int cont = 0;

for (l=1;l<=auxL1;l++)
{
for (c=1;c<=auxC1;c++)
{
if (matriz[l][c] == 0)
{
cont ++;
}
}
}
if (cont == (auxL1*auxC1))
printf ("Matriz resultante e Nula\n");
//getch();
}
void coluna_linha()
{
if (auxC1 == 1 && auxL1 != 1)
printf ("Matriz resultante e Matriz-Coluna / Vetor-Coluna\n");
else
{
if (auxL1 == 1 && auxC1 != 1)
printf ("Matriz resultante e Matriz-Linha / Vetor-Linha\n");
}
// getch();

}
void matriz_diagonal()
{
int l,c;
int teste = 0;
if (mt == 1)
{
for(l=1; l<=auxL1; l++)
{
for(c=1; c<=auxC1; c++)
{
if(l==c)
{
if(matriz[l][c]!=0)
{
teste = 1;
}
else
{
l = auxL1;
break;
}
}
if(l!=c)
{
if (matriz[l][c]==0)
{
teste = 1;
}


else
{
teste = 0;
if(teste == 0);
{
l = auxL1;
break;
}
}
}
}
}
}
if (teste == 1)
{
printf ("Matriz resultante e Diagonal\n");
}
//getch();
}
void matriz_identidade_quadrada()
{
int l,c;
int teste = 0;

if (mt == 1)
{
for(l=1; l<=auxL1; l++)
{
for(c=1; c<=auxC1; c++)
{
if(l==c)
{
if(matriz[l][c]== 1)
{
teste = 1;
}
else
{
l = auxL1;
break;
}
}
if(l!=c)
{
if (matriz[l][c]==0)
{
teste = 1;
}
else
{
teste = 0;
if(teste == 0);
{
l = auxL1;
break;
}
}
}
}
}
}
if (teste == 1)
{
printf ("Matriz resultante e Identidade Quadrada\n");
}
// getch();
}
void matriz_triangular_superior()
{
int l,c;
int cont = 1;
int teste = 0;
if (mt == 1)
{
for (c=1; c<=auxC1; c++)
{
for (l=1; l<=auxL1; l++)
{
if(l > cont)
{
if (matriz[l][c] == 0)
{
teste = 1;
}
else
{
teste = 0;
c = auxC1;
break;
}
}
}
cont++;
}
}
if (teste == 1)
{
printf ("Matriz resultante e Triangular Superior\n");
}
// getch();
}
void matriz_triangular_inferior()
{
int l,c;
int cont = auxL1;
int teste = 0;
if (mt == 1)
{
for (c=auxC1; c>0; c--)
{
for (l=auxL1; l>0; l--)
{
if(l < cont)
{
if (matriz[l][c] == 0)
{
teste = 1;
}
else
{
teste = 0;
c = 0;
break;
}
}
}
cont--;
}
}
if (teste == 1)
{
printf ("Matriz resultante e Triangular Inferior\n");
}
//getch();
}
void matriz_simetrica()
{
int l,c,l2,c2,aux;
int teste = 0;

if (mt == 1)
{
/* mat_aux = (int **)malloc(auxL1*sizeof(int *));
for (aux=1; aux<=auxC1; aux++)
mat_aux[aux] = (int *)malloc(auxC1*sizeof(int));

for (l2=1; l2<=auxL1; l2++)
{
for (c2=1; c2<=auxC1; c2++)
{
mat_aux[l2][c2] = matriz[c2][l2];
}
} */
for (l=1; l<=auxL1; l++)
{
for (c=1; c<=auxC1; c++)
{
if (l != c)
{
if (matriz[l][c] == matriz[c][l])
{
//printf (" Mat%d",matriz[l][c]);
teste = 1;
}
else
{
teste = 0;
l = auxL1;
break;
}
}
//printf ("\n");
}

}
}
if (teste == 1)
{
printf ("Matriz resultante e Simetrica\n");
}
// getch();
}
void matriz_transposta()
{
int l,c;
printf ("\nMatriz Transposta:\n\n");
for (c=1;c<=auxC1;c++)
{
for (l=1;l<=auxL1;l++)
{
printf ("%3d ",matriz[l][c]);
}
printf ("\n");
}

getch();
} :D