Você está na página 1de 10

Instituto Federal de Educao, Cincia e Tecnologia da Bahia Campus Irec.

Disciplina: Algoritmos II

NOTA_____

EXERCCIOS - ESTRUTURA DE REPETIO (FOR e WHILE E DO-WHILE)


1. Faa um programa que calcule e escreva o valor de S:

------------------------------------------------------------------------------------------------------------------------------2. Faa um programa que exiba a sequencia completa abaixo:

#include <stdio.h> #include <conio.c> #include <conio.h> #include <stdlib.h> #include <iostream> #include <windows.h> #include <time.h> using namespace std; main() { // declarao de variaveis int numerador=-2; int denominador=104; /* lao while ser executado enquanto o valor da variavel DENOMINADOR for maior que ZERO. */ while (denominador > 0){ numerador=numerador+2; // variavel conta de 2 em 2 denominador = denominador-4; // variavel diminui de 4 em 4 cout << numerador << " " << denominador << endl; } getch(); }

------------------------------------------------------------------------------------------------------------------------------3. Faa um programa que solicite ao usurio 10 nmeros inteiros e, ao final, informe a quantidade de nmeros mpares e pares lidos. Calcule tambm a soma dos nmeros pares e a mdia dos nmeros mpares.

#include <stdio.h> #include <conio.c> #include <conio.h> #include <stdlib.h> #include <iostream> #include <windows.h> #include <time.h> using namespace std; main() { int numeros=0,nImpares=0,nPares=0,somaPares=0,somaImpares=0;

float mediaImpares = 0.00; gotoxy(5,5);cout << "Digite abaixo 10 Numeros: " << endl << endl; for (int i=0; i<10; i++) //inicia a repetio for at 10 { cout << "Meu numero: "; cin >> numeros; // recebe a digitao if (numeros %2 == 0) //verifica se o resto da diviso por 2 zero. { nPares++; // se o nmero par, incrementa o contador somaPares=somaPares+numeros; // aqui, soma os nmeros pares } else { nImpares++; // se no par, impar. Incrementa o contador somaImpares=somaImpares+numeros; //soma os impares } } if(nImpares >0) mediaImpares = (float)somaImpares/nImpares; //media dos impares gotoxy(10,18);cout << "RESULTADO" << endl; gotoxy(10,19);cout << "-----------------------------" << endl; gotoxy(10,20);cout << "Quant. Pares ......: " << nPares; gotoxy(10,21);cout << "Quant. Impares.....: " << nImpares; gotoxy(10,22);cout << "Soma dos Pares ....: " << somaPares; gotoxy(10,23);cout << "Media dos Impares..: " << mediaImpares; getch(); }

------------------------------------------------------------------------------------------------------------------------------4. Foi realizada uma pesquisa com 200 pessoas que assistiram uma pea de teatro, em relao a sua opinio sobre a mesma. Cada espectador respondeu a um questionrio que solicitava os seguintes dados: idade da pessoa; o identificador da pessoa; opinio em relao pea(de 0 a 10). Faa um programa que, a partir destes dados, calcule e imprima: a. A quantidade de respostas 10. b. A mdia de idade das pessoas que responderam o questionrio. c. A percentagem de pessoas que responderam 5 ou menos para a opinio da pea. d. O identificador da pessoa mais velha. * Considere que a maior idade no repetida.
#include <stdio.h> #include <conio.c> #include <conio.h> #include <stdlib.h> #include <iostream> #include <windows.h> #include <time.h> using namespace std; main() { int idade=0,contador=0,conta10=0,contaIdade=0,somaIdade=0; int contaMenor5=0,nPesq=200,maisVelha=0; char sexo,sexoMaisVelha; float notaPeca=0.00,mediaIdades=0.00,porcentagem=0.00;

