• 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!
7
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 04

GABARITO

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 para leitura das notas de 10 alunos, obtidas em determinada disciplina. Exige-se que essas

notas sejam armazenadas em um vetor de 10 posições. Após a conclusão da entrada de dados, deverá ser calculada a

média das notas, seguido da exibição da quantidade de alunos com nota superior à média.

Resp.:

#include <iostream.h>

int main() {

float notas[10], soma = 0, qtd = 0, media;

for (int i=0; i<10; i++) { // entrada das notas de 10 alunos cout << "Nota Aluno " << i+1 << ": ";

cin >> notas[i];

soma = soma + notas[i]; }

media = soma / 10; // cáculo da média

// identificação da quantidade de alunos com notas superior à média for (int i=0; i<10; i++) {

if (notas[i] > media) // se enésima nota for superior à média...

qtd++; // adiciona-se mais 1 (um) à quantidade de notas }

cout << "Qtd. Alunos Nota Superior Média: " << qtd << "\n";

system("pause"); }

2.

Desenvolver um programa para leitura de 10 números inteiros, a serem armazenados em um vetor de 10 posições.

Após a entrada dos dados, devem ser calculadas e exibidas as seguintes informações:

O maior elemento do vetor e a posição em que se encontra esse elemento;

O menor elemento do vetor e a posição em que se encontra esse elemento.

Resp.:

#include <iostream.h>

int main() { int numeros[10];

int maior, pmaior; // maior número e sua posição no vetor int menor, pmenor; // menor número e sua posição no vetor

for (int i=0; i<10; i++) { // entrada de 10 números cout << "Numero " << i+1 << ": ";

cin >> numeros[i]; }

// assume-se inicialmente que o maior e o menor número é o primeiro número // informado pelo usuário

maior = numeros[0]; pmaior = 0; menor = numeros[0]; pmenor = 0;

// identificação de algum número, entre os 9 (nove) últimos números // informados, que seja maior e/ou menor que o primeiro número informado for (int i=1; i<10; i++) {

(2)

maior = numeros[i]; // assume-se esse número como maior

pmaior = i; // atualização da posição do maior número }

if (numeros[i] > maior) { // se o enésimo número for identificado como menor... menor = numeros[i]; // assume-se esse número como menor

pmenor = i; // atualização da posição do menor número }

}

cout << "Maior Numero: " << maior << ", na posicao " << pmaior << "\n"; cout << "Menor Numero: " << menor << ", na posicao " << pmenor << "\n";

system("pause"); }

3.

Desenvolver um programa para entrada dos preços de custo e venda de 15 mercadorias distintas, comercializadas por

determinado estabelecimento. Exige-se que os preços informados sejam armazenados em dois vetores. Após a

conclusão da entrada dos dados mencionados, caberá ao programa identificar e exibir as seguintes informações:

Quantidade de mercadorias que proporcionam lucro inferior à 10%;

Quantidade de mercadorias que proporcionam lucro entre 10% e 20%, inclusive;

Quantidade de mercadorias que proporcionam lucro superior a 20%.

Resp.:

#include <iostream.h>

int main() {

float custo[15], venda[15]; // preços de custo e venda de 15 mercadorias int ml1 = 0; // itens com margem de lucro inferior à 10%

int ml2 = 0; // itens com margem de lucro entre 10% e 20%, inclusive int ml3 = 0; // itens com margem de lucro superior à 20%

float margem; // margem de lucro de cada item

for (int i=0; i<15; i++) { // entrada de preços de custo e venda cout << "Preco Custo Item " << i+1 << ": ";

cin >> custo[i];

cout << "Preco Venda Item " << i+1 << ": "; cin >> venda[i];

margem = venda[i] / custo[i] * 100 - 100;

// se margem de lucro for inferior à 10%.. if (margem>0 && margem<10) {

ml1++; // adiciona-se 1 (um) ao total de itens com margem inferior à 10% }

// se margem de lucro estiver entre 10% e 20%... else if (margem>=10 && margem<=20) {

ml2++; // adiciona-se 1 (um) ao total de itens com margem entre 10% e 20% }

// se margem de lucro for inferior à 10%... else if (margem>20) {

ml3++; // adiciona-se 1 (um) ao total de itens com margem inferior à 10% }

}

cout << "Qtd. Itens Lucro Inferior 10%: " << ml1 << "\n"; cout << "Qtd. Itens Lucro 10 a 20%....: " << ml2 << "\n"; cout << "Qtd. Itens Lucro Superior 20%: " << ml3 << "\n";

system("pause"); }

4.

Desenvolver um programa para entrada de dois conjuntos de números inteiros, a serem armazenados em dois vetores

