• Nenhum resultado encontrado

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E EDUCAÇÃO DA BAHIA CAMPUS JEQUIÉ CURSO TÉCNICO DE INFORMÁTICA MODALIDADE SUBSEQÜENTE PROF°.: ALEXANDRO DOS SANTOS SILVA

N/A
N/A
Protected

Academic year: 2019

Share "INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E EDUCAÇÃO DA BAHIA CAMPUS JEQUIÉ CURSO TÉCNICO DE INFORMÁTICA MODALIDADE SUBSEQÜENTE PROF°.: ALEXANDRO DOS SANTOS SILVA"

Copied!
6
0
0

Texto

(1)

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E EDUCAÇÃO DA BAHIA

CAMPUS JEQUIÉ

CURSO TÉCNICO DE INFORMÁTICA

MODALIDADE SUBSEQÜENTE

PROF°.: ALEXANDRO DOS SANTOS SILVA

LINGUAGEM DE PROGRAMAÇÃO I

LISTA DE EXERCÍCIOS 03

Instruções:

Para resolução das questões abaixo, será admitido o uso apenas da sintaxe adotada para escrita de programas em

C/C++.

1.

Desenvolver

um programa que, a partir da entrada dos horários de entrada e saída de

n

funcionários de uma

determinada empresa, identifique e exiba a quantidade de horas e minutos durante o qual os mesmos permaneceram

na empresa. Um funcionário que registra sua entrada às 08h30min e encerra seu expediente às 16h15min, por

exemplo, permaneceu na empresa 7 horas e 15 minutos.

Observação: sobre a quantidade de funcionários, para os quais serão informados os horários de entrada e saída

(formato minutos e horas), será solicitado a entrada deste valor ao próprio usuário.

Resp.: a estratégia adotada aqui é converter os horários de entrada e saída no montante de minutos decorridos desde o

início dos dias, às 00:00 (assume-se aqui que os funcionários não registram entradas e saídas em dias diferentes). Veja

o que ocorre com o exemplo colocado na questão:

08h30min

08 × 60 + 05 min = 485 min

16h15min

15 × 60 + 15 min = 915 min

Após a conversão, extrai-se a diferença entre os valores obtidos, no que representa o tempo de permanência em

minutos; para conversão para o formato hh:min, divide-se a diferença por 60 (no que é encontrado a quantidade de

horas) e obtêm-se o resto dessa mesma diferença por 60 (no que é encontrado a quantidade de minutos no formato

hh:min). Segue abaixo o código que implementa este algoritmo.

#include <iostream.h>

int main() {

int hr1, min1; // variáveis para horário de entrada int hr2, min2; // variáveis para horário de saída

int n; // variável para entrada de quantidade de funcionários

cout << "Informe a quantidade de funcionarios: ";

cin >> n; // entrada de quantidade de funcionários

// cálculo de tempo de permanência na empresa para cada funcionário for (int i=1; i<=n; i++) {

cout << "\nFuncionario " << i << " --> Horario Entrada (hh mm): "; cin >> hr1 >> min1; // entrada de horário de entrada

cout << "Funcionario " << i << " --> Horario Saida (hh mm)..: "; cin >> hr2 >> min2; // entrada de horário de saída

// conversão de horário de entrada (hh:mm) em minutos decorridos // desde o início do dia

int t1 = hr1 * 60 + min1;

// conversão de horário de saída (hh:mm) em minutos decorridos // desde o início do dia

int t2 = hr2 * 60 + min2;

// tempo de permanência em minutos int tempo = t2 - t1;

// conversão de tempo de permanência em minutos para o formato hh:min int hr3 = tempo / 60;

int min3 = tempo % 60;

cout << "Funcionario " << i << " --> Tempo Permanencia...: " << hr3 << "hr " << min3 << "min\n";

}

(2)

2.

Readapte o programa da questão anterior, de modo que seja informado, ao término da entrada de dados, o quantitativo

de horas-extras trabalhadas por todos os funcionários, em conjunto. Considere que qualquer quantitativo de horas

superior a 8 horas será computado como horário extra. Para um funcionário que registra sua entrada às 08h30min e

encerra seu expediente às 17h15min, por exemplo, serão considerados 15 min de horário-extra (neste caso, o

funcionário permaneceu na empresa 8 horas e 15 minutos).