do { // comea a repetio gotoxy(15,2);cout << "Pesquisa Literaria - 200 OPINIOES " << endl << endl; gotoxy(15,4);cout << "Qual sua Idade? "; cin >> idade; gotoxy(15,5);cout << "Qual seu Sexo [f | m] ? "; cin >> sexo; gotoxy(15,6);cout << "Que nota voce da a peca: [0 a 10] "; cin >> notaPeca; clrscr(); contaIdade++; //conta as idade somaIdade = (somaIdade+idade); //soma as idades mediaIdades = (somaIdade/contaIdade); // calcula a media das idades if (idade > maisVelha) // compara a idade e aponta o sexo { maisVelha=idade; sexoMaisVelha=sexo; } if (notaPeca == 10){conta10++;} // conta as notas 10 if (notaPeca <= 5){contaMenor5++;} //conta as notas menores que 5 contador++; //incrementa o contador para encerrar a pesquisa }while (contador <= nPesq); //termina a repetio porcentagem = (contaMenor5 * 100)/contador; // calcula a porcentagem menor 5% gotoxy(15,17);cout << " ........ RESULTADOS ......: " << endl; gotoxy(15,18);cout << "Idade da pessoa mais Velha.: " << maisVelha; gotoxy(15,19);cout << "Sexo da pessoa mais Velha..: " << sexoMaisVelha; gotoxy(15,20);cout << "Deram notas baixas .......: " << contaMenor5; gotoxy(15,21);cout << "Deram nota 10 .............: " << conta10; gotoxy(15,22);cout << "Soma de todas as idades....: " << somaIdade; gotoxy(15,23);cout << "Media das idades ..........: " << mediaIdades; gotoxy(15,24);cout << "% das notas abaixo de 5 ...: " << porcentagem; getch(); }:

------------------------------------------------------------------------------------------------------------------------------5. Uma empresa realizou uma pesquisa com os seus fornecedores, na qual foram coletados os seguintes dados referentes aos produtos fornecidos: ID, Valor e Percentual de aumento Obs. Se o produto no tiver sofrido alterao de preo, o percentual de aumento ser igual a 0. Faa um programa que determine e escreva: O novo valor de cada um dos produtos. A quantidade de produtos mais caros que R$ 100,00 (aps aumento) e que tiveram aumento superior a 5%. A mdia de valor dos produtos que no sofreram aumento. O valor do produto mais caro (aps aumento). Obs.: o programa solicita dados at que o ID digitado seja zero.

#include <stdio.h> #include <conio.c> #include <conio.h> #include <stdlib.h> #include <iostream> #include <windows.h> #include <time.h> using namespace std; main()

{ int ID; float valor=0,pAumento=0.00,novoValor,mediaSemAumento,maisCaroPos=0.00,somaSemAu mento=0.00; int pMaisQ100=0,aumMaisQ5=0,contaSemAumento=0; while (ID > 0 ) { clrscr(); gotoxy(15,2);cout << ":: PESQUISANDO FORNECEDORES - [0] para Sair ::" << endl; gotoxy(15,5);cout << "Qual o ID ..........: "; cin >> ID; gotoxy(15,6);cout << "Qual o valor .......: "; cin >> valor; gotoxy(15,7);cout << "Quantos % aumento...: "; cin >> pAumento; novoValor = valor + (valor*pAumento)/100; // verificar e contar valor acima de 100 depois do aumento if (novoValor > 100) {pMaisQ100++;} // verificar e contar valor que tiveram mais de 5% de aumento if (pAumento > 5) {aumMaisQ5++;} // verifica se teve Zero de aumento, conta os valores e soma os valores // calcula a mdia dos valores que no sofreram aumento if (pAumento == 0 ){ contaSemAumento++; somaSemAumento = (somaSemAumento+valor); mediaSemAumento = (somaSemAumento/contaSemAumento); } if (novoValor > maisCaroPos) { maisCaroPos = novoValor; } clrscr(); gotoxy(15, 9);cout << ":: VALORES ::" << endl; gotoxy(15,11);cout << "Produto ..........: " << ID << endl; gotoxy(15,12);cout << "Valor do Produto ...: " << valor << endl; gotoxy(15,13);cout << "Percentural aument..: " << pAumento << endl; gotoxy(15,14);cout << "Novo Valor ........: " << novoValor << endl; gotoxy(15,15);cout << "Qtd maiores que 100.: " << pMaisQ100 << endl; gotoxy(15,16);cout << "Qtd acima de +5% ...: " << aumMaisQ5 << endl; gotoxy(15,17);cout << "Qtd sem Aumento ....: " << contaSemAumento << endl; gotoxy(15,18);cout << "Soma sem Aumento ...: " << somaSemAumento << endl; gotoxy(15,19);cout << "Media sem Aumento ..: " << mediaSemAumento << endl; gotoxy(15,20);cout << "Valor mais caro.. ..: " << maisCaroPos << endl; gotoxy(20,22); cout << "APERTE UMA TECLA PARA CONTINUAR"; getch(); } }

------------------------------------------------------------------------------------------------------------------------------6. Imagine que o TSE contratou sua empresa para desenvolver o sistema das urnas eletrnicas que sero utilizadas nas prximas eleies do pas. O sistema dever realizar as seguintes aes:
I. II. III. IV. O sistema dever conter pelo menos trs candidatos validos para prefeito e mais trs para vereadores (que no precisam ser exibidos ao eleitor no ato da votao). O sistema dever solicitar ao eleitor que vote primeiro para prefeito, informando o nmero do candidato. A partir do nmero informado pelo eleitor, o sistema dever informar o nome, nmero e partido do candidato e solicitar que o eleitor confirme ou corrija (C-confirmar ou D corrigir). Aps confirmar o voto o sistema dever solicitar que o eleitor vote em vereador. Da mesma forma que para prefeito, o sistema ir exibir o nmero, nome, partido do candidato e as opes: confirmar ou corrigir.

V. VI.

Caso o eleitor deseje votar na opo nula dever informar 000 com nmero do candidato tanto para prefeito como para vereador. Nesta situao o sistema ir exibir uma tela solicitando que o usurio confirme ou corrija seu voto. O sistema dever encerrar a votao caso o usurio digite um valor negativo para o nmero do prefeito.

Ao final da votao o sistema dever exibir: a) Nmero e o percentual de votos de todos os candidatos, tanto para prefeito, como para vereador. b) O nome, nmero de votos do candidato vencedor (prefeito e vereador). c) O percentual de votos nulos. #include <stdio.h> #include <conio.c> #include <conio.h> #include <stdlib.h> #include <iostream> #include <windows.h> #include <time.h> using namespace std; void titsup(){ // funo que apresenta titulo na tela gotoxy(15,2);cout << "ELEICOES MUNICIPAIS: PREFEITO E VEREADORES" << endl; }; main() { // variaveis int eleicoes,prefeitos,vereadores,contaGeral=0,contaGVereador=0; int prefAdao=0,prefEddie=0,prefValeria=0,votoNuloPref=0; int vereadorMCarmo=0,vereadorFRodrigues=0,vereadorJRossie=0,votoNuloVereador=0; float perPrefAdao,perPrefEddie,perPrefValeria,perVotoNuloPref; float perVerMCarmo,perVerFRodrigues, perVerJRossie,perNuloVereador; do{ //inicio do lao clrscr(); //limpa a tela titsup(); // executa a funo // primeiro menu de opes gotoxy(15, 9);cout << "1 - VOTAR PARA PREFEITO! "; gotoxy(15,10);cout << "2 - VOTAR PARA VEREADOR! "; gotoxy(15,11);cout << "0 - SAIR! "; gotoxy(15,14);cout << "Digite aqui sua opcao: "; cin >> eleicoes; //criao do menu dos PREFEITURVEIS switch(eleicoes){ case 0:break; // sair do sistema case 1: // para votar para prefeitos { clrscr(); titsup(); // MENU DE OPES gotoxy(20,7);cout << "CANDIDATOS A PREFEITO" << endl; gotoxy(15, 9);cout << "101 - ADAO BRAGA "; gotoxy(15,10);cout << "201 - EDDIE SANTANA"; gotoxy(15,11);cout << "301 - VALERIA DOURADO"; gotoxy(15,12);cout << "000 - Anula voto"; gotoxy(15,16);cout << "Digite aqui sua opcao: ";cin >> prefeitos; //processamento das opes para prefeitos switch(prefeitos){ case 101:prefAdao++;contaGeral++;break; case 201:prefEddie++;contaGeral++;break; case 301:prefValeria++;contaGeral++;break; case 000:votoNuloPref++;contaGeral++;break; default:gotoxy(15,20);cout << "OPCAO INVALIDA! ... APERTE UMA TECLA!";getch(); } };break; case 2: // para votar para vereadores { clrscr(); titsup(); // MENU DE OPES DE VEREADORES

