mirror of
https://gitlab.com/blau_araujo/cblc.git
synced 2025-05-09 18:16:37 -03:00
71 lines
2.1 KiB
Org Mode
71 lines
2.1 KiB
Org Mode
#+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
|
|
<valor>[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
|
|
|
|
|