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

Dúvida com loop em funão IF


Vinicius Tergolina

Pergunta

Tenho um programa pronto que serve para multiplicar gráficos, um pelo outro...

O programa funciona perfeitamente então adicionei algumas linhas para refina-lo e fazer com que ele multiplicasse o gráfico desejado por 5 diferentes em diferentes vezes mas estou tendo problemas para fazer funcionar com a função IF, ao meu ver esta tudo correto e como estou obtendo o terrível Erro de Segmentação não tenho pistas.

#include <math.h>
#include <stdio.h>
#define N 4000
main()
{

    int i,j,q,NumeroPontosS, NumeroPontos,v;
      float  y[N+1],p[N+1], o[N+1],l[N+1],z[N],x[N+1],a,b,Sx[N], Sy[N],h[N+1], Cor, Filtro,U,G,R,I,Z;
      FILE *ArquivoEntrada;
      FILE *ArquivoEntradaS;
      FILE *a1;  
       
    
    for(q=1;q<=5;q++)
    {
    if(q=1)
    { ArquivoEntrada = fopen("u.dat", "r");
     a1= fopen("EspFiltr_u.dat", "w"); 
    //Filtro = U;
    
    if(q=2)
    { ArquivoEntrada = fopen("g.dat", "r"); 
    a1= fopen("EspFiltr_g.dat", "w");
    //Filtro = G; 
    
    if(q=3)
    { ArquivoEntrada = fopen("r.dat", "r");
    a1= fopen("EspFiltr_r.dat", "w");
    //Filtro = R; 
    
    if(q=4)
    { ArquivoEntrada = fopen("i.dat", "r");
        a1= fopen("EspFiltr_i.dat", "w");
    //Filtro = I; 
    
    if(q=5)
    { ArquivoEntrada = fopen("z.dat", "r");
    a1= fopen("EspFiltr_z.dat", "w");
    //Filtro = Z; 
    
     //printf("filtro = %f", Filtro);
i=1;  
  
do{
    fscanf(ArquivoEntrada,"%f %f %f %f %f",&x[i],&p[i],&o[i],&y[i],&l[i]);
    //printf("i=%d %f %f\n", i, x[i],y[i]);
    i++;
  }while( feof(ArquivoEntrada)==0 );
  NumeroPontos = i - 2;
  printf("Num pontos Filtro=%d\n", NumeroPontos ); 
  
  j=1;

ArquivoEntradaS = fopen("da10750_525.dat", "r");

do{
   fscanf(ArquivoEntradaS,"%f %f",&Sx[j],&h[j]);
   //printf("j=%d %f %f\n", j,Sx[j],h[j]);  
 j++;
 }while( feof(ArquivoEntradaS)==0 );
 NumeroPontosS = j - 2;
 printf("Num ponto Espectro=%d\n", NumeroPontosS );

 v=NumeroPontosS;
    Cor=0.0;

for(j=2;j<=v;j++)    
   {
   for(i=1;i<=NumeroPontos;i++)
 {         
           if(Sx[j]>x[i] && Sx[j]<x[i+1])
     {
       //printf("j=%d %f \n", j,Sx[j]);      
       a=(y[i]-y[i+1])/(x[i]-x[i+1]);
       b=((x[i]*y[i+1])-(y[i]*x[i+1]))/(x[i]-x[i+1]);
       Sy[j]=a*Sx[j]+b;
       z[j]=Sy[j]*h[j];

//printf("j=%d a=%f b=%f \n", j, a, b);
fprintf(a1,"%f %f \n",Sx[j],z[j]);
       //printf("%f %f \n",Sx[j],z[j]);  
if(j<v)
{
//printf("%f %f \n",Sx[j],z[j]);

//********** Cálculo do fluxo total na banda desejada através do método dos trapézios. **********
    
    Cor+=(z[j]+z[j+1])*(Sx[j+1]-Sx[j])/2;
}      
    }       
         }     
       }
//printf("Fluxo total em %f = %f\n",Filtro,Cor);        
printf("Fluxo total = %f\n",Cor);
}
}
}
}
}
}
}

Enfim, já tentei mexer no chaveamento dos IFs e nada funcionou, se alguém souber de outra maneira pra resolver o problema sem usar os IFs e puder me indicar eu agradeço, sou iniciante em programação em C e por isso os recursos que estão nesse programa são todos que tenho.

PS: o que estiver // (comentado) deve ser ignorado.

Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

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
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...