gotoxy(20, 7);cout << "CANDIDATOS A VEREADOR" << endl; gotoxy(15, 9);cout << "102 - MARIA DO CARMO! "; gotoxy(15,10);cout << "202 - FIRMINO RODRIGUES"; gotoxy(15,11);cout << "302 - JULIE ROSSIE"; gotoxy(15,12);cout << "000 - Anula voto"; gotoxy(15,16);cout << "Digite aqui sua opcao: "; cin >> vereadores; //processamento das opes para vereadores switch(vereadores){ case 102:vereadorMCarmo++;contaGVereador++;break; case 202:vereadorFRodrigues++;contaGVereador++;break; case 302:vereadorJRossie++;contaGVereador++;break; case 000:votoNuloVereador++;contaGVereador++;break; default:gotoxy(15,20);cout << "OPCAO INVALIDA! ... APERTE UMA TECLA!";getch(); } };break; //Resposta Padro Menu ELEIES default:gotoxy(15,20);cout << "OPCAO INVALIDA! ... APERTE UMA TECLA!";getch(); } }while(eleicoes != 0); // fim do Lao Do... while clrscr(); titsup(); // processando percentuais PREFEITO perPrefAdao = (prefAdao*100)/contaGeral; perPrefEddie = (prefEddie*100)/contaGeral; perPrefValeria = (prefValeria*100)/contaGeral; perVotoNuloPref = (votoNuloPref*100)/contaGeral; //Processando Percentuais VEREADORES. perVerMCarmo = (vereadorMCarmo*100)/contaGVereador; perVerFRodrigues = (vereadorFRodrigues*100)/contaGVereador; perVerJRossie = (vereadorJRossie*100)/contaGVereador; perNuloVereador = (votoNuloVereador*100)/contaGVereador; // resultados apresentados em TELA PREFEITOS. gotoxy(10,9); cout << "RESULTADOS DAS ELEICOES PARA PREFEITOS"; gotoxy(10,11); cout << "Total de Votos .............: " << contaGeral << endl; gotoxy(10,12); cout << "Prefeito Adao Braga ........: " << prefAdao << " Votos. Sao " << perPrefAdao << " % " << endl; gotoxy(10,13); cout << "Prefeito Eddie Santana......: " << prefEddie << " Votos. Sao " << perPrefEddie << " % " << endl; gotoxy(10,14); cout << "Prefeita Valeria Dourado....: " << prefValeria << " Votos. Sao " << perPrefValeria << " % " << endl; gotoxy(10,15); cout << "Votos Nulos para Prefeito...: " << votoNuloPref << " Votos. Sao " << perVotoNuloPref << " % " << endl; // resultados apresentados em TELA VEREADORES. gotoxy(10,18); cout << "RESULTADOS DAS ELEICOES PARA VEREADORES"; gotoxy(10,19); cout << "Total de Votos Vereadores........: " << contaGVereador << endl; gotoxy(10,20); cout << "Vereadora Maria do Carmo ........: " << vereadorMCarmo << " Votos. Sao " << perVerMCarmo << "%" << endl; gotoxy(10,21); cout << "Vereador Firmino Rodrigues ......: " << vereadorFRodrigues << " Votos. Sao " << perVerFRodrigues << "%" << endl; gotoxy(10,22); cout << "Vereadora Julie Rossie ..........: " << vereadorJRossie << " Votos. Sao " << perVerJRossie << "%" << endl; gotoxy(10,23); cout << "Votos Nulos para Vereador .......: " << votoNuloVereador << " Votos. Sao " << perNuloVereador << "%" << endl; getch(); }

