Baixe o app para aproveitar ainda mais
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 ; }
Compartilhar