Exercício 1
Comentário: (digite uma frase para facilitar a busca)
O comando condicional permite que blocos diferentes de comandos sejam executados, dependendo do resultado de uma expressão lógica (uma expressão cujo resultado é Verdadeiro ou Falso).
O formato geral do comando condicional if é:
if (expressão_lógica) {
bloco_de_comandos1
}
else {
bloco_de_comandos2
}
O que ocorre na execução:
Um exemplo de uso de comando condicional é dado abaixo.
if (media >= 5.0) { printf("Aprovado\n"); } else { printf("Reprovado\n"); }
O que ocorre na execução:
Os seguintes operadores de comparação são disponíveis em Javascript:
Símbolo | Operação | Exemplo |
---|---|---|
> | maior | media > 6.0 |
< | menor | nota2 < nota1*2 |
>= | maior ou igual | nota2 >= nota1 |
<= | menor ou igual | x <= 3*y |
=== | igual | media === 10.0 |
!== | diferente | nota2 !== 0.0 |
Muitas vezes não temos necessidade da cláusula "senão" do comando condicional, pois não há nada a ser feito. Nesses casos, podemos omitir a cláusula "else" do comando condicional, que fica então com o seguinte formato:
if expressão_lógica {
bloco_de_comandos1
}
else {
bloco_de_comandos2
}
Exemplo:
if (media === 10.0) { printf("Parabéns!\n"); }
O Comando Suponha que ao invés de escrever a média de um aluno, queiramos escrever
um conceito, como A, B, e C. O conceito é determinado da seguinte forma:
Podemos iniciar o teste das múltiplas condições com um
comando if para testar se a média é maior do que ou igual a
8.0, e se for escrevemos 'A'.
if (media >= 8.0) {
printf("A\n");
}
else
Se a média não for maior o do que ou igual a 8.0, podemos encadear um outro
comando if para testar então se a média é maior do que ou
igual a 5.0. Se for, escrevemos 'B'. Se não for, escrevemos 'C'.
if (media >= 8.0) {
printf("A\n");
}
else if (media >= 5.0) {
printf("B\n");
}
else {
printf("C\n");
}
Escreva um programa que
A única linha da entrada contém dois números inteiros distintos A e B.
Seu programa deve escrever uma única linha na saída, contendo um número inteiro, o triplo do maior valor lido da entrada.
A entrada obedece às seguintes restrições:
Entrada
10 11 |
Saída
33 |
Entrada
1000 234 |
Saída
3000 |
Entrada
1 0 |
Saída
2 |
Para descontrair os alunos após as provas da OBI, a Diretora da escola organizou um campeonato de aviões de papel. Cada aluno participante receberá uma certa quantidade de folhas de um papel especial para fazer os seus modelos de aviões. A quantidade de folhas que cada aluno deverá receber ainda não foi determinada: ela será decidida pelos juízes do campeonato.
A diretora convidou, para atuarem como juízes, engenheiros da Embraer, uma das mais bem sucedidas empresas brasileiras, que vende aviões com tecnologia brasileira no mundo todo. O campeonato está programado para começar logo após a prova da OBI, mas os juízes ainda não chegaram à escola. A diretora está aflita, pois comprou uma boa quantidade de folhas de papel especial, mas não sabe se a quantidade comprada vai ser suficiente.
Considere, por exemplo, que a Diretora comprou 100 folhas de papel especial, e que há 33 competidores. Se os juízes decidirem que cada competidor tem direito a três folhas de papel, a quantidade comprada pela diretora é suficiente. Mas se os juízes decidirem que cada competidor tem direito a quatro folhas, a quantidade comprada pela diretora não seria suficiente.
Você deve escrever um programa que, dados o número de competidores, o número de folhas de papel especial compradas pela Diretora e o número de folhas que cada competidor deve receber, determine se o número de folhas comprado pela Diretora é suficiente.
A entrada é composta de uma linha contendo três números inteiros C, P e F representando respectivamente o número de competidores, a quantidade de folhas de papel especial compradas pela Diretora e a quantidade de folhas de papel especial que cada competidor deve receber.
Seu programa deve escrever uma única linha contendo o caractere 'S' se a quantidade de folhas compradas pela Diretora é suficiente, ou o caractere 'N' caso contrário. Note que os caracteres devem ser letras maiúsculas.
Entrada
10 100 10 |
Saída
S |
Entrada
10 90 10 |
Saída
N |
Entrada
5 40 2 |
Saída
S |
Tarefa da OBI2009, Modalidade Programação Júnior, Fase 1
A Companhia de Taxi Tabajara (CTT) é uma das maiores empresas de transporte do país. Possui uma vasta frota de carros e opera em todas as grandes cidades. Recentemente a CTT modernizou a sua frota, adquirindo um lote de 500 carros bi-combustíveis (carros que podem utilizar como combustível tanto álcool quanto gasolina). Além do maior conforto para os passageiros e o menor gasto com manutenção, com os novos carros é possível uma redução adicional de custo: como o preço da gasolina está sujeito a variações muito bruscas e pode ser vantagem, em certos momentos, utilizar álcool como combustível. Entretanto, os carros possuem um melhor desempenho utilizando gasolina, ou seja, em geral, um carro percorre mais quilômetros por litro de gasolina do que por litro de álcool.
Você deve escrever um programa que, dados o preço do litro de álcool, o preço do litro de gasolina e os quilômetros por litro que um carro bi-combustível realiza com cada um desses combustíveis, determine se é mais econômico abastecer os carros da CTT com álcool ou com gasolina. No caso de não haver diferença de custo entre abastecer com álcool ou gasolina a CTT prefere utilizar gasolina.
A entrada é composta por uma linha contendo quatro números reais com precisão de duas casas decimais A, G, Ra e Rg, representando respectivamente o preço por litro do álcool, o preço por litro da gasolina, o rendimento (km/l) do carro utilizando álcool e o rendimento (km/l) do carro utilizando gasolina.
A saída deve ser composta por uma única linha contendo o caractere ‘A’ se é mais econômico abastecer a frota com álcool ou o caractere ‘G’ se é mais econômico ou indiferente abastecer a frota com gasolina.
Entrada
1.20 2.30 10.00 15.00 |
Saída
A |
Entrada
1.00 1.00 9.00 9.01 |
Saída
G |
Entrada
1.00 1.00 11.00 11.00 |
Saída
G |
Tarefa da OBI2005, Modalidade Programação Nível 1, Fase 1
Rosy é uma talentosa professora do Ensino Médio que já ganhou muitos prêmios pela qualidade de sua aula. Seu reconhecimento foi tamanho que foi convidada a dar aulas em uma escola da Inglaterra. Mesmo falando bem inglês, Rosy ficou um pouco apreensiva com a responsabilidade, mas resolveu aceitar a proposta e encará-la como um bom desafio.
Tudo ocorreu bem para Rosy até o dia da prova. Acostumada a dar notas de 0 (zero) a 100 (cem), ela fez o mesmo na primeira prova dos alunos da Inglaterra. No entanto, os alunos acharam estranho, pois na Inglaterra o sistema de notas é diferente: as notas devem ser dadas como conceitos de A a E. O conceito A é o mais alto, enquanto o conceito E é o mais baixo.
Conversando com outros professores, ela recebeu a sugestão de utilizar a seguinte tabela, relacionando as notas numéricas com as notas de conceitos:
Nota | Conceito |
---|---|
86 a 100 | A |
61 a 85 | B |
36 a 60 | C |
1 a 35 | D |
0 | E |
O problema é que Rosy já deu as notas no sistema numérico, e terá que converter as notas para o sistema de letras. Porém, Rosy precisa preparar as próximas aulas (para manter a qualidade que a tornou reconhecida), e não tem tempo suficiente para fazer a conversão das notas manualmente.
Você deve escrever um programa que recebe uma nota no sistema numérico e determina o conceito correspondente.
A entrada contém um único conjunto de testes, que deve ser lido do dispositivo de entrada padrão (normalmente o teclado). A entrada contém uma única linha com um número inteiro N (0 ≤ N ≤ 100), representando uma nota de prova no sistema numérico.
Seu programa deve imprimir uma única linha, contendo uma letra (A, B, C, D, ou E em maiúsculas) representando o conceito correspondente à nota dada na entrada.
Entrada
12 |
Saída
D |
Entrada
87 |
Saída
A |
Entrada
0 |
Saída
E |
Tarefa da OBI2009, Modalidade Programação Júnior, Fase 1
A empresa local de abastecimento de água, a Saneamento Básico da Cidade (SBC), está promovendo uma campanha de conservação de água, distribuindo cartilhas e promovendo açãoes demonstrando a importância da água para a vida e para o meio ambiente.
Para incentivar mais ainda a economia de água, a SBC alterou os preços de seu fornecimento de forma que, proporcionalmente, aqueles clientes que consumirem menos água paguem menos pelo metro cúbico. Todo cliente paga mensalmente uma assinatura de R$ 7, que inclui uma franquia de 10 m3 de água. Isto é, para qualquer consumo entre 0 e 10 m3, o consumidor paga a mesma quantia de R$ 7 reais (note que o valor da assinatura deve ser pago mesmo que o consumidor não tenha consumido água). Acima de 10 m3, cada metro cúbico subsequente tem um valor diferente, dependendo da faixa de consumo. A SBC cobra apenas por quantidades inteiras de metros cúbicos consumidos. A tabela abaixo especifica o preço por metro cúbico para cada faixa de consumo:
Faixa de consumo (m3) | Preço (por m3) |
até 10 11 a 30 31 a 100 101 em diante |
incluído na franquia R$ 1 R$ 2 R$ 5 |
Assim, por exemplo, se o consumo foi de 120 m3, o valor da conta é:
Logo o valor total da conta de água é R$ 267.
Escreva um programa que, dado o consumo de uma residência em m3, calcula o valor da conta de água daquela residência.
A única linha da entrada contém um único inteiro N, indicando o consumo de água da residência, em m3 (0 ≤ N ≤ 103).
Seu programa deve escrever uma única linha, contendo o valor da conta de água da residência.
Entrada
8 |
Saída
7 |
Entrada
14 |
Saída
11 |
Entrada
42 |
Saída
51 |
Tarefa da OBI2010, Modalidade Programação Nível 1, Fase 1
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 para o exercício 1, Aula 6 // Triplo do maior var valor1, valor2; // lê a entrada scanf("%d%d", "valor1", "valor2"); // calcula e escreve o resultado if (valor1 > valor2) { printf("%d\n", 3*valor1); } else { printf("%d\n", 3*valor2); }
Solução do Exercício 2
// Solução para o exercício 2, Aula 6 // Aviões de papel var C, P, F; // lê a entrada scanf("%d%d%d", "C", "P", "F"); // calcula e escreve o resultado if (C * F <= P) { printf("S\n"); } else { printf("N\n"); }
Solução do Exercício 3
Podemos determinar a opção mais econômica de duas formas. Uma é comparar o preço de cada km rodado com cada um dos combustíveis. O código segue abaixo.
// Solução para o exercício 2, Aula 6 // Frota de taxi var preco_a, preco_g; // Preço do litro do álcool e da gasolina var km_a, km_g; // Rendimento do álcool e da gasolina, em km/l // lê a entrada scanf("%f%f%f%f", "preco_a", "preco_g", "km_a", "km_g"); // calcula e escreve o resultado // compara o preço do km rodado com cada combustível if (preco_a/km_a < preco_g/km_g) { printf("A\n"); } else { printf("G\n"); }
Outra maneira é comparar qual dos combustíveis permite que o carro ande mais quilômetros, considerando que um mesmo valor é gasto para comprar cada tipo de combustível. O código segue abaixo.
// Solução para o exercício 2, Aula 6 // Frota de taxi var preco_a, preco_g; // Preço do litro do álcool e da gasolina var km_a, km_g; // Rendimento do álcool e da gasolina, em km/l // lê a entrada scanf("%f%f%f%f", "preco_a", "preco_g", "km_a", "km_g"); // calcula e escreve o resultado // compara qual combustível permite que o carro ande mais quilômetros // com o mesmo gasto de combustível if (km_a/preco_a > km_g/preco_g) { printf("A\n"); } else { printf("G\n"); }
Solução do Exercício 4
// Solução para o exercício 4, Aula 6 // Notas da prova var N; // lê a entrada scanf("%d", "N"); // calcula e escreve o resultado // percorre os intervalos em ordem decrescente if (N >= 86) { // intervalo 86 a 100 printf("A\n"); } else if (N >= 61) { // intervalo 61 a 85 printf("B\n"); } else if (N >= 36) { // intervalo 36 a 60 printf("C\n"); } else if (N >= 1) { // intervalo 1 a 35 printf("D\n"); } else { // N===0 printf("E\n"); }Outra maneira é comparar os intervalos de notas numéricas em ordem crescente de notas. O código segue abaixo.
// Solução para o exercício 4, Aula 6 // Notas da prova var N; // lê a entrada scanf("%d", "N"); // calcula e escreve o resultado // percorre os intervalos em ordem crescente if (N===0) { // N===0 printf("E\n"); } else if (N <= 35) { // intervalo 1 a 35 printf("D\n"); } else if (N <= 60) { // intervalo 36 a 60 printf("C\n"); } else if (N <= 85) { // intervalo 61 a 85 printf("B\n"); } else { // intervalo 86 a 100 printf("A\n"); }
Solução do Exercício 5
// Solução para o exercício 5, Aula 6 // Conta de água var N; // consumo de água // lê a entrada scanf("%d", "N"); // calcula e escreve o resultado if (N <= 10) { // paga apenas a franquia de R$ 7,00 printf("%d\n", 7); } else if (N <= 30) { // paga a franquia de R$ 7,00 // mais o consumo que excede 10m3 ao preço de R$ 1,00 por m3 printf("%d\n", 7 + (N - 10)); } else if (N <= 100) { // paga a franquia de R$ 7,00 // mais R$ 20,00 pelo consumo de 10m3 a 30m3 (20m3 a R$ 1,00) // mais o consumo que excede 30m3 ao preço de R$ 2,00 por m3 printf("%d\n", 27 + 2 * (N - 30)); } else { // paga a franquia de R$ 7,00 // mais R$ 20,00 pelo consumo de 10m3 a 30m3 (20m3 a R$ 1,00) // mais R$ 140,00 pelo consumo até de 30m3 a 100m3 (70m3 a R$ 2,00) // mais o consumo que excede 100m3 ao preço de R$ 5,00 por m3 printf("%d\n", 167 + 5 * (N - 100)); }