de 10 e 20 posições respectivamente, após o qual deverão ser exibidos apenas aqueles números inteiros que não são

comuns aos dois conjuntos.

(3)

#include <iostream.h>

int main() {

int a[10], b[20]; // conjuntos de 10 e 20 números inteiros int i, j; // contadores

int num; // número cuja existência será verificada em outro conjunto int existe; // indicativo da existência do número em outro conjunto

cout << "CONJUNTO 1\n"; // entrada de números inteiros do primeiro conjunto for (i=0; i<10; i++) {

cout << "Numero " << i+1 << ": "; cin >> a[i];

}

cout << "\nCONUNTO 2\n"; // entrada de números inteiros do segundo conjunto for (i=0; i<20; i++) {

cout << "Numero " << i+1 << ": "; cin >> b[i];

}

cout << "\n\nNUMEROS NAO COMUNS: ";

// identificação de números do conjunto 1 que não existem no segundo conjunto for (i=0; i<10; i++) {

num = a[i]; // enésimo número a ser verificado

existe = 0; // assume-se inicialmente que esse número NÃO EXISTE for (j=0; j<20; j++) { // verificação da existência do enésimo número

if (num == b[j]) { // se for igual à algum número do segundo conjunto... existe = 1; // indica-se que esse número EXISTE

} }

// após o término da verificação, se for constatado que o enésimo número // permanece NÃO existindo, procede-se com sua exibição

if (existe == 0) { cout << num << "\t"; }

}

// identificação de números do conjunto 2 que não existem no primeiro conjunto for (i=0; i<20; i++) {

num = b[i]; // enésimo número a ser verificado

existe = 0; // assume-se inicialmente que esse número NÃO EXISTE for (j=0; j<10; j++) { // verificação da existência do enésimo número

if (num == a[j]) { // se for igual à algum número do primeiro conjunto... existe = 1; // indica-se que esse número EXISTE

} }

// após o término da verificação, se for constatado que o enésimo número // permanece NÃO existindo, procede-se com sua exibição

if (existe == 0) { cout << num << "\t"; }

}

cout << "\n";

system("pause"); }

5.

Os números de Fibonacci são os números que compõe uma sequência de números inteiros, da forma que os dois

primeiros termos da série são respectivamente 0 (zero) e 1 (um), ao passo que os demais termos são obtidos a partir da

soma dos dois termos imediatamente anteriores. Dito isto, os 10 primeiros termos da sequência são respectivamente:

0, 1, 1, 2, 3, 5, 8, 13, 21, 34

Desenvolva um programa que exiba a sequência dos 30 primeiros números da série, em ordem inversa à ordem

natural de disposição desses termos. Certifique-se do uso da menor quantidade possível de variáveis para

armazenamento dos valores dos termos.

(4)

Resp.: aqui observa-se o uso de índices da forma

i

1

para acesso aos elementos do vetor especificado para

armazenamento dos números da sequência, já que os contadores usados não inicializados a partir de 1 e 30 (este

último para exibição dos números da sequência, em ordem inversa).

#include <iostream.h>

int main() {

int sequencia[30]; // primeiros 30 números da sequência Fibonnaci

for (int i=1; i<=30; i++) { // cálculo dos números da sequência if (i == 1) { // se for o primeiro termo...

sequencia[i-1] = 0; // ele o será 0 (zero) }

else if (i == 2) { // se for o segundo termo... sequencia[i-1] = 1; // ele o será 1 (um)

}

else { // caso contrário...

// o enésimo termo será obtido da soma dos dois termos anteriores sequencia[i-1] = sequencia[i-2] + sequencia[i-3];

} }

// exibição dos termos da série, em ordem inversa cout << "SEQUENCIA FIBONACCI: ";

for (int i=30; i>0; i--) {

cout << sequencia[i-1] << "\t"; }

cout << "\n";

system("pause"); }

6.

Readapte o programa da questão anterior de modo que seja ao usuário permitida a entrada da quantidade de termos da

sequência a serem exibidos.

Resp.: aqui observa-se que o vetor é declarado com tamanho variável (o tamanho é especificado em função do valor

de uma outra variável,

qtd

, valor este fornecido previamente pelo usuário), ao invés de tamanho fixo. Naturalmente,

os blocos de repetição são readaptados para repetição variável, a depender, igualmente, do valor da variável

qtd

.

#include <iostream.h>

