Considere a seguinte declaração: int A, *B, ^* * C, ^* * * D; 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.

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:
#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;
}

Exercícios relacionados