Buscar

resumo de formulas em C

Prévia do material em texto

Formulas em C
Quando se trata de cálculos com formulas é muito utilizável o uso de funções que retornem o resultado e estruturas de repetição. 
Nível 1
- Crie uma função que recebe como parâmetros a razão e primeiro termo de P.A. que mostre na tela os 10 primeiros termos da P.A. e soma desses 10 termos.
O jeito para mostrar cada membro é repetir 10 vezes onde a cada repetição mostra o valor do termo e depois fazer com esse termo se torne o próximo da PA, ou seja acrescendo o valor da razão. Para fazer a soma cria-se uma variável que faça acumulações de soma. Para fazer acumulações é necessário iniciar a variável com termo neutro da operação, que no caso da soma é 0.
#include <stdio.h>
#include <stdlib.h>
int ProgressaoAritmetica(int razao, int termo)
{
 int soma = 0, i ;// soma já começa inicializada com 0, termo neutro da operação soma
 for ( i = 1 ; i <= 10 ; i++ )// repetirá 10 vezes
 {
 printf("%d ",termo);//mostra o termo
 soma = soma + termo; // pega esse termo e junta com a soma, fazendo a acumulação
 termo = termo + razao;// atualiza o termo para o proximo da PA
 }
 return soma;//Retorna a soma dos 10 primeiros termos
}
int main()
{
 int termo, razao, soma;
 printf("Digite o valor do primeiro termo:\n");
 scanf("%d",&termo);
 printf("Digite o valor da razao da PA:\n");
 scanf("%d",&razao);
 soma = ProgressaoAritmetica(razao,termo);//chama a função que mostra os 10 primeiros termos e retorna a soma deles
 printf("\nO valor da soma dos 10 primeiros termos = %d",soma);
 return 0 ;
}
- Agora o usuário vai digitar indefinidos números e vamos criar um programa que calcula o fatorial de cada número quando ele for maior que zero, caso o usuário digite um número menor ou igual a zero termine o programa.
A acumulação desta vez será por multiplicação, multiplicando um número pelo fatorial do seu antecessor até chegar em 1, onde o fatorial de 1 é o próprio 1, para isso vamos inicializar a variável que fará acumulações com elemento neutro da multiplicação, que é 1 também.
#include <stdio.h>
#include <stdlib.h>
int Fatorial(int n)
{
 int f = 1, i ;// f já começa inicializada com 1, termo neutro da operação multiplicação
 for ( i = n ; i > 0 ; i-- )// de n até 1, decresce 1 a cada repetição
 {
 f = f*i;// acumula a multiplicação
 }
 return f;//Retorna o fatorial de n
}
int main()
{
 int n , fat;
 do
 {
 printf("Digite o valor de numero:\n");
 scanf("%d",&n);
 if ( n > 0 )// se o numero que o suario digitou foi maior que 0 calcula entao o fatorial
 {
 fat = Fatorial(n);// chama a função fatorial
 printf("O fatorial de %d = %d\n",n, fat);
 }
 }while(n > 0);// repete isso enquanto o número for positivo, caso seja 0 ou negativo para de repetir.
 return 0 ;
}
Nível 2
Fazer um programa em Pascal para: 
a) Ler um inteiro N no intervalo [2, 20];
b) Ler 2 valores reais X e Y, tais que (-1 <= X <= +1) e (0 < Y < 1); 
c)Calcular o valor de S obtido com as N primeiras parcelas da soma:
Já podemos perceber cálculos se resumem a acumulações nas repetições, nessa questão vamos calcular a soma de n parcelas, veja que há alternância de sinal.
Teremos que adicionar a biblioteca math.h para fazermos os cálculos de potencia através da função pow(base, expoente).
Parcela 1 = 	Parcela n = 
Parcela 2 = 	Note que se a parcela for par o sinal é negativo
Parcela 3 = 	Se for parcela impar sinal positivo.
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int Formula(int n, float x, float y)
{
 float soma = 0 , parcela, numerador, denominador;// inicia soma = 0 elemento neutro da soma
 int i;
 for ( i = 1 ; i <= n ; i++ )// vai da 1ª parcela a até n-ésima parcela
 {
 numerador = pow(x,i);// x elevado a i
 denominador = pow(1-y,2*i); // 1- y elevado a 2i
 parcela = numerador/denominador;
 if ( i % 2 == 0 )// se a parcela for par tera sinal negativo
 {
 parcela = -1*parcela;
 }
 soma = soma + parcela ;
 }
 return soma;
}
int main()
{
 float x, y, soma;
 int n ;
 do
 {
 printf("Digite n entre [2,20]:\n");
 scanf("%d",&n);
 if ( n < 2 || n > 20 )// quando usuário digitar um valor fora do intervalo da mensagem de erro
 {
 printf("numero fora do intervalo!\n");
 }
 }while( n < 2 || n > 20 );// repete enquanto o usuário terminar em digitar um numero fora do intervalo
 do
 {
 printf("Digite x entre [-1,1]:\n");
 scanf("%f",&x);
 if ( x < -1 || x > 1)// quando usuario digitar um valor fora do intevalo da mensagem de erro
 {
 printf("numero fora do intervalo!\n");
 }
 }while( x < -1 || x > 1 );// repete enquanto o usuário terminar em digitar um numero fora do intervalo
 do
 {
 printf("Digite y entre (0,1):\n");
 scanf("%f",&y);
 if ( y <= 0 || y >=1 )// quando usuário digitar um valor fora do intervalo da mensagem de erro
 {
 printf("numero fora do intervalo!\n");
 }
 }while( y <= 0 || y >= 1 );// repete enquanto o usuário terminar em digitar um numero fora do intervalo
 soma = Formula(n,x,y);
 printf("A soma eh = %.2f",soma);
 return 0 ;
}
Agora mude a formula para esta utilizando o mesmo dados
Novamente os cálculos se resumem a acumulações nas repetições, nessa questão vamos calcular a soma de n parcelas, veja que há alternância de sinal.
Teremos que adicionar a biblioteca math.h para fazermos os cálculos de potencia através da função pow(base, expoente) e raiz quadrada-> srqt(radical), precisaremos também da função fatorial.
Parcela 1 = 	Parcela n = 
Parcela 2 = 	Note que se a parcela for par o sinal é positivo
Parcela 3 = 	Se for parcela impar sinal negativo.
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int Fatorial(int n)
{
 int f = 1, i ;
 for ( i = n ; i > 0 ; i-- )
 {
 f = f*i;
 }
 return f ;
}
int Formula(int n, float x, float y)
{
 float soma = 1 + x - y , parcela, numerador, denominador;// inicia soma com 1 + x - y
 int i;
 for ( i = 2 ; i <= n ; i++ )// vai da 2ª parcela a até n-ésima parcela
 {
 numerador = sqrt(pow(x+y,i));// raiz de (x + y elevado a i)
 denominador = (x-y)*Fatorial(i); // x-y vezes o fatorial de i
 parcela = numerador/denominador;
 if ( i % 2 != 0 )// se a parcela for impar tera sinal negativo
 {
 parcela = -parcela;
 }
 soma = soma + parcela ;
 }
 return soma;
}
int main()
{
 float x, y, soma;
 int n ;
 do
 {
 printf("Digite n entre [2,20]:\n");
 scanf("%d",&n);
 if ( n < 2 || n > 20 )// quando usuário digitar um valor fora do intervalo da mensagem de erro
 {
 printf("numero fora do intervalo!\n");
 }
 }while( n < 2 || n > 20 );// repete enquanto o usuário terminar em digitar um numero fora do intervalo
 do
 {
 printf("Digite x entre [-1,1]:\n");
 scanf("%f",&x);
 if ( x < -1 || x > 1)// quando usuário digitar um valor fora do intervalo da mensagem de erro
 {
 printf("numero fora do intervalo!\n");
 }
 }while( x < -1 || x > 1 );// repete enquanto o usuário terminar em digitar um numero fora do intervalo
 do
 {
 printf("Digite y entre (0,1):\n");
 scanf("%f",&y);
 if ( y <= 0 || y >=1 )// quando usuário digitar um valor fora do intervalo da mensagem de erro
 {
 printf("numero fora do intervalo!\n");
 }
 }while( y <= 0 || y >= 1 );// repete enquanto o usuário terminar em digitar um numero fora do intervalo
 soma = Formula(n,x,y);
 printf("A soma eh = %.2f",soma);
 return 0 ;
}

Outros materiais