Resp.: sobre o tempo-extra, assim será considerado se o tempo de permanência for superior a 480 minutos (8 × 60).

Segue abaixo a solução.

#include <iostream.h>

int main() {

int hr1, min1; // variáveis para horário de entrada int hr2, min2; // variáveis para horário de saída

int n; // variável para entrada de quantidade de funcionários int tempoextra = 0; // variável para total de horas-extras (em minutos)

cout << "Informe a quantidade de funcionarios: ";

cin >> n; // entrada de quantidade de funcionários

// cálculo de tempo de permanência na empresa para cada funcionário for (int i=1; i<=n; i++) {

cout << "\nFuncionario " << i << " --> Horario Entrada (hh mm): "; cin >> hr1 >> min1; // entrada de horário de entrada

cout << "Funcionario " << i << " --> Horario Saida (hh mm)..: "; cin >> hr2 >> min2; // entrada de horário de saída

// conversão de horário de entrada (hh:mm) em minutos decorridos // desde o início do dia

int t1 = hr1 * 60 + min1;

// conversão de horário de saída (hh:mm) em minutos decorridos // desde o início do dia

int t2 = hr2 * 60 + min2;

// tempo de permanência em minutos int tempo = t2 - t1;

// se o tempo de permanência for superior à 480 min, acrescenta-se a // diferença ao total de horas-extras (em minutos)

if (tempo > 480) {

tempoextra = tempoextra + (tempo - 480); }

// conversão de tempo de permanência em minutos para o formato hh:min int hr3 = tempo / 60;

int min3 = tempo % 60;

// impressão do tempo de permanência no formato hh:min

cout << "Funcionario " << i << " --> Tempo Permanencia...: " << hr3 << "hr " << min3 << "min\n";

}

// conversão do total de horas-extras (em minutos) para o formato hh:min int hr = tempoextra / 60;

int min = tempoextra % 60;

// impressão do total de horas-extras (em minutos) no formato hh:min cout << "\n\nHORAS-EXTRAS...: "

<< hr << "hr " << min << "min\n"; system("pause");

}

(3)

Observação: o número 0 (zero) não deverá constar do cálculo da média aritmética.

Resp.:

#include <iostream.h>

