Aula 5 - Comando de leitura scanf
  • Resumo
  • Exercício 1
  • Exercício 2
  • Exercício 3
  • Exercício 4
  • Soluções
Avalie esta aula

Comando de leitura: scanf

O comando de leitura permite que o programa interaja com o "mundo externo", fazendo a entrada de dados para o programa. O formato geral do comando é:

scanf("cadeia formatadora", "var1", "var2", …);

O comando de leitura lê dados da entrada, e atribui os valores lidos às variáveis listadas no comando. A lista de variáveis deve ser separada por vírgulas, e o nome de cada variável deve ser colocado entre aspas duplas.

Exemplo:

scanf("%d%d", "nota1", "nota2");

O que ocorre na execução:

  • o programa lê dois números inteiros da entrada;
  • o primeiro inteiro lido é atribuído à variável nota1, o segundo inteiro lido é atribuído à variável nota2.

Podemos também ler valores reais (com casas decimais), usando o especificador %f na cadeia formatadora. Exemplo:

var x, y;

scanf("%f%f", "x", "y");
Não é necessário indicar os separadores (espaço em branco ou quebra de linha) entre os especificadores na cadeia formatadora do comando scanf. O sistema procura os separadores enquanto lê os valores da entrada. Ou seja, para ler uma entrada que consiste em três valores inteiros em duas linhas, como este exemplo:
10
100 200

você pode usar o código abaixo:

var x, y, z;

scanf("%d%d%d", "x", "y", "z");
Alternativamente, você pode especificar explicitamente os separadores na cadeia formatadora do comando scanf. No entanto, nesse caso é necessário que os especificadores reflitam exatamente o formato da entrada. Ou seja, para a entrada acima, o comando de leitura deve especificar a quebra de linha e o espaço em branco entre o segundo e terceiro números:
var x, y, z;

scanf("%d\n%d %d", "x", "y", "z");

 

 

 

Avalie este exercício

Nota dobrada

Escreva um programa que

  • declare uma variável de nome nota
  • use o comando scanf para ler da entrada um valor inteiro para a variável nota.
  • escreva uma linha na saída, contendo um inteiro, o dobro do valor lido da entrada (e que foi armazenado a variável nota pelo comando scanf).

Entrada

A única linha da entrada contém um número inteiro N.

Saída

Seu programa deve escrever uma única linha na saída, contendo um número inteiro, o dobro do valor lido da entrada.

Restrições

A entrada obedece às seguintes restrições:

  • 0 ≤ N ≤ 1000

Exemplos

Entrada
10
Saída
20

Entrada
1000
Saída
2000

Entrada
91
Saída
182

 

 

Avalie este exercício

Média do aluno

Sua professora está cansada de calcular as médias dos alunos da turma e pediu que você escreva um programa que

  • leia três números inteiros da entrada, correspondendo às notas de três provas;
  • calcule a média das notas das três provas e escreva uma linha na saída contendo o resultado, como um número real com precisão de uma casa decimal.

Entrada

A única linha da entrada contém três números inteiros N1, N2 e N3, indicando as notas de um aluno nas três provas.

Saída

Seu programa deve escrever uma única linha na saída, contendo um número real com uma casa decimal de precisão, a média das três notas.

Restrições

A entrada obedece às seguintes restrições:

  • 0 ≤ N1 ≤ 10
  • 0 ≤ N2 ≤ 10
  • 0 ≤ N3 ≤ 10

Exemplos

Entrada
5 6 7
Saída
6.0

Entrada
10 9 9
Saída
9.3

Entrada
8 5 7
Saída
6.7

 

 

Avalie este exercício

Calibrando Pneus

Calibrar os pneus do carro deve ser uma tarefa cotidiana de todos os motoristas. Para isto, os postos de gasolina possuem uma bomba de ar. A maioria das bombas atuais são eletrônicas, permitindo que o motorista indique a pressão desejada num teclado. Ao ser ligada ao pneu, a bomba primeiro lê a pressão atual e calcula a diferença de pressão entre a desejada e a lida. Com esta diferença ela esvazia ou enche o pneu para chegar na pressão correta. Sua ajuda foi requisitada para desenvolver o programa da próxima bomba da SBC - Sistemas de Bombas Computadorizadas. Escreva um programa que, dada a pressão desejada digitada pelo motorista e a pressão do pneu lida pela bomba, indica a diferença entre a pressão desejada e a pressão lida.

