Mensagens Recentes

Páginas: « 1 2 3 4 5 6 7 8 9 10 »
41
Introdução à Programação / Re:Tutorial de instalação do Code::Blocks para C++
« Última Mensagem: por Jefferson Online Março 17, 2019, 02:58:50 am »
Opcional, mas recomendado

V´á em Settings -> Compiler e marque a opção abaixo, que configura o compilador para usar o padrão C++11 (2011):



Eu suponho que o default do compilador seja o C++98 (1998).

Isso provavelmente não será necessário para rodar os programas simples que serão pedidos durante a disciplina, mas e você quiser rodar algum programa obtido na internet isso pode poupar você de alguma frustração.
42
Introdução à Programação / Problemas e erros ao usar o Code::Blocks
« Última Mensagem: por Jefferson Online Março 17, 2019, 02:20:44 am »
fatal error: iostream: No such file or directory

Certifique-se de salvou o arquivo com a extensão .cpp. O Code::Blocks diferencia C de C++ pela extensão, mas por default salva com a extensão .c.



error: 'stoi' was not declared in this scope

E você tem certeza de que fez o include correto.

Vá em Settings -> Compiler e marque a opção "Have g++ follow the C++11..."





Opções de debug desabilitadas



Seu programa precisa fazer parte de um projeto




ERROR: You need to specify a debugger program in the debuggers's settings.
(For MinGW compilers, it's 'gdb.exe' (without the quotes))
(For MSVC compilers, it's 'cdb.exe' (without the quotes))


Vá em Settings -> Debugger -> GDB/CDB debugger -> default
E coloque em Executable Path "C:\Program Files (x86)\CodeBlocks\MinGW\gdb32\bin\gdb32.exe" (confira o caminho onde o Code::Blocks está instalado na sua máquina.

Note que a mensagem de erro é incompleta ou equivocada. Ela faz você pensar que o arquivo a achar precisa ser gdb.exe quando o próprio Code::Blocks instala o gdb32.exe. Talvez seja por isso que o Code::Blocks não está achando o próprio debugger automaticamente.


O debugador não pára nos breakpoints. Janela watches sempre vazia.

Certifique-se de que o caminho inteiro do seu projeto não tenha espaços ou acentuação.
43
Introdução à Programação / Tutorial de instalação do Code::Blocks para C++
« Última Mensagem: por Jefferson Online Março 17, 2019, 01:59:38 am »
Baixe o instalador do Code::Blocks. É preciso tomar cuidado com essa parte porque várias versões são oferecidas para download. É preciso baixar a versão que vem com o compilador Mingw versão C++. Esta versão tem o seguinte nome de arquivo hoje:

codeblocks-17.12mingw-setup.exe

Você vai na página de download do Code::Blocks e baixa a versão correta. Para simplificar eu vou dar também o link direto para baixar essa versão no sourceforge.

Execute o instalador



Clique em Next



Clique em "I agree"



Role a lista e certifique-se de que tem a opção MinGW Compiler Suite. Se não tiver você apesar dos meus avisos baixou o arquivo errado. Volte ao início.
Se tiver, clique em Next.



Não mude a pasta de instalação a menos que saiba o que está fazendo. Copie esse caminho para o bloco de notas, porque você poderá precisar lembrar desse caminho no final da instalação. Clique em Install.



Aguarde enquanto os arquivos são copiados.



Clique em Sim para iniciar o Code::Blocks.



Aqui ocorre a detecção automática de compiladores. Se não estiver desse jeito com status "detected" para o GNU GCC Compiler e mais abaixo dizendo que este é o "Current defaul compiler" há algo errrado.

Se estiver do jeito que mostra a janela, clique em OK.



Clique em Finish para concluir a instalação. Você pode ter que procurar por essa janela por trás da janela do Code::Blocks.



Aqui está perguntando o que fazer com as associações de arquivo. O padrão é deixar como está, mas se você quiser que ao clicar em um arquivo C++ (extensão .cpp) já abra direto no Code::Blocks, selecione a terceira opção.

Clique em OK.



No Code::Blocks, vá em Settings -> Debugger ->GDB/CDB debugger ->default (janela acima)

E coloque em "Executable Path" o caminho

"C:\Program Files (x86)\CodeBlocks\MinGW\gdb32\bin\gdb32.exe" (se sua versão do Windows for de 64 bits)
ou
"C:\Program Files\CodeBlocks\MinGW\gdb32\bin\gdb32.exe" (se sua versão do Windows for de 32 bits)

Confira o caminho certo na cópia que eu eu pedi para você fazer no bloco de notas.

Clique em OK

O Code::Blocks deve estar pronto para compilar e debugar seus programas.
44
Estrutura de Dados / Re:Problemas com formatação de código no fórum
« Última Mensagem: por Jefferson Online Março 16, 2019, 07:12:42 pm »
Por que quando você copia o código exibido no fórum e cola em outro lugar toda a formatação se perde?

Este problema parece afetar o Internet Explorer (testado com v11) e o Firefox (testado com v56) mas não parece afetar o Chrome (testado com v67).

No momento eu uso a extensão cb|GeSHi-mod para exibir código-fonte "embelezado" no fórum. Todos os caracteres de quebra de linha estão sendo removidos (ou não estão sendo inseridos) pela extensão. Isso me pegou de surpresa e ainda não sei como resolver.  Eu poderia contornar incluindo o arquivo de código também como um anexo, mas isso aumenta bastante meu trabalho e as versões exibida e anexa certamente passariam a maior parte do tempo fora de sincronismo.

Então, a contragosto, (não gosto do Chrome) eu recomendo que quem quiser copiar código abra o fórum no Google Chrome.
45
Estrutura de Dados / Re:Aula 3
« Última Mensagem: por Jefferson Online Março 14, 2019, 10:22:10 pm »
Exercício 6

Citar
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).

Código: C++
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;};
46
Estrutura de Dados / Re:Aula 3
« Última Mensagem: por Jefferson Online Março 14, 2019, 10:19:20 pm »
Exerc´ício 5

Citar
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.

Código: C++
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;};
47
Estrutura de Dados / Re:Aula 3
« Última Mensagem: por Jefferson Online Março 14, 2019, 10:15:37 pm »
Exercício 4
Citar
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.

