Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
rickslopes

Sistema Linear Metodo Gauss.

Recommended Posts

Fala pessoal. Estou com esse sistema de escalonamento por gauss praticamente pronto. E um trabalho interdisciplinar. Mas porém eu queria implementar nele o sistema de classificação. Não quero escrever as 3 classificações. Na verdade somente quero avisar quando for um Sistema Impossível, que é aquele que para alguma incógnita não a solução ou para nenhuma. O problema e que não consigo visualizar como fazer isso, visto que sempre que o sistema é impossível a solução sai uns resultados assim: x=0.J#.

Alguem pode me dar uma luz. o codigo que ja esta pronto e funcionando esta abaixo.

#include <stdio.h>

#include <stdlib.h>

int main()

{

voltar://ROTULO OU MARCA UTILIZADA PELO COMANDO GOTO

//ALTERANDO COR DE FUNDO E FONTE

system("color F0");

system("cls"); //LIMPANDO A TELA

printf("\t\t\t SISTEMAS LINEARES METODO GAUSS\n\n\n\n");

printf("CARO USUARIO, ESSE E UM SISTEMA SIMPLES PARA SOLUCAO DE SISTEMAS LINEARES POR\nESCALONAMENTO. PARA UTILIZACAO DO NOSSO SISTEMA E NECESSARIO QUE voce DIGITE\nQUANTAS INCOGNITAS SERAO UTILIZADAS. (EX: SE X E Y DIGITE 2) E PARA CADA INCOG-\n-NITA ADICIONADA AUMENTE 1. CASO NAO QUEIRA UTILIZAR NOSSO PROGRAMA DIGITE 0.\n\n\n\n");

/*ENTRADA DE DADOS-----------------------------------------------------------------------*/

int n=0;

printf(" DIGITE O NUMERO DE INCOGNITAS:");

scanf("%d",&n);

if (n==0)

exit(0);

int i, j, k, l, Cor=0;

float Mat[n][n+1], Vet[n], subs, mult;

system("cls");

for (i=0; i<n;i++)

{

printf("AGORA DIGITE OS VALORES DOS COEFICIENTES E TERMOS INDEPENDENTES DO SISTEMA.\nONDE MAT(1,1) E A 1a EQUACAO, 1a INCOGNITA X E ASSIM SUCESSIVAMENTE ATE O TERMO\nINDEPENDENTE OU SEJA TERMO QUE VEM DEPOIS DA IGUALDADE.\n\n\n");

for (j=0; j<n+1; j++)

{

printf("\n\4 DIGITE O VALOR DO TERMO PARA Mat(%d,%d): ",i+1,j+1);

scanf("%f",&Mat[j]);

}

system("cls");

}

/*FIM ENTRADA DE DADOS-----------------------------------------------------------------------*/

/*IMPRESSÃO MATRIZ ORIGINAL------------------------------------------------------------------*/

printf(" MATRIZ ORIGINAL:\n\n");

for(i=0; i<n; i++)

{

for (j=0;j<n+1;j++)

{

printf (" %.2f",Mat[j]);

if(j==n)

printf("\n");

else

printf("\t");

}

}

/*FIM IMPRESSÃO MATRIZ ORIGINAL---------------------------------------------------------------*/

/*METODO DE GAUSS OU ESCALONAMENTO------------------------------------------------------------*/

for (k=0;k<n-1;k++)

{

for (i=k+1; i<n;i++)

{

mult=-1*(Mat[k]/Mat[k][k]); //NEGATIVAÇÃO (-1 * MAT[2][1]) / MAT[1][1]

for (j=0;j<n+1;j++)

{

Mat[j]=(Mat[k][j]*mult)+Mat[j];

/*MAT[1][1]*NEGATIVAÇÃO + MAT[2][1] TRANSFORMANDO EM GAUSS */

}

}

/*FIM METODO DE GAUSS OU ESCALONAMENTO----------------------------------------------------------*/

/*IMPRESSÃO MATRIZ TRANSFORMADA EM GAUSS--------------------------------------------------------*/

printf("\n\n MATRIZ TRANSFORMADA EM GAUSS:\n\n");

for(i=0; i<n; i++)

{

for (j=0;j<n+1;j++)

{

printf (" %.2f",Mat[j]);

if(j==n)

printf("\n");

else

printf("\t");

}

}

}

/*FIM IMPRESSÃO MATRIZ TRANSFORMADA EM GAUSS----------------------------------------------------*/

printf("\n\n\n");

/*RESOLVENDO O SISTEMA--------------------------------------------------------------------------*/

for (i=0;i<n;i++)

{

subs = 0;

l = n-i;

for (j=l; j<n;j++)

{

subs=subs+(Vet[j]*Mat[n-i-1][j]);

}

//printf ("\n Substituicao= %f\n",subs);//EXIBINDO VALOR DO TERMO

Vet[n-i-1]=(Mat[n-1-i][n]-subs)/Mat[n-i-1][n-i-1];

//printf ("X%d=%.2f ",n-i,Vet[n-i-1]);

}

/*FIM RESOLVENDO O SISTEMA-----------------------------------------------------------------------*/

/*IMPRIMINDO SOLUÇÃO-----------------------------------------------------------------------------*/

for (i=0;i<n;i++)

{

if (i==0)

printf("X=%.2f",Vet);

else if (i==1)

printf(" Y=%.2f",Vet);

else if (i==2)

printf(" Z=%.2f",Vet);

else if (i==2)

printf(" W=%.2f",Vet);

}

printf("\n\n\nSOLUCAO={");

for (i=0;i<n;i++)

{

if (i==0)

printf("%.2f",Vet);

else if (i==1)

printf(",%.2f",Vet);

else if (i==2)

printf(",%.2f",Vet);

else if (i==2)

printf(",%.2f",Vet);

}

printf("}");

/*FIM IMPRIMINDO SOLUÇÃO-------------------------------------------------------------------------*/

/*MENU FINAL-------------------------------------------------------------------------------------*/

int Sair;

printf ("\n\n\n********************************************************");

printf ("\n\nESCOLHA: 1-RESOLVER OUTRA EQUACAO \n\t 0-SAIR: ");

scanf ("%d",&Sair);

Erro:

if (Sair==0)

exit(0);

else if (Sair==1)

goto voltar;

else

system("cls");

printf ("OPCAO INCORRETA.\n\nESCOLHA: 1-RESOLVER OUTRA EQUACAO \n\t 0-SAIR: ");

scanf ("%d",&Sair);

goto Erro;

/*FIM MENU FINAL---------------------------------------------------------------------------------*/

return 0;

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário






Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×