Entrada

A primeira linha da entrada contém um inteiro N que indica a pressão desejada pelo motorista. A segunda linha contém um inteiro M que indica a pressão lida pela bomba.

Saída

Seu programa deve imprimir uma única linha, contendo a diferença entre a pressão desejada e a pressão lida.

Restrições

A entrada obedece às seguintes restrições:

  • 1 ≤ N ≤ 40
  • 1 ≤ M ≤ 40

Exemplos

Entrada
30
18
Saída
12

Entrada
27
27
Saída
0

Entrada
27
30
Saída
-3

Tarefa da OBI2010, Modalidade Programação Júnior, Fase 1

 

 

Avalie este exercício

Tomadas

A Olimpíada Internacional de Informática (IOI, no original em inglês) é a mais prestigiosa competição de programação para alunos até o ensino médio; a cada ano, aproximadamente 300 competidores, de oitenta países, se reúnem em um país diferente para as provas da competição. Naturalmente, os competidores usam o tempo livre para acessar a Internet, programar e jogar em seus notebooks. No entanto, eles se depararam com um problema: o saguão do hotel só tem uma tomada.

Felizmente, os quatro competidores da equipe brasileira da IOI trouxeram cada um uma régua de tomadas, permitindo assim ligar vários notebooks em uma só tomada do saguão. Eles sabem também que podem ligar uma régua em outra para aumentar ainda mais o número de tomadas disponíveis. No entanto, como as réguas têm muitas tomadas, eles pediram para você escrever um programa que, dado o número de tomadas em cada régua, determine o número máximo de notebooks que podem ser conectados a tomadas num mesmo instante.

Entrada

A entrada consiste de uma linha com quatro inteiros positivos T1, T2, T3, T4, indicando o número de tomadas de cada uma das quatro réguas.

Saída

Seu programa deve imprimir uma única linha contendo um único número inteiro, indicando o número máximo de notebooks que podem ser conectados a tomadas num mesmo instante.

Restrições

Na entrada, em todos os testes, cada régua de tomadas tem entre duas e seis tomadas. Ou seja, a entrada obedece às seguintes restrições:
  • 2 ≤ T1 ≤ 6
  • 2 ≤ T2 ≤ 6
  • 2 ≤ T3 ≤ 6
  • 2 ≤ T4 ≤ 6

Exemplos

Entrada
2 4 3 2
Saída
8

Entrada
6 6 6 6
Saída
21

Entrada
2 2 2 3
Saída
6

Tarefa da OBI2013, Modalidade Programação Júnior, Fase 1

 

 

Avalie esta aula

Soluções para os exercícios

Nesta seção você encontra exemplos de soluções para os exercícios. Mas antes de ver a solução para um exercício tente resolvê-lo, criando a sua própria solução.

Solução do Exercício 1
Solução do Exercício 1
// Solução para o exercício 1, Aula 5
// Nota dobrada

var nota;

// lê um valor inteiro
scanf("%d", "nota");

// escreve o resultado
printf("%d\n", 2*nota);

 

Solução do Exercício 2
Solução do Exercício 2
// Solução para o exercício 1, Aula 5
// Média da prova

var nota1, nota2, nota3;

// lê as três notas
scanf("%d%d%d", "nota1", "nota2", "nota3");

// escreve o resultado
printf("%.1f\n", (nota1+nota2+nota3)/3.0);

 

Solução do Exercício 3
Solução do Exercício 3
// Solução para o exercício 2, Aula 5
// Calibrando pneus

var n, m;

// lê a entrada
scanf("%d%d", "n", "m");

// escreve o resultado
printf("%d\n",n-m);

 

Solução do Exercício 4
Solução do Exercício 4
// Solução para o exercício 3, Aula 5
// Tomadas

var t1, t2, t3, t4, total;

// lê a entrada
scanf("%d%d%d%d", "t1", "t2", "t3", "t4");

// soma todas as tomadas nos quatro tomadeiros
total = t1 + t2 + t3 + t4;

// mas cada uma das três primeiras réguas tem uma tomada ligada à próxima régua
// então temos três tomadas a menos disponíveis para notebooks

total = total - 3;

// escreve o resultado
printf("%d\n",total);

 

 

 
Área de Trabalho
Entrada
Programa
Saída