------------------------------------------------------------------------------------------------------------------------------7. Um programa para gerenciar os saques de um caixa eletrnico deve possuir um mecanismo para decidir o nmero de notas de cada valor que deve ser disponibilizado para o cliente que realizou o saque. Faa um programa que:
leia a quantia a ser sacada e gerencie os saques e tenha como critrio da distribuio tima no sentido que as notas de menor valor sejam distribudas em menor numero possvel, por exemplo, se o a quantia solicitada fosse R$ 87,00, o programa deve indicar 1 nota de R$ 50,00, 3 notas de R$ 10,00 uma nota de R$ 5,00 e 2 notas de R$ 1,00.

Assuma que o maior valor que pode ser sacado no caixa igual a R$ 1000,00 e que o caixa possui notas de R$ 50,00, R$ 10,00, R$ 5,00 e R$ 1,00. #include <stdio.h> #include <conio.c> #include <conio.h> #include <stdlib.h> #include <iostream> #include <windows.h> #include <time.h> using namespace std; void tela(){ gotoxy(10,2); cout << "|-------------------------------------------------|" << endl; gotoxy(10,3); cout << "| CAIXA ELETRONICO | ADAO BRAGA | 0 = SAIR |" << endl; gotoxy(10,4); cout << "|-------------------------------------------------|" << endl; }; main() { int valor, qtd50,qtd10,qtd5,qtd1=0,resto50,resto10=0,resto5=0; while (valor > 0 ) { tela(); gotoxy(12,6); cout << "Digite o valor do Saque: "; cin >> valor; //O Processamento. // O resto da diviso separado na varivel resto50; // O resto50 dividido por 10 e o resultado guardado em resto10 // Faz o mesmo para 5, e 1 qtd50 = (valor / 50); // O valor dividido por 50. resto50 = (valor-(qtd50*50)); qtd10 = (resto50 / 10); resto10 = (valor-(qtd10*10)-(qtd50*50)); qtd5 = (resto10 / 5); resto5 = (valor-(qtd10*10)-(qtd50*50)-(qtd5*5)); qtd1 = (resto5 /1); // Apresentao na tela gotoxy(12, 8);cout << " NOTAS de 50,00 " << qtd50; gotoxy(12, 9);cout << " NOTAS de 10,00 " << qtd10; gotoxy(12,10);cout << " NOTAS de 5,00 " << qtd5; gotoxy(12,11);cout << " NOTAS de 1,00 " << qtd1; gotoxy(15,23); cout << "TECLE ALGO PARA CONTINUAR"; getch(); clrscr(); } }

