diff --git a/exercicios/11/README.org b/exercicios/11/README.org new file mode 100644 index 0000000..bd028d7 --- /dev/null +++ b/exercicios/11/README.org @@ -0,0 +1,71 @@ +#+title: Curso Básico da Linguagem C +#+subtitle: Exercícios +#+author: Blau Araujo +#+startup: show2levels +#+options: toc:3 + +* Exercícios da aula 11: Leitura da entrada padrão com 'scanf' + +- [[../../aulas/11-scanf/README.org][Anotações da aula]] +- [[https://youtu.be/MZiI95b2gdY][Vídeo]] + +** 1. Desafio: Conversão Milhas->Km e Km->Milhas + +Utilizando a função =scanf= para receber os valores digitados no formato: + +#+begin_example +[m, k ou km] +#+end_example + +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: + +#+begin_example +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 +#+end_example + +Crie um programa que, usando =scanf=, liste os dados em cada linha desta forma: + +#+begin_example +Nome : ... +Endereço: ... +Cidade : ... +Estado : ... +#+end_example + +O programa deve ser executado com: + +#+begin_example +./a.out < ender.csv +#+end_example + +** 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: + +#+begin_example +./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 +#+end_example + +