Caso a questão peça para fazer uma função, a função não pode conter, dentro dela, comandos de interação com usuário, como input, disp, scanf ou mprintf. Se algum comando de interação com usuário existir dentro da função, a nota será automaticamente o,o. Além disso, para essas questões que pedem para fazer uma função, é permitido fazer várias funções, desde que exista uma função principal, ou seja, que combine todas as outras. Nessas questões, todo o código-fonte que existir fora das funções será ignorado.
É necessário utilizar o comando for para resolver os problemas descritos. É permitido utilizar os comandos continue e break. Não é permitido usar o comando while. O objetivo disso é que você perceba a diferença quando esses comandos passarem a ser utilizados, se tornam mais fácil ou mais difícil a resolução do problema.
Escreva um programa que leia o valor inicial
e a razão
de uma progressão aritmética, bem como uma quantidade
de elementos, e exiba os valores de
até
dessa progressão.
É necessário utilizar o comando for para resolver os problemas descritos. É permitido utilizar os comandos continue e break. Não é permitido usar o comando while. O objetivo disso é que você perceba a diferença quando esses comandos passarem a ser utilizados, se tornam mais fácil ou mais difícil a resolução do problema.
Escreva um programa que leia o valor inicial
Passo 1
Beleza, a gente tem que escrever um programa em C que leia três coisas do usuário:
- o valor inicial da progressão aritmética, chamado de
, - a razão
, - a quantidade de elementos
(queremos de até ).
O conteúdo da matéria é progressão aritmética (PA) e uso de laço
Para resolver precisamos:
for
em C.Para resolver precisamos:
- Saber a fórmula geral de uma PA,
- Montar um
for
que vá de 0 até n, - Separar a leitura de dados (em
main
) e a geração/exibição da PA (em uma função).
Passo 2
Teoria da PA: numa progressão aritmética, cada termo avança sempre a mesma “diferença” (razão)
.
A fórmula do k-ésimo termo é
A fórmula do k-ésimo termo é
Isso significa que, se quisermos do
até o
, basta variar
de 0 a
e aplicar essa fórmula.
Passo 3
Planejamento do código:
- Em
main
, fazemosscanf
para ler, e . - Criamos uma função
void geraPA(double a0, double r, int n)
que:- Usa
for (int k = 0; k <= n; k++)
- Calcula
double termo = a0 + k*r;
- Dá
printf
desse termo.
- Usa
- Chamamos
geraPA(a0, r, n);
emmain
. - Não colocamos nenhum
scanf
ouprintf
dentro degeraPA
além doprintf
dos termos.
Resposta
#include <stdio.h>
// Função que gera e exibe os termos de uma PA
// sem usar input dentro dela.
void geraPA(double a0, double r, int n) {
for (int k = 0; k <= n; k++) {
double termo = a0 + k * r; // a_k = a0 + k*r
printf("a_%d = %.2f\n", k, termo);
}
}
int main() {
double a0, r;
int n;
// Leitura dos parâmetros da PA
printf("Digite a0, r e n: ");
if (scanf("%lf %lf %d", &a0, &r, &n) != 3) {
printf("Entrada inválida!\n");
return 1;
}
// Chama a função principal que gera a PA
geraPA(a0, r, n);
return 0;
}