------------------------------------------------------------------------------------------------------------------------------8. Faa um programa que aps o usurio ter efetuado o login exiba o seguinte menu:
MENU DE JOGOS --------------------------------------1. Jogo de dados 2. Adivinhao 3. Sair ----------------------------------------

1. Jogo de dados: neste jogo o usurio ir informar um numero entre 1 e 6. Seu programa ir gerar um nmero aleatrio. Caso o usurio tenha acertado o valor o sistema ir dar os parabns. Caso tenha errado, o sistema ir informar que o usurio perdeu, o valor correto e perguntar se o ele deseja continuar (S-sim ou N no) Caso o usurio deseje sair o sistema retornar para o menu de jogos. 2. Jogo de adivinhao: neste jogo o usurio ir tentar acertar o nmero gerado pelo sistema de 1 a 100. Caso o usurio digite um valor menor que o gerado o sistema dever informar que o nmero muito baixo. Caso contrario que o nmero muito alto. Este processo deve se repetir at que o usurio acerte o numero

gerado. Quando o usurio acertar o valor o sistema dever dar-lhe os parabns e perguntar se o mesmo deseja continuar (S-sim ou N no). Caso no deseje continuar o sistema dever retornar para o menu de jogos. 3. Sair: esta opo ir retornar a tela de login. OBS: A tela de login dever solicitar a senha ao usurio. Voc pode definir uma senha padro. Caso o usurio no acerte informa que a senha est incorreta e solicite a entrada novamente. Dica: Parte do cdigo para gerao de valores aleatrios:
#include<time.h> /*biblioteca que contm prottipos e tipos de funes para manipular horrios e datas.*/ srand ( time(NULL) ); /* initializar randomizao pelo relgio do pc: */ <sua_varivel> = rand() % 6 + 1; /* gerar numero aleatrio de 1 a 6: */

