• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Gon6

Preciso de uma ajuda

6 mensagens neste tópico

Boas pessoal,

alguém me pode ajudar a perceber algumas cenas de c num trabalho? :smoke:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

#include <stdio.h>
#define limite 4
float det(int n, float a[limite][limite]);
void troca_coluna(int c, float m[limite][limite], float b[limite]);
void copiar(float m[limite][limite],float a[limite][limite]);

void main ()
{

int ordem,i,j,pg;
float matriz[limite][limite], matrizI[limite],determinante,matrizC[limite][limite],y;
	do
	{
		FILE * f;
		f=fopen("c:\\dados.txt","w");
			if(f==NULL)printf("Impossivel abrir o ficheiro\n");

			do
				{

				printf("Qual a dimensao do sistema? escolha 2, 3 ou 4. Para sair prima 1).\n\n");
				printf(" 2 - Sistema de 2 equacoes e 2 incognitas.\n\n");
				printf(" 3 - Sistema de 3 equacoes a 3 incognitas.\n\n");
				printf(" 4 - Sistema de 4 equacoes a 4 incognitas.\n\n");
				scanf("%d",&ordem);

				}
			while ((ordem<1)||(ordem>4));

			fprintf(f,"ordem=%d\n",ordem);
			fprintf(f,"\n");

			if (ordem==1)
				return;
			else{
				for(i=0;i<ordem;i++){
					for(j=0;j<ordem;j++)
					{
					printf("Introduza o coeficiente dependente [%d][%d] =",i,j);
					scanf("%f",&matriz[i][j]);

					}
				}
				for(i=0;i<ordem;i++){
					printf("Introduza o coefiencente independente [%d][1] =",i);
					scanf("%f",&matrizI[i]);
				}
			}
		printf("\n");
		printf("Matriz dos termos Dependentes\n");
		fprintf(f,"Matriz dos termos Dependentes\n");
		for(i=0;i<ordem;i++){
			for(j=0;j<ordem;j++)
			{

				printf("%f\t",matriz[i][j]);
				fprintf(f,"%f\t",matriz[i][j]);
			}
			printf("\n");
			fprintf(f,"\n");
		}
		printf("\n");
		printf("\n");
		fprintf(f,"\n");
		fprintf(f,"\n");

		printf("Matriz dos termos Independentes\n");
		fprintf(f,"Matriz dos termos Independentes\n");
		for(i=0;i<ordem;i++){
			printf("%f\t",matrizI[i]);
			fprintf(f,"%f\t",matrizI[i]);
		}
			printf("\n");
			printf("\n");
			fprintf(f,"\n");
			fprintf(f,"\n");

		determinante=det(ordem,matriz);
		printf("determinante= %f\n",determinante);
		fprintf(f,"determinante= %f\n",determinante);

		printf("\n");
		printf("\n");
		fprintf(f,"\n");
		fprintf(f,"\n");

		for(i=0;i<ordem;i++){

			copiar(matriz,matrizC);
			troca_coluna(i,matrizC,matrizI);
			y=det(ordem,matrizC)/determinante;
			printf("y%d= %f\t",i,y);
			fprintf(f,"y%d= %f\t",i,y);


		}
		printf("\n");
		printf("\n");
		fclose(f);
		printf("Prima 1 para voltar ao menu inicial ou em outro numero qualquer para sair\n");
		scanf("%d",&pg);
		printf("\n");
		printf("\n");
	}
while (pg==1);

}

float det(int n, float a[limite][limite])
{
	switch (n){
		case 2: return ((a[0][0]*a[1][1])-(a[0][1]*a[1][0]));
			break;
		case 3: return ((a[0][0]*a[1][1]*a[2][2]+a[0][1]*a[1][2]*a[2][0]+a[0][2]*a[1][0]*a[2][1])-(a[0][2]*a[1][1]*a[2][0]+a[0][0]*a[1][2]*a[2][1]+a[0][1]*a[1][0]*a[2][2]));
			break;
		case 4:
			return (a[0][0]*((a[1][1]*a[2][2]*a[3][3]+a[1][2]*a[2][3]*a[3][1]+a[1][3]*a[2][1]*a[3][2])-(a[1][3]*a[2][2]*a[3][1]+a[1][1]*a[2][3]*a[3][2]+a[3][2]*a[1][2]*a[3][3])))
				-(a[0][1]*((a[1][0]*a[2][2]*a[3][3]+a[1][2]*a[2][3]*a[3][0]+a[1][3]*a[2][0]*a[3][2])-(a[1][3]*a[2][2]*a[3][0]+a[1][0]*a[2][3]*a[3][2]+a[1][2]*a[2][0]*a[3][3])))
				+(a[0][2]*((a[1][0]*a[2][1]*a[3][3]+a[1][1]*a[2][3]*a[3][0]+a[1][3]*a[2][0]*a[3][1])-(a[1][3]*a[2][1]*a[3][0]+a[1][0]*a[2][3]*a[3][1]+a[1][1]*a[2][0]*a[3][3])))
				-(a[0][3]*((a[1][0]*a[2][1]*a[3][2]+a[1][1]*a[2][2]*a[3][0]+a[1][2]*a[2][0]*a[3][1])-(a[1][2]*a[2][1]*a[3][0]+a[1][0]*a[2][2]*a[3][1]+a[1][1]*a[2][0]*a[3][2])));
			break;

	}
}
void troca_coluna(int c, float m[limite][limite], float b[limite])
{

	for(int i=0;i<4;i++)
	{
		 m[i][c]=b[i];
	}


}

void copiar(float m[limite][limite], float a[limite][limite])
{
	for(int i=0;i<4;i++){
		for(int j=0;j<4;j++){

		  a[i][j]=m[i][j];

		}
	}
}

tenho este programa, mas ha coisas que não percebo,

como por exemplo o fprintf, não percebo a sua função  :hmm:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O programa é para calcular equações, só me falta uma cena que é o programa dizer impossivel quando a equação dá impossível  :D alguem me pode ajudar nisso  :-[

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora