cblc/exercicios/11/README.org

2.1 KiB

Curso Básico da Linguagem C

Exercícios da aula 11: Leitura da entrada padrão com 'scanf'

1. Desafio: Conversão Milhas->Km e Km->Milhas

Utilizando a função scanf para receber os valores digitados no formato:

<valor>[m, k ou km]

Crie um programa que converta o valor de uma unidade para outra:

  • Se a unidade for k ou km, converter para milhas;
  • Se a unidade for m, converter para quilômetros;
  • Se não houver unidade, presume-se o valor em quilômetros;
  • Espaços entre o valor e a unidade devem ser ignorados;
  • As unidades podem ser escritas em maiúsculas ou minúsculas;
  • Tudo após a unidade deve ser ignorado;
  • Valores devem poder ser passados com representações de ponto flutuante;
  • Resultados sempre serão impressos em ponto flutuante e duas casas de precisão.

2. Desafio: Separação de linhas em campos

Considerando o arquivo ender.csv, abaixo:

Maria das Couves, Rua da Horta, 23, Hortolândia, PR
João da Silva, Av. da Prata, 42, Silverado, RS
Antônio Pereira, Av. dos Pomares, 65, Pomorânia, SP

Crie um programa que, usando scanf, liste os dados em cada linha desta forma:

Nome    : ...
Endereço: ...
Cidade  : ...
Estado  : ...

O programa deve ser executado com:

./a.out < ender.csv

3. Desafio: Implementando um 'cat' com 'scanf'

Crie um programa que, ao ser executado em um pipe ou com um redirecionamento de leitura, imprima todas as linhas de um arquivo. Se executado sem operadores, o programa deve imprimir todas as linhas digitadas no terminal antes do atalho Ctrl+D.

Exemplos:

./a.out < /etc/shells        # Imprime todas as linhas de /etc/shells
cat /etc/shells | ./a.out    # Imprime todas as linhas enviadas pelo cat
./a.out                      # Espera Ctrl+D para imprimir todas as linhas digitadas