#include <stdio.h> #include <conio.c> #include <conio.h> #include <stdlib.h> #include <iostream> #include <windows.h> #include <time.h> using namespace std; main() { int escolheJogo=0; char usuario[]={"abb"}; int senha=0; do{ clrscr(); gotoxy(20,8);cout << "Digite Usuario e Senha para entrar: "; gotoxy(20,11);cout << "Usuario...: "; gotoxy(32,11); cin >> usuario; gotoxy(20,12);cout << "Senha ....: "; gotoxy(32,12); cin >> senha; gotoxy(23,12);cout << "usuario ou senha nao confere. Tente de novo!"; }while (usuario != "abb" && senha != 123); do{ clrscr(); gotoxy(25,11);cout << "---------------------------------------" << endl; gotoxy(25,12);cout << "[1] - JOGO DE DADOS"; gotoxy(25,13);cout << "Voce digita um numero entre 1 e 6." <<endl; gotoxy(25,14);cout << "O sistema gerara um nmero aleatorio" << endl; gotoxy(25,15);cout << "O sistema vai comparar se voce acertou" << endl; gotoxy(25,16);cout << "---------------------------------------" << endl; gotoxy(25,18);cout << "---------------------------------------" << endl; gotoxy(25,19);cout << "[2] - JOGO DE ADIVINHACAO "; gotoxy(25,20);cout << "Voce digita um numero entre 1 e 100." <<endl; gotoxy(25,21);cout << "O sistema gerara um nmero aleatorio" << endl; gotoxy(25,22);cout << "O sistema vai comparar se voce acertou" << endl; gotoxy(25,23);cout << "---------------------------------------" << endl; gotoxy(35,1);cout << "MENU DE JOGOS" << endl; gotoxy(25,2);cout << "--------------------------------------" << endl; gotoxy(35,3);cout << "1. Jogo de dados" << endl; gotoxy(35,4);cout << "2. Adivinhacao" << endl; gotoxy(35,5);cout << "3. Sair" << endl; gotoxy(25,6);cout << "--------------------------------------" << endl;

gotoxy(25,8);cout << "O que quer fazer? [ ]"; gotoxy(44,8);cin >> escolheJogo; switch(escolheJogo) { case 1: { do{ int minhaSorte=0,sorteio=0; clrscr(); gotoxy(25,2);cout << "JOGO DOS DADOS" << endl; gotoxy(25,4);cout << "Digite um numero entre 1 e 6 [ ]"; gotoxy(55,4);cin >> minhaSorte; sorteio = 1+(int)(6.0 * rand()/(RAND_MAX-1)); if(sorteio == minhaSorte){ clrscr(); gotoxy(25,10);cout << "Parabens! Voce Acertou" << endl; }else{ clrscr(); gotoxy(25,10);cout << "Nao foi desta vez! Voce Errou!" << endl; } gotoxy(15,23);cout << "Tentar de novo? [s] = SIM | Qualquer outra <TECLA> para sair"; }while(getch() == 's'); };break; case 2: { do{ int sorteio=0,meuNumero=0; clrscr(); gotoxy(25,2);cout << "JOGO DOS DADOS" << endl; sorteio = 1+(int)(100 * rand()/(RAND_MAX-1)); while (meuNumero != sorteio){ clrscr(); gotoxy(25,4);cout << "Digite um numero entre 1 e 100 [ ]"; gotoxy(57,4);cin >> meuNumero; if(meuNumero > sorteio ) { clrscr(); gotoxy(25,10);cout << "Voce digitou um numero maior" << endl; gotoxy(25,23);cout << "Aperte um tecla"; getch(); } if (meuNumero < sorteio) { clrscr(); gotoxy(25,10);cout << "Voce Digitou um numero Menor " << endl; gotoxy(25,23);cout << "Aperte um tecla"; getch(); } if (meuNumero == sorteio) { clrscr(); gotoxy(25,10);cout << "Voce Acertou " << endl; gotoxy(25,23);cout << "Aperte um tecla"; getch(); } }; gotoxy(15,23);cout << "Tentar de novo? [s] = SIM | Qualquer outra <TECLA> para sair"; }while(getch() == 's'); };break;

case 3: { clrscr(); gotoxy(25,20);cout << "F.I.M! Espere um pouco!" << endl; Sleep(1000); };break; default: { clrscr(); gotoxy(25,20);cout << "OPCAO INVALIDA" << endl; getch(); };break; } }while(escolheJogo != 3); }

------------------------------------------------------------------------------------------------------------------------------OBSERVAO: A lista INDIVIDUAL. A lista dever ser entregue atravs do ambiente! NO ser aceita lista fora do prazo! Caso seja entregue programas iguais ou copiados da internet a questo ser anulada. Lembre, voc poder ser um dos convidados a descrever seu cdigo durante a primeira aula aps a entrega da lista. DATA LIMITE DE ENTREGA:03/11/12 23h55min

Você também pode gostar