Considere a seguinte declaração: int A, *B,
C,
; Escreva um programa que leia a variável a e calcule e exiba o dobro, o triplo e o quádruplo desse valor utilizando apenas os ponteiros B, C e D. O ponteiro B deve ser usada para calcular o dobro, C o triplo e D o quádruplo.
Passo 1
O enunciado pede um programa em C que declare as variáveis
int A, *B, **C, ***D;
e use apenas os ponteiros B, C e D para ler um valor em A e calcular o dobro, triplo e quádruplo dele. O conteúdo é ponteiros e desreferenciação em C.
int A, *B, **C, ***D;
e use apenas os ponteiros B, C e D para ler um valor em A e calcular o dobro, triplo e quádruplo dele. O conteúdo é ponteiros e desreferenciação em C.
Passo 2
Precisamos primeiro vincular cada ponteiro ao nível correto de indirection: B deve apontar para A, C para B e D para C. Isso nos permite usar *B para acessar A, **C também para A e ***D também para A.
Passo 3
Para ler o valor de A usando ponteiro, usamos scanf passando B (que é &A). Assim scanf("%d", B) escreve diretamente em A.
Passo 4
Para calcular o dobro, triplo e quádruplo, basta desreferenciar no nível correto e multiplicar:
- dobro: *B * 2
- triplo: **C * 3
- quádruplo: ***D * 4
Passo 5
Por fim, exibimos os resultados com printf, usando as expressões dos ponteiros já calculadas. Mantemos o código claro e passo a passo.
Segue o programa completo em C:
Segue o programa completo em C:
#include <stdio.h>
int main(void) {
int A, *B, **C, ***D;
B = &A;
C = &B;
D = &C;
printf("Digite um valor: ");
scanf("%d", B);
printf("Dobro: %d\n", *B * 2);
printf("Triplo: %d\n", **C * 3);
printf("Quádruplo: %d\n", ***D * 4);
return 0;
}
Resposta
#include <stdio.h
int main(void) {
int A, *B, **C, ***D;
B = &A;
C = &B;
D = &C;
printf("Digite um valor: ");
scanf("%d", B);
printf("Dobro: %d\n", *B * 2);
printf("Triplo: %d\n", **C * 3);
printf("Quádruplo: %d\n", ***D * 4);
return 0;
}