int main() {

int qtd; // quantidade de números da sequência

// entrada da quantidade de números da sequência a serem calculados cout << "Informe a quantidade de numeros da Sequencia Fibonacci: "; cin >> qtd;

// vetor para armazenamento da quantidade especificada de números da sequência int sequencia[qtd];

for (int i=1; i<=qtd; i++) { // cálculo dos números da sequência if (i == 1) { // se for o primeiro termo...

sequencia[i-1] = 0; // ele o será 0 (zero) }

else if (i == 2) { // se for o segundo termo... sequencia[i-1] = 1; // ele o será 1 (um)

}

else { // caso contrário...

// o enésimo termo será obtido da soma dos dois termos anteriores sequencia[i-1] = sequencia[i-2] + sequencia[i-3];

} }

// exibição dos termos da série, em ordem inversa cout << "SEQUENCIA FIBONACCI: ";

for (int i=qtd; i>0; i--) {

(5)

}

cout << "\n";

system("pause"); }

7.

Desenvolver um programa para gerência de um sistema de reservas de mesas em uma casa de espetáculos. Assuma

que a casa disponha de 10 mesas de 5 lugares cada. Ao usuário será permitida a entrada do código de uma mesa (um

código entre 1 e 10) seguido da entrada da quantidade de lugares desejados; após a entrada desses dados, se for

verificado que a quantidade desejada está disponível na referida mesa, o programa deverá informar uma mensagem de

êxito referente à realização da reserva, bem como atualizar a disponibilidade de lugares após a efetivação de tal

reserva. Se não for possível, o programa deverá exibir uma mensagem adequada. Sobre o encerramento do programa,

o mesmo ocorrerá quando o usuário fornecer o código 0 (quando da solicitação do código da próxima mesa a ser

reservada) ou quando todos os lugares estiverem ocupados.

Resp.: aqui observa-se a declaração de uma variável de controle de nome

existe

para identificar a existência de lugares

disponíveis, após a realização de uma reserva. Inicialmente, em cada verificação, assume-se que não existem lugares

disponíveis, com a atribuição do valor 0 (zero) à referida variável; se, ao examinar o vetor em que estão armazenadas

as quantidades de lugares disponíveis, for encontrado alguma posição em que o valor armazenado é superior a 0

(zero), atribui-se à referida variável de controle o valor 1 (um). Após o término da verificação, é atribuído o valor 0

(zero) à variável de código de mesa se for constatado a inexistência de lugares disponíveis (ou seja, se permanecer o

valor 0 na variável

existe

) para garantir o encerramento do programa, ao invés da entrada do código da mesa da

próxima reserva. Outo fato que merece atenção é a declaração do vetor com a quantidade de lugares disponíveis em

cada mesa acompanhada da inicialização de valores do próprio vetor, já que todas as mesas possuirão, inicialmente, 5

(cinco) lugares disponíveis.

#include <iostream.h>

int main() {

// vetor para armazenamento de lugares disponíveis em cada mesa int mesas[10] = {5, 5, 5, 5, 5, 5, 5, 5, 5, 5};

int codigo; // codigo da mesa a ser reservada

int qtd; // quantidade de lugares a serem reservados

int existe; // indicativo da existência de lugares disponíveis ainda

cout << "Codigo Mesa (entre 1 e 10): "; // entrada de código da mesa cin >> codigo;

while (codigo != 0) { // enquanto codigo informado for diferente de zero... if (codigo<1 || codigo>10) { // se codigo informado for inválido... cout << "CODIGO DE MESA INVALIDO\n";

} else {

cout << "Qtd Lugares...: ";

cin >> qtd; // entrada de quantidade de reservas

if (qtd <= 0) { // se quantidade informada for inválida... cout << "QUANTIDADE DE LUGARES INFORMADA INVALIDA!\n";

}

else if (mesas[codigo-1] < qtd) { // se quantidade informada indisponível... cout << "QUANTIDADE DE LUGARES INFORMADA INDISPONIVEL!\n";

}

else { // caso contrário, quantidade disponível mesas[codigo-1] -= qtd; // atualização de disponibilidade

cout << "RESERVA REALIZADO COM SUCESSO\n"; }

}

existe = 0; // assume-se inicialmente que não existem mais lugares disponíveis for (int i=0; i<10; i++) { // verificação de lugares em cada mesa

if (mesas[i] > 0) { // se na enésima mesa existirem lugares... existe = 1; // indica-se que existem lugares disponíveis }

(6)

// em caso de permanência da NÃO existência de lugares disponíveis, // após verificação da mesas, força-se o encerramento do programa, // com a atribuição do valor 0 (zero) à variável código

if (existe == 0) { codigo = 0; }

else { // caso contrário...

cout << "\nCodigo Mesa (entre 1 e 10): "; cin >> codigo;

} }

system("pause"); }

8.

Readapte o programa da questão anterior de modo que, após a entrada dos dados de cada reserva (código de mesa e

quantidade desejada), seguida da

tentativa