int main() {

float n, media, soma = 0, qtd = 0;

cout << "Entre com um numero (ou 0 para sair): "; cin >> n; // entrada do primeiro número

while (n != 0) { // enquanto o próximo número for diferente de 0... soma = soma + n; // adiciona-se o número informado à soma

qtd++; // incremento da quantidade de números informados

cout << "Entre com um numero (ou 0 para sair): "; cin >> n; // entrada do próximo número }

if (qtd != 0) { // se quantidade de números for diferente de zero... media = soma/qtd; // cálculo da média

cout << "MEDIA: " << media << "\n"; // exibição da média }

system("pause"); }

4.

Readapte o programa da questão anterior, de modo que, além da identificação da média aritmética, sejam exibidos o

maior e o menor número.

Resp.:

#include <iostream.h>

int main() {

float n, media, soma = 0, qtd = 0;

float maior, menor; // variáveis para maior e menor número

cout << "Entre com um numero (ou 0 para sair): "; cin >> n; // entrada do primeiro número

while (n != 0) { // enquanto o próximo número for diferente de 0... soma = soma + n; // adiciona-se o número informado à soma

qtd++; // incremento da quantidade de números informados

if (qtd == 1) { // se for o primeiro número...

maior = n; // assume-se que ele é o maior número inicialmente menor = n; // assume-se que ele é o menor número inicialmente }

else { // caso contrário, verifica-se o número atual...

if (n > maior) // se o número atual for maior que o número maior anterior... maior = n; // esse número passará a ser o maior número

if (n < menor) // se o número atual for menor que o número menor anterior... menor = n; // esse número passará a ser o menor número

}

cout << "Entre com um numero (ou 0 para sair): "; cin >> n; // entrada do próximo número }

if (qtd != 0) { // se quantidade de números for diferente de zero... media = soma/qtd; // cálculo da média

cout << "MEDIA: " << media << "\n" // exibição da média

<< "MENOR: " << menor << "\n" // exibição de menor número << "MAIOR: " << maior << "\n"; // exibição de maior número }

(4)

5.

Desenvolver um programa que, a partir da entrada de uma sequência de números inteiros finalizada por 0 (zero),

exiba a média aritmética dos números ímpares e a soma dos números pares.

Resp.:

#include <iostream.h>

int main() { int n;

float media, somaimpar = 0, qtd = 0; // soma, média e quantidade de ímpares float somapar = 0; // soma de números pares

cout << "Entre com um numero (ou 0 para sair): "; cin >> n; // entrada do primeiro número

while (n != 0) { // enquanto o próximo número for diferente de 0... int resto = n % 2; // cálculo de resto da divisão do número por 2

if (resto == 1) { // se o resto for 0 (ou seja, se o número for ímpar) // adiciona-se o número informado à soma de ímpares

somaimpar = somaimpar + n;

qtd++; // incremento da quantidade de números informados }

else { // caso contrário, o número é par // adiciona-se o número informado à soma de pares somapar = somapar + n;

}

cout << "Entre com um numero (ou 0 para sair): "; cin >> n; // entrada do próximo número }

if (qtd != 0) { // se quantidade de números ímpares for diferente de 0... media = somaimpar/qtd; // cálculo da média de ímpares

cout << "MEDIA IMPARES: " << media << "\n"; // exibição da média }

cout << "SOMA PARES...: " << somapar << "\n"; // exibição da soma de pares system("pause");

}

6.

Um determinado cinema, com capacidade para 100 lugares, sempre se encontra com ocupação razoável. Deseja-se

desenvolver um programa para entrada e processamento de um questionário realizado com todos os espectadores,

realizado certo dia. Nesse questionário, constam as seguintes perguntas:

Idade;

Opinião sobre o filme exibido no dia; trata-se de valor numérico entre 1 e 5, conforme relação abaixo:

1.

Ótimo;

2.

Bom;

3.

Regular;

4.

Ruim;

5.

Péssimo.

Sobre o programa, após a entrada das respostas do questionário, devem ser exibidas as seguintes informações:

A quantidade de espectadores que consideraram o filme assistido no dia

ótimo

;

A porcentagem de espectadores que consideram o filme

bom

ou

regular

, em relação ao total de respostas;

A média de idade dos espectadores que consideram o filme

ruim

;

A quantidade de pessoas que, com idade acima de 65 anos, consideram o filme

péssimo

.

Observação: sobre a entrada das respostas, a mesma será finalizada quando for informado 0 (zero) ou um valor

negativo, quando solicitada a idade do próximo espectador.

Resp.:

#include <iostream.h>

int main() {

int idade, opiniao; // idade e opinião de cada espectador float qtd = 0; // quantidade total de espectadores

float qtd1 = 0; // quantidade de espectadores com avaliação ótima

(5)

float qtd3 = 0; // quantidade de espectadores com avaliação ruim float soma3 = 0; // soma de idade de espectadores com avaliação ruim float qtd4 = 0; // quantidade de espectadores com avaliação péssima

cout << "Idade: ";

cin >> idade; // entrada de idade do primeiro espectador

// enquanto a idade do próximo espectador for positiva... while (idade > 0) {

cout << "Opiniao sobre o filme (de 1 a 5): ";

cin >> opiniao; // entrada da opinião sobre o filme

qtd++; // incremento da quantidade de espectadores

if (opiniao==1) { // se opinião for ótima...

qtd1++; // incremento da quantidade de opiniões ótimas }

if (opiniao==2 || opiniao==3) { // se opinião for boa ou regular...

qtd2++; // incremento da quantidade de opiniões boas ou regulares }

if (opiniao==4) { // se opinião for ruim

qtd3++; // incremento da quantidade de opiniões ruins

soma3 += idade; // acrescenta-se a idade do espectador ao somatório }

// se a opinião for péssima e a idade acima de 65 anos... if (opiniao==5 && idade>=65) {

qtd4++; // incremento da quantidade de opiniões boas ou regulares }

cout << "\nIdade: ";

cin >> idade; // entrada de idade do próximo espectador }

float pr2 = 0; // porcentagem espectadores com avaliação boa ou regular if (qtd2 > 0) { // se existirem espectadores com tal avaliação...

pr2 = qtd2 / qtd * 100; // cálculo da porcentagem sobre total }

float med3 = 0; // média espectadores com avaliação ruim

if (qtd3 > 0) { // se existirem espectadores com tal avaliação... med3 = soma3 / qtd3; // cálculo de média idade espectadores }

// impressão de estatísticas

cout << "\nQtd. Espectadores Opiniao Otima...: " << qtd1 << "\n"; cout << "% Espectadores Opiniao Boa ou Regular...: " << pr2 << "\n"; cout << "Media Idade Espectadores Opiniao Ruim...: " << med3 << "\n"; cout << "Qtd. Espectadores (acima 65 anos) Opiniao Pessima: " << qtd4 << "\n";

system("pause"); }

7.

Desenvolver um programa que controle o saldo bancário de uma determinada conta corrente. Inicialmente, deverá ser

informado, pelo usuário, o saldo anterior da referida conta. Em seguida, caberá também ao usuário informar as

operações realizadas. Para cada operação, deverá ser informado seu código e o montante (valor) envolvido na

operação. Sobre o código, adote a tabela abaixo:

Saque em dinheiro: código 10;

Depósito: código 33;

Caso o saldo da conta se torne negativo, após a entrada de uma determinada operação, caberá ao programa exibir uma

mensagem em que seja informado

apenas

que o saldo da conta se encontra negativo,

a partir daquela operação

. Em

relação ao montante, o mesmo deverá ser solicitado novamente, se for informado um valor negativo ou o próprio 0

(zero).

(6)

Resp.:

#include <iostream.h>

int main() {

float saldo; // variável para armazenamento do saldo int operacao, valor;

cout << "Informe o saldo inicial: ";

cin >> saldo; // entrada de saldo inicial

cout << "\nCodigo Operacao (10 para saque ou 33 para deposito): "; cin >> operacao; // entrada de código da primeira operação

// enquanto código da próxima operação for diferente de 0 (zero)... while (operacao != 0) {

// se código de operação for inválido... if (operacao!=10 && operacao!=33) {

cout << "CODIGO DE OPERACAO INVALIDO!\n"; }

else { // caso contrário, código de operação é válido cout << "Valor Operacao: ";

cin >> valor; // entrada do valor da operação

// enquanto valor da operação informada não for positivo... while (valor <= 0) {

cout << "Valor Operacao Invalido! Informe novamente: "; cin >> valor; // entrada do valor da operação novamente }

if (operacao==10) { // se operação for saque...

saldo -= valor; // subtrae valor informado do saldo }

else { // caso contrário, operação de depósito... saldo += valor; // adiciona-se o valor informado ao saldo }

if (saldo < 0) { // se saldo for negativo... cout << "SALDO NEGATIVO!\n";

} }

cout << "\nCodigo Operacao (10 para saque ou 33 para deposito): "; cin >> operacao; // entrada de código da prósima operação }

// exibição de saldo final

cout << "\nSALDO FINAL: " << saldo << "\n"; system("pause");

Referências

Documentos relacionados

dois gestores, pelo fato deles serem os mais indicados para avaliarem administrativamente a articulação entre o ensino médio e a educação profissional, bem como a estruturação

Quando contratados, conforme valores dispostos no Anexo I, converter dados para uso pelos aplicativos, instalar os aplicativos objeto deste contrato, treinar os servidores

cada amostra, obtidos na deteção de S. pneumoniae por PCR em tempo real, assim como o respetivo resultado qualitativo obtido em cultura. Cada ponto representado nos gráficos 3-1

Aos sete dias do mês de janeiro do ano 2002, o Perito Dr. OSCAR LUIZ DE LIMA E CIRNE NETO, designado pelo MM Juiz de Direito da x.ª Vara Cível da Comarca do São Gonçalo, para proceder

Com base no trabalho desenvolvido, o Laboratório Antidoping do Jockey Club Brasileiro (LAD/JCB) passou a ter acesso a um método validado para detecção da substância cafeína, à

III - ser ou ter sido sócio ou diretor de ETC ou CTC. Para fins de cumprimento do requisito de tempo de atividade profissional, poderá ser utilizada qualquer combinação dos

Os resultados são apresentados de acordo com as categorias que compõem cada um dos questionários utilizados para o estudo. Constatou-se que dos oito estudantes, seis

Ficou com a impressão de estar na presença de um compositor ( Clique aqui para introduzir texto. ), de um guitarrista ( Clique aqui para introduzir texto. ), de um director