Ir ao conteúdo

Erro em dev C++


vinhakoch

Posts recomendados

Postado

Olá, pessoal...

Preciso entregar este trabalho até a quarta feira...

É um algoritmo para calcular o valor de uma integral com quadratura gaussiana e spline linear... o programa le uma tabela em txt ..Mas o erro é algo de programação mesmo... eu acho...

ta escrito "main must return int" e na linha 100 que falta um ) antes do ;

alguem poderia me ajudar em cm faço p tirar esses erros e o programa rodar?


#include <stdio.h>
#include <stdlib.h>

void main(){
int pontosdegauss;
printf("\nESTE PROGRAMA CALCULA A INTEGRAL DE UMA FUNÇÃO APROXIMADA A PARTIR DE PONTOS DADOS E DE SPLINES LINEARES UTILIZANDO QUADRATURA GAUSSIANA\n");
printf("\nDigite o número correspondente a opção desejada\n");
printf("\n1 - QUADRATURA GAUSSIANA COM 4 PONTOS");
printf("\n2 - QUADRATURA GAUSSIANA COM 16 PONTOS\n");
scanf("%d", &pontosdegauss);


float raiz[pontosdegauss], peso[pontosdegauss], x[40], y[40];
float extremoesquerdo, extremodireito, ca, cl, soma;
char S[40];
int h, i, j, k;
FILE *p;

p=fopen("dados.txt", "r");

if(!p){

printf("Erro!");

exit(1);

}
h=0;
i=0;

for(h=0; h<pontosdegauss; h++){

fscanf(p, "%f\n%f", &x, &y);
}


if (pontosdegauss=4){
raiz[1]=-0.8611363;
raiz[2]=-0.3399810;
raiz[3]=0.3399810;
raiz[4]=0.8611363;
peso[1]=0.3478548;
peso[2]=0.6521455;
peso[3]=0.6521455;
peso[4]=0.3478548;
}

if (pontosdegauss=16){
raiz[1]=0.989400934991;
raiz[2]=0.944575023073;
raiz[3]=0.865631202387;
raiz[4]=0.755404408355;
raiz[5]=0.617876244402;
raiz[6]=0.458016777657;
raiz[7]=0.281603550779;
raiz[8]=0.951250983763;
raiz[9]=-0.951250983763;
raiz[10]=-0.281603550779;
raiz[11]=-0.458016777657;
raiz[12]=-0.617876244402;
raiz[13]=-0.755404408355;
raiz[13]=-0.865631202387;
raiz[14]=-0.944575023073;
raiz[15]=-0.989400934991;
peso[1]=0.2715245941175;
peso[2]=0.6225352393864;
peso[3]=0.9515851168249;
peso[4]=0.1246289712555;
peso[5]=0.1495959888165;
peso[6]=0.1691565193950;
peso[7]=0.1826034150449;
peso[8]=0.1894506104550;
peso[9]=0.1894506104550;
peso[10]=0.1826034150449;
peso[11]=0.1691565193950;
peso[12]=0.1495959888165;
peso[13]=0.1246289712555;
peso[14]=0.9515851168249;
peso[15]=0.6225352393864;
peso[16]=0.2715245941175;
}

i=0;
j=0;


for (j=0; j<41; j++){
extremoesquerdo=x[j];
extremodireito=x[j+1];


ca=(extremodireito-extremoesquerdo)/2;
cl=(extremodireito+extremoesquerdo)/2;


k=0;
soma=0;
for(i=0; i<41; i++){
for(k=0;k<pontosdegauss;k++){
soma=(soma+(peso[k]*(y[i]+(((y[i+1]-y[i])/(x[i+1]-x[i]))*(((ca*raiz[k])+cl)-x[i])));
}
}
}
printf("%f ", soma);
}


a linha 100 é onde tem soma= ...

Postado

Parece que estão faltando dois ")", porém, um é para a variável da própria soma e o outro para a segunda parte da fórmula que somará com a variável soma.

Retirei esses dois iniciais, de forma a não impactar na sua fórmula inicial.

Corrija a fórmula da soma para essa:


soma += peso[k]*(y[i]+(((y[i+1]-y[i])/(x[i+1]-x[i]))*(((ca*raiz[k])+cl)-x[i])));

Veja se funciona.

Postado

consertei.. mt obg...

consertei tb o preenchimento dos vetoresraiz e peso... q tava de 1 a pontosdegauss.. e coloquei de 0 a n<pontosdegauss

mas agr tenho outro problema...

o meu programa nao ta passando pelos ifs desses pontos de gauss, onde preencho os vetores raiz e peso...

n sei cm nem porque...

Postado


#include<stdio.h>
#include<stdlib.h>
#include<string>
#include <iostream>
#include <fstream>
#include <stdio.h>
#include <stdlib.h>

using namespace std;

int main(void)
{
int pontosdegauss=0;
printf("\nESTE PROGRAMA CALCULA A INTEGRAL DE UMA FUNCAO APROXIMADA A PARTIR DE PONTOS DADOS E DE SPLINES LINEARES UTILIZANDO QUADRATURA GAUSSIANA\n");
printf("\nDigite o numero de pontos de Gauss que deseja (2, 4 ou 16 pontos):\n");
scanf("%d", &pontosdegauss);


float raiz[pontosdegauss], peso[pontosdegauss], x[41], y[41];
float extremoesquerdo=0, extremodireito=0, ca, cl, soma, xt=0, funcao=0, deltax=0;
int h, i, j, k, f;
FILE *p;

p=fopen("dados.txt", "r");

if(!p){

printf("Erro!");

exit(1);

}
h=0;
f=0;
i=0;
ca=0;
cl=0;
j=0;

for (f=0;f<41;f++){
x[f]=0;
y[f]=0;}
f=0;
for (f=0;f<pontosdegauss;f++){
raiz[f]=0;
peso[f]=0;
}

for(h=0; h<41; h++){

fscanf(p, "%f\n%f", &x[h], &y[h]);
}

x[0]=2;
y[40]=1;

for (i=0;i<41;i++){
x[0]=2;
printf("\n");
printf("%f ", x[i]);

}

system("pause");

for (j=0;j<41;j++){
y[40]=1;
printf("\n");
printf("%f ", y[j]);

}
system("pause");

if (pontosdegauss=2){
raiz[0]=-0.5773503;
raiz[1]=0.5773503;
peso[0]=1;
peso[1]=1;
}

if (pontosdegauss=4){
raiz[0]=-0.8611363;
raiz[1]=-0.3399810;
raiz[2]=0.3399810;
raiz[3]=0.8611363;
peso[0]=0.3478548;
peso[1]=0.6521455;
peso[2]=0.6521455;
peso[3]=0.3478548;
}

if (pontosdegauss=16){
raiz[0]=0.989400934991;
raiz[1]=0.944575023073;
raiz[2]=0.865631202387;
raiz[3]=0.755404408355;
raiz[4]=0.617876244402;
raiz[5]=0.458016777657;
raiz[6]=0.281603550779;
raiz[7]=0.951250983763;
raiz[8]=-0.951250983763;
raiz[9]=-0.281603550779;
raiz[10]=-0.458016777657;
raiz[11]=-0.617876244402;
raiz[12]=-0.755404408355;
raiz[13]=-0.865631202387;
raiz[14]=-0.944575023073;
raiz[15]=-0.989400934991;
peso[0]=0.2715245941175;
peso[1]=0.6225352393864;
peso[2]=0.9515851168249;
peso[3]=0.1246289712555;
peso[4]=0.1495959888165;
peso[5]=0.1691565193950;
peso[6]=0.1826034150449;
peso[7]=0.1894506104550;
peso[8]=0.1894506104550;
peso[9]=0.1826034150449;
peso[10]=0.1691565193950;
peso[11]=0.1495959888165;
peso[12]=0.1246289712555;
peso[13]=0.9515851168249;
peso[14]=0.6225352393864;
peso[15]=0.2715245941175;
}

i=0;
j=0;
soma=0;


for (j=0; j<41; j++){
extremoesquerdo=x[j];
extremodireito=x[j+1];


ca=((extremodireito-extremoesquerdo)/2);
cl=((extremodireito+extremoesquerdo)/2);


k=0;
funcao=0;
deltax=(x[j+1]-x[j]);
for(k=0;k<pontosdegauss;k++){
xt=ca*raiz[k]+cl;
funcao=((y[j]*((x[j+1]-xt)/deltax))+(y[j+1]*((xt-x[j+1])/deltax)));
soma=(soma+(peso[k]*ca*funcao));
}

}
printf("\nRESULTADO: %f\n", soma);
system("pause");
return (0);
}

me ajudem por favor

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades 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

×
×
  • Criar novo...

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!