de efetivação da mesma, seja exibido um menu com as seguintes opções de

operações (ao invés da entrada dos dados da próxima reserva):

1.

Realizar reserva;

2.

Consultar disponibilidade;

3.

Encerrar.

Após a exibição do menu, caberá ao usuário informar o código da operação desejada. Se o código fornecido for 1

(um), prossegue-se com a entrada dos dados da próxima reserva e a

tentativa

de efetivação da mesma, da forma como

proposto na questão anterior; se o código fornecido for 2 (dois), deverá ser exibida a quantidade de lugares

disponíveis (ainda não reservados) em cada mesa (lembre-se de que a casa de espetáculos dispõe de 10 mesas); por

fim, se o código fornecido for 3 (três), o programa deverá ser encerrado (o encerramento não ocorrerá mais quando

for informado o código 0 ou todos os lugares estiverem ocupados.

Resp.: aqui observa-se o uso de uma variável para armazenamento da opção de operação desejada, de nome

opção

.

Procede-se com a execução da rotina de reserva apenas quando da opção 1 (um). Note também que dispensa-se aqui a

execução de uma rotina para verificar a existência de lugares disponíveis após uma reserva, já que o programa dispõe,

em seu menu de opções, de uma opção para encerramento do programa.

#include <iostream.h>

int main() {

// vetor para armazenamento de lugares disponíveis em cada mesa int mesas[10] = {5, 5, 5, 5, 5, 5, 5, 5, 5, 5};

int codigo; // codigo da mesa a ser reservada

int qtd; // quantidade de lugares a serem reservados

int existe; // indicativo da existência de lugares disponíveis ainda int opcao; // opção de menu selecionada

do {

// exibição de menu

cout << "************* MENU **************\n"; cout << "* 1 - REALIZAR RESERVA *\n"; cout << "* 2 - CONSULTAR DISPONIBILIDADE *\n"; cout << "* 3 - ENCERRAR *\n"; cout << "*********************************\n";

cout << "\n\nInforme a opcao desejada: ";

cin >> opcao; // entrada de opção desejada

if (opcao == 1) { // se opção for 1 (reserva de mesa)... cout << "\nCodigo Mesa (entre 1 e 10): ";

cin >> codigo; // procede-se com a entrada do codigo da mesa

if (codigo<1 || codigo>10) { // se codigo informado for inválido... cout << "CODIGO DE MESA INVALIDO\n";

} else {

cout << "Qtd Lugares...: ";

(7)

if (qtd <= 0) { // se quantidade informada for inválida... cout << "QUANTIDADE DE LUGARES INFORMADA INVALIDA!\n";

}

// se quantidade informada indisponível... else if (mesas[codigo-1] < qtd) {

cout << "QUANTIDADE DE LUGARES INFORMADA INDISPONIVEL!\n"; }

else { // caso contrário, quantidade disponível mesas[codigo-1] -= qtd; // atualização de disponibilidade cout << "RESERVA REALIZADO COM SUCESSO\n";

} } }

else if (opcao == 2) { // se opção for 2 (consultar disponibilidade)... cout << "\n\nDISPONIBILIDADE DE LUGARES\n";

for (int i=0; i<10; i++) { // para cada mesa...

cout << "MESA " << i+1 << ": " << mesas[i] << " lugar(es)\n"; }

}

else if (opcao != 3) { // se opção for diferente de 3 (encerrar)... cout << "\n\nOPCAO INVALIDA!\n";

}

cout << "\n\n";

Referências

Documentos relacionados

O petróleo existe na Terra há milhões de anos e, sob diferentes formas físicas, tem sido utilizado em diferentes aplicações desde que o homem existe. Pela sua importância, este

autor, as manifestações populares carnavalescas como os cordões, ranchos e blocos eram estratégias e artimanhas utilizadas pelos populares como meio de resistência,

Realizar a manipulação, o armazenamento e o processamento dessa massa enorme de dados utilizando os bancos de dados relacionais se mostrou ineficiente, pois o

patula inibe a multiplicação do DENV-3 nas células, (Figura 4), além disso, nas análises microscópicas não foi observado efeito citotóxico do extrato sobre as

Este trabalho tem como objetivo contribuir para o estudo de espécies de Myrtaceae, com dados de anatomia e desenvolvimento floral, para fins taxonômicos, filogenéticos e

Resp.: além da função solicitada, na função principal usa-se uma estrutura de repetição para que testes sucessivos sejam realizados com a função desenvolvida, a partir da entrada

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

Readapte o programa da questão anterior de modo que haja uma validação sobre a senha digitada pelo jogador 1 (caso seja informado, pelo mesmo, algum valor que não esteja entre 0 e