Código: C++
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;}; 

Arquivo ex4.txt:

Código: [Selecionar]
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
48
Estrutura de Dados / Re:Aula 3
« Última Mensagem: por Jefferson Online Março 11, 2019, 06:32:15 pm »
Exercício 3

Código: C++
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;} 

O arquivo ex3.txt:

Código: [Selecionar]
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
49
Estrutura de Dados / Re:Aula 3
« Última Mensagem: por Jefferson Online Março 11, 2019, 06:30:02 pm »
Exercício 2

Citar
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.

A partir deste exercício eu passei a usar getline() porque eu não sei como fazer o cin ler toda a linha digitada pelo usuário. Normalmente ao encontrar o primeiro espaço cin já retorna. O motivo de eu usar getline() mesmo onde não é necessário é que o primeiro getline() após um cin recebe um ENTER automaticamente e você não consegue responder.  O motivo é que cin "consome" a string digitada mas deixa o ENTER no buffer. Se o próximo comando for um cin esse ENTER no início da string é ignorado, mas getline() não faz isso.

Muito depois eu descobri que você poderia usar cin.ignore() (não testado) após o cin e antes de getline() para apagar esse ENTER antes dele chegar a getline(). Mas preferi deixar o código como está.

Outro comando que serve para esse propósito é fflush(stdin) (não testado)

Código: C++
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;} 

O arquivo ex2.txt ao qual o programa se refere:

Código: [Selecionar]
Lucas Streban
27
Avenida Recife
344
Apto B
Areias
Recife
PE
50210 060

Nova versão, com alguns aperfeiçoamentos:

Código: C++
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;} 
50
Estrutura de Dados / Aula 3 - Exercícios
« Última Mensagem: por Jefferson Online Março 11, 2019, 06:25:37 pm »
Exercício 1

Citar
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)


O programa abaixo ainda precisa de alterações. Ele não usa o que a cadeira chama de "matriz"

Código: C++
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;} 
Páginas: « 1 2 3 4 5 6 7 8 9 10 »