aí eu tive que fazer um programa que que calcula a integral da funcao sqrt(1-x^2) , para isso eu não usei a biblioteca math porque eu escrevi x^2 da forma x*x, então não precisei da biblioteca math.h. O programa quando iniciado perguntao qual é o valor inicial e qual é o final e depois em quatas subdivisoes voce quer que ele faca. Vou colocar o programa aqui e a biblioteca que eu tinha que usar, que é uma diferente. não é a stdlib.h, é uma biblioteca que eu tenho que usar na facul, vo colocar ela tambem. #include "iolib.h" //biblioteca que tem que estar na mesma pasta do arquivo. double f (double x){ return sqrt(1-x*x); //pra mudar a funcao mude ela aqui } double integraltrapezio(double x0 , double xn , int n){ int i; double integral=0.0; double dx=(xn*x0)/n ; for ( i=0; i<n ; i++) { double xi=x0+i*dx; double xj=x0+(i+1)*dx ; double area = dx*(f(xi)+f(xj))/2; integral=integral+area; } return integral; } int main(void){ int n ; double x0 , xn ; double valor ; writestring("Entre com o limited o intervalo( x0 e xn ) : "); x0 = readdouble(); xn = readdouble(); writestring("Entre com o numero de subdivisoe s : "); n = readint(); valor =integraltrapezio(x0, xn, n); writestring("Valor da integral = "); writedouble(valor) ; return 0; } [/codebox] a iolib.h : [codebox]/* iolib.h ** Biblioteca auxiliar de entrada e saída ** ICC - PUC-Rio - 2007 */ #ifndef IOLIB_H #define IOLIB_H #include <stdio.h> /****************************** ** Funções para leitura de dados entrados via teclado */ /* Captura um valor inteiro */ int readint (void); /* Captura um valor real (tipo float) */ float readfloat (void); /* Captura um valor real (tipo double) */ double readdouble (void); /* Captura um valor de um caractere simples que não seja um 'branco' */ char readchar (void); /* Captura um valor de um caractere simples, incluindo 'brancos' */ char readanychar (void); /* Captura um valor de uma cadeia de caracteres, sem espaços 'brancos'. O segundo parâmetro indica número máximo de caracteres a ser capturado. */ void readword (char s[], int nmax); /* Captura um valor de uma cadeia de caracteres, até o fim da linha, incluindo caracteres 'brancos'. O segundo parâmetro indica número máximo de caracteres a ser capturado. */ void readline (char s[], int nmax); /****************************** ** Funções para escrita de dados na tela */ /* Escreve um valor inteiro */ void writeint (int x); /* Escreve um valor real (tipo float) */ void writefloat (float x); /* Escreve um valor real (tipo double) */ void writedouble (double x); /* Escreve um caractere simples */ void writechar (char x); /* Escreve uma cadeia de caracteres (sem pular linha) */ void writestring (char s[]); /* Escreve uma linha de texto (acrescenta caractere de mudança de linha) */ void writeline (char s[]); /* Escreve um caractere de mudança de linha (pula linha) */ void newline (void); /**************************** ** Funções de entrada e saída para arquivos */ /* Tipo que representa um arquivo */ typedef FILE* FHANDLE; /* Abre um arquivo para leitura, dado o nome do arquivo. Se ocorrer erro na abertura do arquivo, o programa é abortado. */ FHANDLE fopenreadfile (char filename[]); /* Abre um arquivo para escrita, dado o nome do arquivo. Se ocorrer erro na abertura do arquivo, o programa é abortado. */ FHANDLE fopenwritefile (char filename[]); /* Fecha um arquivo previamente aberto */ void fclosefile (FHANDLE f); /* Verifica se o final do arquivo foi alcançado, desprezando eventuais caracteres 'brancos' */ int fisend (FHANDLE f); /* Captura próximo valor inteiro do arquivo */ int freadint (FHANDLE f); /* Captura próximo valor real (tipo float) do arquivo */ float freadfloat (FHANDLE f); /* Captura próximo valor real (tipo double) do arquivo */ double freaddouble (FHANDLE f); /* Captura o próximo caractere simples do arquivo, desprezando eventuais 'brancos' */ char freadchar (FHANDLE f); /* Captura o próximo caractere simples do arquivo, incluindo eventuais 'brancos' */ char freadanychar (FHANDLE f); /* Captura próxima cadeia de caracteres sem 'brancos' do arquivo O terceiro parâmetro indica número máximo de caracteres a ser capturado. */ void freadword (FHANDLE f, char s[], int nmax); /* Captura próxima cadeia de caracteres do arquivo, até o fim da linha. O terceiro parâmetro indica número máximo de caracteres a ser capturado. */ void freadline (FHANDLE f, char s[], int nmax); /* Escreve valor inteiro no arquivo */ void fwriteint (FHANDLE f, int x); /* Escreve valor real (tipo float) no arquivo */ void fwritefloat (FHANDLE f, float x); /* Escreve valor real (tipo double) no arquivo */ void fwritedouble (FHANDLE f, double x); /* Escreve caractere simples no arquivo */ void fwritechar (FHANDLE f, char x); /* Escreve cadeia de caracteres no arquivo */ void fwritestring (FHANDLE f, char s[]); /* Escreve caractere de nova linha no arquivo (muda de linha) */ void fnewline (FHANDLE f); #endif agora para ela funcionar voce tem que colocar o arquivo iolib.c no mesmo projeto que o arquivo integrais.c, ai vai a iolib.c : /* iolib.c ** Biblioteca auxiliar de entrada e saída ** ICC - PUC-Rio - 2007 */ #include "iolib.h" #include <stdlib.h> int readint (void) { return freadint(stdin); } float readfloat (void) { return freadfloat(stdin); } double readdouble (void) { return freaddouble(stdin); } char readchar (void) { return freadchar(stdin); } char readanychar (void) { return freadanychar(stdin); } void readword (char s[], int nmax) { freadword(stdin,s,nmax); } void readline (char s[], int nmax) { freadline(stdin,s,nmax); } void writechar (char x) { fwritechar(stdout,x); } void writeint (int x) { fwriteint(stdout,x); newline(); } void writefloat (float x) { fwritefloat(stdout,x); newline(); } void writedouble (double x) { fwritedouble(stdout,x); newline(); } void writestring (char s[]) { fwritestring(stdout,s); } void writeline (char s[]) { writestring(s); newline(); } void newline (void) { fnewline(stdout); } FHANDLE fopenreadfile (char filename[]) { FHANDLE f = fopen(filename,"rt"); if (f == NULL) { fprintf(stderr,"Erro na abertura do arquivo de leitura: %s\n",filename); exit(1); } return f; } FHANDLE fopenwritefile (char filename[]) { FHANDLE f = fopen(filename,"wt"); if (f == NULL) { fprintf(stderr,"Erro na abertura do arquivo de escrita: %s\n",filename); exit(1); } return f; } void fclosefile (FHANDLE f) { fclose(f); } int fisend (FHANDLE f) { char c; if (fscanf(f," %c",&c)!=1) return 1; ungetc(c,f); return 0; } char freadchar (FHANDLE f) { char v; if (fscanf(f," %c",&v) != 1) { fprintf(stderr,"Erro na leitura do 'char'.\n"); exit(1); } return v; } char freadanychar (FHANDLE f) { char v; if (fscanf(f,"%c",&v) != 1) { fprintf(stderr,"Erro na leitura do 'char'.\n"); exit(1); } return v; } int freadint (FHANDLE f) { int v; if (fscanf(f,"%d",&v) != 1) { fprintf(stderr,"Erro na leitura do 'int'.\n"); exit(1); } return v; } float freadfloat (FHANDLE f) { float v; if (fscanf(f,"%g",&v) != 1) { fprintf(stderr,"Erro na leitura do 'float'.\n"); exit(1); } return v; } double freaddouble (FHANDLE f) { double v; if (fscanf(f,"%lg",&v) != 1) { fprintf(stderr,"Erro na leitura do 'double'.\n"); exit(1); } return v; } void freadword (FHANDLE f, char s[], int nmax) { char fmt[BUFSIZ]; sprintf(fmt,"%%%ds",nmax-1); if (fscanf(f,fmt,s) != 1) { fprintf(stderr,"Erro na leitura do 'string'.\n"); exit(1); } } void freadline (FHANDLE f, char s[], int nmax) { char fmt[BUFSIZ]; sprintf(fmt," %%%d[^\n]%%1*[\n]",nmax-1); if (fscanf(f,fmt,s) != 1) { fprintf(stderr,"Erro na leitura do 'string'.\n"); exit(1); } } void fwritechar (FHANDLE f, char x) { fprintf(f,"%c",x); } void fwriteint (FHANDLE f, int x) { fprintf(f,"%d ",x); } void fwritefloat (FHANDLE f, float x) { fprintf(f,"%.20g ",x); } void fwritedouble (FHANDLE f, double x) { fprintf(f,"%.20g ",x); } void fwritestring (FHANDLE f, char s[]) { fprintf(f,"%s ",s); } void fwriteline (FHANDLE f, char s[]) { fwritestring(f,s); fnewline(f); } void fnewline (FHANDLE f) { fprintf(f,"\n"); } [/codebox] Po é isso, espero que eu tenha ajudado... ;) Falow