(2) Faça um programa que crie um registro Carro com os campos: marca, ano, distância percorrida na última viagem (em quilômetros) e consumo de combustível na última viagem (em litros). Seu programa deverá alocar uma variável do tipo Carro e ler as informações de um carro em particular. Em seguida, deve informar no dispositivo de saída padrão quantos quilômetros por litro o carro em questão realizou em sua última viagem. Assuma que o carro sempre terá consumido alguma quantidade de combustível.

Exemplo de entrada:

Digite a marca: FIAT
Digite o ano: 2008
Digite a distância: 62.5
Digite o consumo: 5.3

Exemplo de saída:

Quilômetros por litro: 11.7925

Passo 1

Então, o que pede a questão? A gente precisa criar um “registro” (em C isso é um struct) chamado Carro, que vai ter:
  • marca (texto)
  • ano (inteiro)
  • distância percorrida na última viagem (double)
  • consumo de combustível na última viagem (double)
Depois, o programa deve:
  1. Alocar uma variável desse tipo Carro (usando malloc ou direto na pilha).
  2. Ler cada um desses campos do teclado.
  3. Calcular quantos quilômetros o carro fez por litro na última viagem.
  4. Mostrar esse resultado na tela.
Conteúdo envolvido: struct em C, alocação dinâmica (malloc), leitura com scanf, divisão de números de ponto flutuante e saída formatada com printf.

Passo 2

Vamos criar o struct e alocar a variável. Em C a gente faz assim:
#include <stdio.h>
#include <stdlib.h>

typedef struct {
    char marca[50];
    int ano;
    double distancia;
    double consumo;
} Carro;

int main() {
    // alocando dinamicamente um Carro
    Carro *meuCarro = (Carro*) malloc(sizeof(Carro));
    if (meuCarro == NULL) {
        printf("Falha na alocação de memória\n");
        return 1;
    }
    // a partir daqui a gente vai ler os dados em meuCarro->...
Explicando rapidinho:
  • struct agrupa vários campos sob um único nome.
  • malloc(sizeof(Carro)) reserva memória para um Carro.
  • meuCarro->campo é a sintaxe pra acessar cada campo via ponteiro.

Passo 3

Agora, vamos ler as informações que o usuário vai digitar:
    printf("Digite a marca: ");
    scanf("%49s", meuCarro->marca);

    printf("Digite o ano: ");
    scanf("%d", &meuCarro->ano);

    printf("Digite a distância: ");
    scanf("%lf", &meuCarro->distancia);

    printf("Digite o consumo: ");
    scanf("%lf", &meuCarro->consumo);
Teoria envolvida:
  • scanf lê da entrada padrão e armazena na variável apontada.
  • %s pra string, %d pra inteiro, %lf pra double.
  • Colocamos & antes das variáveis escalares (int, double) para passar o endereço.

Passo 4

A mágica está na divisão da distância pelo consumo:
A fórmula é
rendimento (km/l) = distância (km)consumo (l) â
Em código:
    double rendimento = meuCarro->distancia / meuCarro->consumo;
Aqui tá rolando divisão de dois double, então o resultado também será double.

Passo 5

Por fim, exibimos o resultado formatado com 4 casas decimais (pra bater com o exemplo):
    printf("Quilômetros por litro: %.4f\n", rendimento);
    free(meuCarro);
    return 0;
}
  • %.4f diz “mostra um número de ponto flutuante com 4 casas decimais”.
  • free devolve a memória que alocamos.

Resposta

Quilômetros por litro: 11.7925

Exercícios relacionados