Faça um programa para gerar automaticamente numeros entre 0 e 99 de uma
cartela de bingo. Sabendo que cada cartela deverá conter 5 linhas de 5 números,
gere estes dados de modo a não ter números repetidos dentro das cartelas. O
programa deve exibir na tela a cartela gerada. (Usar Matriz)
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 | #include <iostream>using std::cout;using std::cin; #include <iomanip> //time#include <algorithm> //sort //no dev c++ para isso ser aceito é preciso ir em Tools -> Compiler Options e acrescentar -std=c++11 "when calling the compiler"#include <random> #include <locale.h> //necessário para usar setlocale int main(){ int a[24]; int novoValor; setlocale(LC_ALL,""); //me permite usar acentuação // Preparo o gerador de número randômicos para me fornecer números na faixa de -10 a 10 std::mt19937 eng(time(NULL)); // Alimento o gerador com a hora atual para me certificar que cada execução seja diferente std::uniform_int_distribution<> distr(0, 99); // defino faixa bool found=false; for (int i=0; i<25;i++){ novoValor=distr(eng); found=false; //me certifico de não armazenar um número que já exista (os 25 números da cartela são aleatórios e DIFERENTES) for (int j=0; j<i; j++){ if (a[j]==novoValor) found=true;//ToDO: fazer sair do laço } if (!found) { a[i]=novoValor; }else i--; //repito esta rodada } //É uma cartela de bingo. Seus clientes vão xingar você se os números não estiverem em ordem crescente std::sort(std::begin(a), std::end(a)); cout << '\n'; cout << "Sua Cartela:\n"; cout << '\n'; int i=0; for (int linha=1; linha<6; linha++){ for (int coluna=1; coluna<6; coluna++){ //cout <<" " <<a[i]; printf(" %02d", a[i]); //me certifico de que "3" seja exibido como "03" para não bagunçar a formatação i++; } cout << '\n'; } return 0;} |
Implemente um programa que leia o nome, idade e endereço de uma pessoa
armazenndo os dados em uma estrutura, onde endereço também é uma estrutura.
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 | #include <iostream>#include <string.h>#include <locale.h> //necessário para usar setlocale using namespace std; //Este programa não faz nenhuma validação dos dados struct Endereco{ string logradouro; unsigned int numero; string complemento; string cep; string bairro; string cidade; string uf;}; struct Pessoa { string nome; unsigned int idade; Endereco endereco; }; int main(){ setlocale(LC_ALL,""); //me permite usar acentuação /* Como eu sou "dedógrafo" e a partir deste exercício o volume de dados de entrada vai crescendo eu achei melhor automatizar o processo para não me frustrar tendo que digitar os mesmos dados voláteis de novo, de novo e de novo... */ string resposta=""; cout <<"Você deseja ler os dados do (a)rquivo ex2.txt ou (d)igitá-los? "<<'\n'; getline(cin, resposta); if (resposta=="a") freopen("ex2.txt", "r", stdin); Pessoa pessoa; string temp; cout <<"Nome: "<<'\n'; getline(cin, pessoa.nome); cout <<"Idade: "<<'\n'; getline(cin,temp); pessoa.idade=stoi(temp); cout <<"Logradouro: "<<'\n'; getline(cin, pessoa.endereco.logradouro); cout <<"Numero: "<<'\n'; getline(cin, temp); pessoa.endereco.numero= stoi(temp); cout <<"Complemento: "<<'\n'; getline(cin, pessoa.endereco.complemento); cout <<"Bairro: "<<'\n'; getline(cin, pessoa.endereco.bairro); cout <<"Cidade: "<<'\n'; getline(cin, pessoa.endereco.cidade); cout <<"UF: "<< '\n'; getline(cin, pessoa.endereco.uf); cout <<"CEP: "<< '\n'; getline(cin, pessoa.endereco.cep); //O enunciado do exercício não pede que os dados sejam exibidos mas vou exibir assim mesmo cout <<"\nMostrando os dados gravados: \n\n"; cout <<"Nome: " << pessoa.nome << '\n'; cout <<"Idade: " << pessoa.idade << '\n'; cout <<"Logradouro: " << pessoa.endereco.logradouro << '\n'; cout <<"Numero: " << pessoa.endereco.numero << '\n'; cout <<"Complemento: " << pessoa.endereco.complemento << '\n'; cout <<"Bairro: " << pessoa.endereco.bairro << '\n'; cout <<"Cidade: " << pessoa.endereco.cidade << '\n'; cout <<"UF: " << pessoa.endereco.uf << '\n'; cout <<"CEP: " << pessoa.endereco.cep << '\n'; return 0;} |
Lucas Streban
27
Avenida Recife
344
Apto B
Areias
Recife
PE
50210 060
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 | #include <iostream>#include <string.h>#include <locale.h> //necessário para usar setlocale#include <sstream> //usado para validar números using namespace std; //Este programa não faz nenhuma validação dos dados struct Endereco{ string logradouro; unsigned int numero; string complemento; string cep; string bairro; string cidade; string uf;}; struct Pessoa { string nome; unsigned int idade; Endereco endereco; }; int main(){ setlocale(LC_ALL,""); //me permite usar acentuação /* Como eu sou "dedógrafo" e a partir deste exercício o volume de dados de entrada vai crescendo eu achei melhor automatizar o processo para não me frustrar tendo que digitar os mesmos dados voláteis de novo, de novo e de novo... */ string resposta=""; cout <<"Você deseja ler os dados do (a)rquivo ex3.txt ou (d)igitá-los? "<<'\n'; getline(cin,resposta); //usar cin aqui faz saltar a entrada de NOME adiante if (resposta=="a") freopen("ex3.txt", "r", stdin); //não me importa nenhuma outra resposta Pessoa pessoa; string temp=""; //Esta versão evita exibir os prompts para os dados se estes estiverem sendo fornecidos por arquivo if (resposta!="a") cout <<"Nome: "; getline(cin, pessoa.nome); //Me certifico de que o próximo valor fornecido seja mesmo um número while (true) { if (resposta!="a") cout <<"Idade: "; getline(cin,temp); stringstream myStream(temp); if (myStream >>pessoa.idade) break; //sucesso na conversão cout << "Número inválido. Tente de novo." << '\n'; } if (resposta!="a") cout <<"Logradouro: "; getline(cin, pessoa.endereco.logradouro); //Me certifico de que o próximo valor fornecido seja mesmo um número while (true) { if (resposta!="a") cout <<"Número: "; getline(cin,temp); stringstream myStream(temp); if (myStream >>pessoa.endereco.numero) break; //sucesso na conversão cout << "Número inválido. Tente de novo." << '\n'; } if (resposta!="a") cout <<"Complemento: "; getline(cin, pessoa.endereco.complemento); if (resposta!="a") cout <<"Bairro: "; getline(cin, pessoa.endereco.bairro); if (resposta!="a") cout <<"Cidade: "; getline(cin, pessoa.endereco.cidade); if (resposta!="a") cout <<"UF: "; getline(cin, pessoa.endereco.uf); if (resposta!="a") cout <<"CEP: "; getline(cin, pessoa.endereco.cep); cout <<"\nMostrando os dados gravados: \n\n"; cout <<"Nome: " << pessoa.nome << '\n'; cout <<"Idade: " << pessoa.idade << '\n'; cout <<"Logradouro: " << pessoa.endereco.logradouro << '\n'; cout <<"Numero: " << pessoa.endereco.numero << '\n'; cout <<"Complemento: " << pessoa.endereco.complemento << '\n'; cout <<"Bairro: " << pessoa.endereco.bairro << '\n'; cout <<"Cidade: " << pessoa.endereco.cidade << '\n'; cout <<"UF: " << pessoa.endereco.uf << '\n'; cout <<"CEP: " << pessoa.endereco.cep << '\n'; return 0;} |
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 | #include <iostream>#include <strings.h>#include <locale.h> using namespace std; struct Aluno{ string nome; string matricula; string curso; }; int main (){ setlocale(LC_ALL,""); string resposta; cout <<"Você deseja ler os dados do (a)rquivo ex3.txt ou (d)igitá-los? "<<'\n'; getline(cin, resposta); if (resposta=="a") freopen("ex3.txt", "r", stdin); Aluno aluno[5]; /*Eu poderia incluir condicionais para remover a exibição dos textos aqui quando os dados forem obtidos de um arquivo, assim como no exercício anterior mas isso atrapalha a clareza e distancia ainda mais do objetivo da questão */ for (int i=0;i<5;i++){ cout <<"Dados do aluno "<< i+1 <<": \n"; cout <<"Nome: "; getline(cin, aluno[i].nome); cout <<"Matrícula: "; getline(cin, aluno[i].matricula); cout <<"Curso: "; getline(cin, aluno[i].curso); cout <<'\n'; }; cout <<"Exibindo agora os dados gravados\n\n"; for (int i=0;i<5;i++){ cout <<"Aluno "<< i+1 <<'\n'; cout <<"Nome: " << aluno[i].nome <<'\n'; cout <<"Matrícula: " << aluno[i].matricula <<'\n'; cout <<"Curso: " << aluno[i].curso <<'\n'; cout <<'\n'; }; return 0;} |
Jefferson Ryan
201809010001
Análise e Desenvolvimento de Sistemas
Korynader Lutz
201808038627
Sistemas de Informação
Fulano Sicrano
201708032409
Ciência da Computação
Roberto Freitas
201708012345
Psicologia
Célia Borges
20170803421
Fisioterapia
Crie uma estrutura representando os alunos de um determinado curso. A estrutura
deve conter a matrícula do aluno, nome, curso, nota da primeira prova, nota da
segunda prova e nota da terceira prova.
a) Permita ao usuário entrar com os dados de até 10 alunos.
b) Encontre o aluno com maior nota da primeira prova.
c) Encontre o aluno com maior média geral.
d) Imprima todos os alunos de um curso que o usuário solicitar. Mostre ao
usuário os cursos existentes para que ele possa escolher um deles.
e) Para cada aluno diga se ele foi aprovado ou reprovado, considerando as
regras da Estácio para a aprovação.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192 | #include <iostream>#include <strings.h>#include <locale.h> using namespace std; struct Alunos{ string nome; string matricula; string curso; float nota[3]; }; int main() { setlocale(LC_ALL,""); const int maxAlunos=10; const int maxCursos=10; Alunos aluno[maxAlunos]; string resposta; cout <<"Você deseja ler os dados do (a)rquivo ex4.txt ou (d)igitá-los?\n"; getline(cin, resposta); if (resposta=="a") freopen("ex4.txt", "r", stdin); string temp=""; cout <<"Quantos alunos? "; //o enunciado fala em *até* 10 alunos. Isso implica que o usuário pode entrar com menos. getline(cin, temp); unsigned int numAlunos=stoi(temp); for (int i=0;i<numAlunos;i++){ cout <<"Dados do aluno "<< i+1 <<": \n"; cout <<"Nome: "; getline(cin, aluno[i].nome); cout <<"Matrícula: "; getline(cin, aluno[i].matricula); cout <<"Curso: "; getline(cin, aluno[i].curso); for (int j=0; j<3;j++){ cout <<"Nota " << j+1 << ": "; getline(cin, temp); aluno[i].nota[j]=stof(temp); }; cout <<'\n'; }; cout <<"Exibindo agora os dados gravados\n\n"; for (int i=0;i<numAlunos;i++){ cout <<"Aluno "<< i+1 <<'\n'; cout <<"Nome: " << aluno[i].nome <<'\n'; cout <<"Matrícula: " << aluno[i].matricula <<'\n'; cout <<"Curso: " << aluno[i].curso <<'\n'; for (int j=0; j<3;j++){ cout <<"Nota " << j+1 <<": " << aluno[i].nota[j] <<'\n'; }; cout <<'\n'; }; //Determino qual a maior nota da primeira prova float nota=0; float maiorNota=0; for (int i=0;i<numAlunos;i++){ nota=aluno[i].nota[0]; if (nota>maiorNota) maiorNota=nota; }; cout <<"\nA maior nota na primeira prova foi: " << maiorNota <<'\n'; cout <<"Alunos que alcançaram essa nota:\n\n";//imprimo os alunos que tiraram a maior nota na primeira prova for (int i=0;i<numAlunos;i++){ if (aluno[i].nota[0]==maiorNota){ cout <<"Nome: " << aluno[i].nome <<'\n'; cout <<"Matrícula: " << aluno[i].matricula <<'\n'; cout <<"Curso: " << aluno[i].curso <<'\n'; cout <<'\n'; }; }; //Determino a maior média //neste ponto não estou usando as regras da Estácio, porque não foi pedido no enunciado float media=0; float soma=0; float maiorMedia=0; for (int i=0;i<numAlunos;i++){ for (int j=0; j<3;j++){ soma=soma+aluno[i].nota[j]; }; media=soma/3; if (media>maiorMedia) maiorMedia=media; soma=0; }; //imprimo os alunos que tiraram a maior média cout <<"\nA maior média foi: " << maiorMedia <<'\n'; cout <<"Alunos que alcançaram essa média:\n\n"; for (int i=0;i<numAlunos;i++){ soma=0; for (int j=0; j<3;j++){ soma=soma+aluno[i].nota[j]; }; media=soma/3; if (media==maiorMedia){ cout <<"Nome: " << aluno[i].nome <<'\n'; cout <<"Matrícula: " << aluno[i].matricula <<'\n'; cout <<"Curso: " << aluno[i].curso <<'\n'; cout <<'\n'; }; }; string cursos[maxCursos]; unsigned int numCursos=0; bool found=false; string curso=""; //Faço uma lista dos cursos existentes for (int i=0;i<numAlunos;i++){ curso=aluno[i].curso; for (int j=0; j<numCursos ;j++) { if (curso==cursos[j]) found=true; //eu preciso ignorar os cursos repetidos }; if (!found) { cursos[numCursos]=curso; numCursos++; }; found=false; }; //imprimo os cursos cout <<"\nNúmero de cursos: " << numCursos <<"\n\n"; cout <<"Escolha um curso para imprimir os alunos matriculados no mesmo\n"; cout <<"Digite o número correspondente seguido de [ENTER]\n\n"; for (int i=0; i<numCursos;i++){ cout << i <<" - " << cursos[i] <<'\n'; }; getline(cin, resposta); curso=cursos[stoi(resposta)]; float menorNota=0; unsigned int indiceMenorNota=0; float notas[3]; for (int i=0;i<numAlunos;i++){ if (aluno[i].curso==curso){ cout <<"\nNome: " << aluno[i].nome <<'\n'; cout <<"Matrícula: " << aluno[i].matricula <<'\n'; cout <<"Curso: " << aluno[i].curso <<'\n'; for (int j=0; j<3; j++){ if (aluno[i].nota[j]<4) notas[j]=0; else notas[j]=aluno[i].nota[j]; //se alguma nota for menor que 4 é o mesmo que ser zero if (notas[j]<menorNota) { menorNota=notas[j]; indiceMenorNota=j; } }; //Ignoro o menor valor, somo os restantes e divido por dois float k=0; if (indiceMenorNota==0) {k=((notas[1]+notas[2])/2);}; if (indiceMenorNota==1) {k=((notas[0]+notas[2])/2);}; if (indiceMenorNota==2) {k=((notas[0]+notas[1])/2);}; if (k>=6) cout <<"Aluno APROVADO\n"; else cout <<"Aluno REPROVADO\n"; }; }; return 0;}; |
10
Jefferson Ryan
201809038642
Análise e Desenvolvimento de Sistemas
10
9,5
4
Korynader Lutz
201808038627
Sistemas de Informação
8
7,5
7
Fulano Sicrano
201708032409
Ciência da Computação
9
6
5
Roberto Freitas
201708012345
Psicologia
3
10
0
Célia Borges
20170803421
Fisioterapia
3
5,4
6
Bjarne Stroustrup
20100212345
Análise e Desenvolvimento de Sistemas
10
9,8
10
Sanjay Madhav
20000334567
Sistemas de Informação
9
5
7,1
Clark Kent
19990445678
Astrofísica
10
8,2
7
Lex Luthor
20050978901
Economia
10
4
6
Lois Lane
20061301234
Jornalismo
8
4,5
4
3
Crie um programa que permita armazenar o nome, a altura e da data de nascimento
de até 15 pessoas.
Cada pessoa deve ser representada por uma struct dentro de um vetor.
A data de nascimento também deve ser uma struct.
O nome, a altura e a data de nascimento de cada pessoa devem ser informados
pelo teclado.
O programa deve, na tela de abertura, apresentar opções para:
a) inserir uma pessoa;
b) listar todos os nomes e respectivas alturas;
c) listar os nomes das pessoas que nasceram antes de uma certa data
fornecida.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113 | #include <iostream>#include <strings.h>#include <locale.h>#include <stdlib.h> using namespace std; struct Data { unsigned int dia; unsigned int mes; unsigned int ano;}; struct Pessoas{ string nome; unsigned int altura; // em centímetros Data dataNasc; }; int main() { const unsigned int maxPessoas=15; setlocale(LC_ALL,""); Pessoas pessoa[maxPessoas]; int numPessoas=0; string opcao=""; string resposta=""; while (true){ cout <<"Número de pessoas cadastradas: " << numPessoas<<'\n'; cout <<"Escolha uma opção e em seguida tecle [ENTER]:\n\n"; if (numPessoas<15) cout <<"1 - Inserir uma pessoa.\n"; if (numPessoas>0) cout <<"2 - Listar todos os nomes e respectivas alturas.\n"; if (numPessoas>0) cout <<"3 - Listar todas as pessoas nascidas antes de uma data fornecida.\n"; getline(cin, opcao); if (opcao=="1"){ cout <<"\nNome: "; getline (cin, pessoa[numPessoas].nome); cout <<"Altura: "; getline (cin, resposta); pessoa[numPessoas].altura=stoi(resposta); cout <<"Agora você vai fornecer a data de nascimento\n "; cout <<"com dia , mês e ano separados (apenas números):\n\n"; cout <<"Ano (4 dígitos): "; getline (cin, resposta); pessoa[numPessoas].dataNasc.ano=stoi(resposta); cout <<"Mês: "; getline (cin, resposta); pessoa[numPessoas].dataNasc.mes=stoi(resposta); cout <<"Dia: "; getline (cin, resposta); pessoa[numPessoas].dataNasc.dia=stoi(resposta); numPessoas++; }; if (opcao=="2"){ for (int i=0; i<numPessoas;i++){ cout <<"Nome: "<< pessoa[i].nome <<'\n'; cout <<"Altura: "<< pessoa[i].altura <<"cm\n"; cout <<'\n'; cout <<"Tecle ENTER para voltar ao menu."; getline (cin, resposta); }; }; if (opcao=="3"){ unsigned int dia=0; unsigned int mes=0; unsigned int ano=0; unsigned int dataBase=0; unsigned int dataPessoa=0; cout <<"Agora você vai fornecer a data de nascimento\n "; cout <<"com dia , mês e ano separados (apenas números):\n\n"; cout <<"Ano: "; getline (cin, resposta); ano=stoi(resposta); cout <<"Mês: "; getline (cin, resposta); mes=stoi(resposta); cout <<"Dia: "; getline (cin, resposta); dia=stoi(resposta); //Esse método para determinar se uma data ocorre antes da outra é uma gambiarra //Mas não consegui pensar em algo mais elegante e legível dataBase=(ano*365)+(mes*30)+dia; for (int i=0; i<numPessoas;i++){ dataPessoa=(pessoa[i].dataNasc.ano*365)+(pessoa[i].dataNasc.mes*30)+pessoa[i].dataNasc.dia; if (dataPessoa<dataBase){ cout <<"\nNome: "<< pessoa[i].nome <<'\n'; cout <<"Altura: "<< pessoa[i].altura <<"cm\n"; cout <<'\n'; } else cout <<"Nenhuma pessoa atende a esse critério.\n"; cout <<"Tecle ENTER para voltar ao menu."; getline (cin, resposta); }; }; if (system("CLS")) system("clear"); //apago a tela. Este método é simples mas tem problemas de segurança}; return 0;}; |
Peça ao usuário para digitar seus dados pessoais (Nome, Endereço, Data de
Nascimento, Cidade, CEP, email), verifique se as informações de Data de
Nascimento, CEP e email fazem sentido, e mostre ao usuário se as informações
estão todas validadas, ou mostre qual(is) informação(ões) está(ão) errada(s).
(use funções existentes na biblioteca string).
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 | #include <iostream>#include <strings.h>#include <locale.h> using std::cin;using std::cout;using std::string;//using namespace std; // Este programa usa stoi(), que requer c++11 int main() { setlocale(LC_ALL,""); string nome=""; string dataNasc=""; string endereco=""; string cidade=""; string cep=""; string email=""; cout <<"\nNome: "; getline (cin, nome); cout <<"Data de nascimento (dd/mm/aaaa): "; getline (cin, dataNasc); cout <<"Endereço: "; getline (cin, endereco); cout <<"Cidade: "; getline (cin, cidade); cout <<"CEP (apenas números, sem espaços): "; getline (cin, cep); cout <<"email: "; getline (cin, email); /* Esta é uma validação de email bem básica. Eu apenas verifico se não é vazio, se tem uma "@" e um "." e se "." vem depois de "@" Soluções mais completas costumam usar expressões regulares mas como o requerimento era usar as funções existents na biblioteca string estou usando .at() e .find() */ bool erro=false; if (email =="") erro=true; else{ unsigned int posArroba = email.find('@'); unsigned int posPonto= email.find('.'); if (posArroba==-1 || posPonto==-1) erro=true; if (posArroba > posPonto) erro=true; }; if (erro) cout <<"O formato do email "<< email <<" é inválido.\n"; //Agora eu valido o CEP //estou usando .length() e .at() erro=false; if (cep.length()!=8) erro=true; else{ for (int i=0; i<8;i++){ if (!isdigit(cep.at(i)) ) erro=true; } }; if (erro) cout <<"O formato do CEP "<< cep <<" é inválido.\n"; //Agora eu valido a data de nascimento //estou usando .length() .at() e .substr() erro=false; if (dataNasc.length()!=10) erro=true; else{ /* if (!isdigit(dataNasc.at(0)) ) erro=true; if (!isdigit(dataNasc.at(1)) ) erro=true; if (dataNasc.at(2)!='/') erro=true; if (!isdigit(dataNasc.at(3)) ) erro=true; if (!isdigit(dataNasc.at(4)) ) erro=true; if (dataNasc.at(5)!='/') erro=true; if (!isdigit(dataNasc.at(6)) ) erro=true; if (!isdigit(dataNasc.at(7)) ) erro=true; if (!isdigit(dataNasc.at(8)) ) erro=true; if (!isdigit(dataNasc.at(9)) ) erro=true; */ for (int i=0; i<10;i++){ if (i==2 || i==5) if (dataNasc.at(i)!='/') erro=true; else if (!isdigit(dataNasc.at(i))) erro=true; }; }; // stoi deve ser seguro aqui porque todos os digitos já foram verificados if (!erro){ int dia = stoi(dataNasc.substr(0,2)); int mes = stoi(dataNasc.substr(3,2)); int ano = stoi(dataNasc.substr(6,4)); if (dia>31 || dia==0) erro=true; if (mes>12 || mes==0) erro=true; if (ano>2020) erro=true; }; if (erro) cout <<"O formato da data de Nascimento "<< dataNasc <<" é inválido.\n"; return 0;}; |