Ir para conteúdo
Fórum Script Brasil
  • 0

Problema em C


Justiceira

Pergunta

Ola pessoal estou com umproblema para resolver

tenho as seguintes linhas

6i1+10(i1-i2)+4(i1-i3)-26=0

5i2+5i2+5(i2-i3)+10(i2-i1)=0

11i3+4(i3-i1)+5(i3-i2)-7=0

em cada linha eu possuo um I1,I2 e I3 ,ficando assim depois

20i1-10i2-4i3=26 => 20*i1-10*i2-4*i3=26

-10i1+25i2-5i3=0 => -10*i1+25*i2-5*i3=0

-4i1-5i2+20i3=7 => -4*i1-5*i2+20*i3=7

So que isso eu resolvi a mão queria fazer em C

pensei em criar um vetor de 3 posições que armazena como texto as 3 primeiras linhas.

E depois diferenciar atraves da tabela ascii quem é numero e quem é texto.Pois depois disso irei informar i1,i2 e i3 para outra função calcular.

alguém poderia me dar umas dicas de como posso construir com vetor ou matriz??

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

O que você está tentando fazer, especificamente? Descobrir as correntes I1, I2 e I3 a partir de uma análise de malhas?

O que você quis dizer nessa parte: ".Pois depois disso irei informar i1,i2 e i3 para outra função calcular."?

Pergunto pois pode ter um meio melhor para fazer o que você quer.

Abraços.

Link para o comentário
Compartilhar em outros sites

  • 0

Sim no final da execução completa do programa prtendo descobrir as correntes I1,I2 e I3.

Primeiro a entrada vai ser digitada da seguinte maneira..

6i1+10(i1-i2)+4(i1-i3)-26=0

5i2+5i2+5(i2-i3)+10(i2-i1)=0

11i3+4(i3-i1)+5(i3-i2)-7=0

porém terei que por exemplo na linha 1:Saber Quando é O Nº antes de I1 exemplo

6i1 + (10i1 - 10i2) + ( 4i1 - 4i3) - 26 = 0

e no final sei que na linha 1 terei 20i1

porque é como esse I1 fosse X1 na matematica...farei um calculo de sistema linear para encontrar I1 que multiplicara por 20 e os outros da linha pra enfim resultar alguma coisa.

E quanto a outra função calcular: É porque isso eu irei retornar para outra função que já vai fazer esse calculo de sistema linear para mim.

Mas de qualquer forma vou tentar fazer por aqui e posto o codigo

Editado por Justiceira
Link para o comentário
Compartilhar em outros sites

  • 0

Eu fiz algo meio maluco aqui pra tentar resolver este meu problema

inicialmente eu pegaria as resistencias,e voltagens.

#include<stdio.h>
#include<math.h>

int i, j, k, r[7], c[3], v[3];
int linha1, linha2, linha3, i1, i2, i3;

main(){
kirchoff1();
kirchoff2();
kirchoff3();
lin1();
system("pause");
return 0;
}

int kirchoff1(int x[i]){

printf("Primeiro Circuito\n");
for(i=1; i<=3;i++){
printf("Informe R[%d]:",i);
scanf("%d", &r[i]);
}
printf("V[1]:");
scanf("%d", &v[i]);

}

int kirchoff2(int x[i]){
printf("\nSegundo Circuito\n");
for(j=1; j<=3;j++){
printf("Informe R[%d]:",j);
scanf("%d", &r[j]);
}
printf("V[2]:");
scanf("%d", &v[j]);

}

int kirchoff3(int x[i]){
printf("\nTerceiro Circuito\n");
for(k=1; k<=3;k++){
printf("Informe R[%d]:",k);
scanf("%d", &r[k]);
}
printf("V[3]:");
scanf("%d", &v[k]);

}

lin1(){
linha1 = ((r[1]*i1)+((r[2]*i1)-(r[2]*i2))+((r[3]*i1)-(r[3]*i3))- v[1]);
printf("Linha1: %d",linha1);
return(linha1);
}
lin2(){
linha2 = ((r[1]*i2)+(r[2]*i2)+((r[3]*i2)-(r[3]*i3))+((r[4]*i2)-(r[4]*i1))-v[2]);
return(linha2);
}

lin3(){
linha3 = ((r[1]*i3)+((r[2]*i3)-(r[2]*i1))+((r[3]*i3)-(r[3]*i2)) - v[3]);
return(linha3);
}
[/codebox]

So que no final eu queria que linha 1 por ex:

linha1 = ((r[1]*i1)+((r[2]*i1)-(r[2]*i2))+((r[3]*i1)-(r[3]*i3))- v[1]);

linha1 = ((6*i1)+((10*i1)-(10*i2))+((4*i1)-(4*i3))- 26);

estivesse assim

linha1 = ((20*i1)-(10*i2)-(4*i3)) =- 26;

pois eu informaria de outra função o restante que é i1,i2,i3

ninguém pode me ajudar??

Link para o comentário
Compartilhar em outros sites

  • 0

Então, seria mais fácil se você analizasse as malhas por inspeção, aí colocasse direto os valores na matriz.

Por exemplo, você pediria (para uma matrix 3x3), os 4 valores da malha 1, depois os 4 valores da malha 2 etc.

[Valor 1     Valor 2     Valor 3] = [Valor 4]
Pedia para as três malhas, e depois aplicava a regra de Cramer para descobrir I1, I2 e I3. Seia interessante se você fizesse um mecanismo para resolver soma e subtração, aí você poderia colocar assim na matriz:
[30+60+90-30     -90+30-10      10+90] = [30]

Podendo resolver escrevendo os valores direto (olhando do circuito).

Abraços.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...