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.
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.
Pergunta
Vinicius Tergolina
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
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.