Ir ao conteúdo
  • Cadastre-se

Programa Parando de Responder


Posts recomendados

#include <iostream> // Incluindo A Biblioteca Iostream
#include <string.h> // Incluindo A Biblioteca String.h
#include <stdlib.h> // Incluindo A Biblioteca Stdlib.h
#include <stdio.h>  // Incluindo A Biblioteca Stdio.h.
#include <vector>   // Incluindo A Biblioteca Vector..

using namespace std; // Usando As Funçoes Padroes de cada Biblioteca.


typedef struct  // Criando Meu Propio Tipo De Variavel.
{

	vector <string> endereco; // Armazena Endereço da Pessoa #
	vector <string> dataNasc; // Armazena DataNasc da Pessoa #
	vector <string> email;    // Armazena Email... da Pessoa #
	vector <string> nome;     // Armazena Nome.... da Pessoa #
	
	vector <int> idadeAtu;    // Armazena IdadeAtu da Pessoa #
	vector <int> telefone;    // Armazena Telefone da Pessoa #
	vector <int> cpf;         // Armazena Cpf..... da Pessoa #
	vector <int> rg;          // Armazena Rg...... da Pessoa #

	vector <string> codigoAcesso; // Armazena Codigo de Acesso da Pessoa
	vector <string> usuarioLog;   // Armazena Usuario do Admin
    vector <string> senhaUsuar;   // Armazena Senha.. do Admin
    
} DadosPessoais;                  // Meu Propio Tipo " DadosPessoais "

char wordTemp[1];         // ira Armazena O Texto Digitado Pelo usuario

DadosPessoais pessoa;     // Criando Variavel do Tipo DadosPessoais
void cadastraAdmin(DadosPessoais pessoa);     // Declarando A Funçao.

int main()  // Funçao Principal Serve Como Ponto de Partida Para O Programa.
{
	
    int opcao = 0;           // Armazena opção do Usuario.
    
	pessoa.usuarioLog.push_back("01848238622"); // Armazenando em Pessoa,Usuario
	pessoa.usuarioLog.push_back("01848268636"); // Armazenando em Pessoa.Usuario
	
	pessoa.senhaUsuar.push_back("AdminMaximo"); // Armazenando em Pessoa.Senha
	pessoa.senhaUsuar.push_back("AdminMaximo"); // Armazenando em Pessoa.Senha
	
	cout << " Para Cadastrar um Admin -->  Digite : 1 " ; // Imprimindo
	cout << endl;                                         // Pulando 1 Linha
    cout << " Para Sair do Programa   -->  Digite : 2 " ; // Imprimindo 
    
	cout << endl << endl;                                 // Pulando 2 Linhas
    cout << " Escolho A Opcao Numero  -->  ";             // Imprimindo
	cin  >> opcao;                                        // Armazenando opc
    
    switch(opcao){                                        //Verificando Opcao
    
	case 1:                                               //Se for = 1 Faça :
    cadastraAdmin(pessoa);                                //Chamando A Funçao
		break;                                            //Saindo do Switch

	case 2:                                               //se for = 2 Faça :
		exit(0);                                          //Saindo do Programa
	default:                                              //senao
		cout << endl;                                     //pule umma linha
		cout << " Opcao Invalida. ";                      //imprima
		exit(0);                                          //saia do programa
	}
    
	return 0;                              // Retornando 0 Para a Funçao.
}

void cadastraAdmin(DadosPessoais pessoa){  // Funçao Que Cadastra Admin.
	
	string codigoEmpresa = "EMPRESA2001";  // Codigo da Empresa
	int controle = 0;                      // Armazena Valor 0 ou 1
	
	int tam = sizeof(pessoa.usuarioLog);   // Pegando Quantidade de usuarios
	
   fflush( stdin ); // Nao sei pra que serve vou explicar no post por que coloquei
	
	cout << " Codigo da Empresa : ";       // Imprimi
    gets(wordTemp);                        // Armazenando em WordTemp
	
	system("cls");                         // Limpando Tela
	
	if(wordTemp!=codigoEmpresa){                            // Testando Condiçao
		cout << " Codigo Invalido \"Fechando O Programa\""; // Imprimindo
        cout << endl << endl;                               // Pulando 2 Linhas
		exit(0);                                            // Fechando Programa
	}
	
	cout << " Digite um Nome Para O Usuario : ";            // Imprimindo
	gets(wordTemp);                                         // Armazenando
	  
    for(int i = 0; i <= tam; i++){           // Loop
		
		if(wordTemp==pessoa.usuarioLog[i]){  // Verificando se ja ha este usuario
        controle++;                          // Adicionando 1 A Variavel
		}
	}
	
  if(controle > 0){                             // Se Ja Houver este Usuario
  	
	  cout << " Este Usuario Ja Esta em Uso ";  // Imprimi 
      cout << " \" Fechando Programa \"  ";     // Imprimi
      cout <<  endl << endl;                    // Pula 2 Linhas 
      exit(0);                                  //Fechando Programa
      
  }else{                                        // Se Nao Houver Este Usuario
  
  	pessoa.usuarioLog.push_back(wordTemp);          // Armazenando Usuario
  	cout << " Digite uma Senha Para O Usuario : ";  // Imprimi
    cout << endl << endl;                           // Pulando 2 Linhas
  	gets(wordTemp);                                 // Armazenando Senha 
  	pessoa.senhaUsuar.push_back(wordTemp);	        // Armazenando Senha
}

}

Por que O Programa Acima Para de Funcionar na Hora que Pega o Nome que o usuário deseja cadastrar e armazena em wordTemp,

 

Reparem que coloquei o fflush( stdin ) compile e execute o programa ai na suas ides para ver o que acontece quando se tira ele e quando coloca ele

que irão entender o porque coloquei ele 

 

então queria saber duas coisas a primeira já disse e a segunda e o que o fflush( stdin ) faz pois coloco ele sempre que ha um pobrema com o gets 

e ate agora não sei para o que ele serve..

  

 Haaa tambem queria saber se tem algum código que eu posso colocar uma string inteira " com espaços "  dentro de um char pois o cin so armazena ate o o espaço ai to usando o gets so que estou tendo muitos pobremas...

 

    Obrigado!

 

Link para o comentário
Compartilhar em outros sites

 

@devair1010

13 minutos atrás, devair1010 disse:

@vitor de jesus    o que o fflush faz é limpar o buffer do teclado, assim todos os dados colhidos

pelo teclado que não tenha sido armazenado em alguma variável serão perdidos.

Entendi mas sabe me informa o porque o programa esta parando de funcionar? 

E se tem Algum Código que possa substituir o gets?

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@vitor de jesus    se você colocar esse   -12   aqui na função cadastraadmin ele não dá erro veja:

void cadastraAdmin(DadosPessoais pessoa){  // Funçao Que Cadastra Admin.
	
	string codigoEmpresa = "EMPRESA2001";  // Codigo da Empresa
	int controle = 0;                      // Armazena Valor 0 ou 1
//-----------------------------------------------------------------------------------------	
|                                                                                         |
|                                                                                         |
|    // esse   -12   aqui no tam                                                          |
|	int tam = sizeof(pessoa.usuarioLog)-12;   // Pegando Quantidade de usuarios           |
|                                              // colocando -12 o programa funciona       |
|                                                                                         |      
|                                                                                         |
//----------------------------------------------------------------------------------------|
   fflush( stdin ); // Nao sei pra que serve vou explicar no post por que coloquei
	
	cout << " Codigo da Empresa : ";       // Imprimi
    gets(wordTemp);                        // Armazenando em WordTemp

 

Link para o comentário
Compartilhar em outros sites

8 minutos atrás, devair1010 disse:

@vitor de jesus    se você colocar esse   -12   aqui na função cadastraadmin ele não dá erro veja:


void cadastraAdmin(DadosPessoais pessoa){  // Funçao Que Cadastra Admin.
	
	string codigoEmpresa = "EMPRESA2001";  // Codigo da Empresa
	int controle = 0;                      // Armazena Valor 0 ou 1
//-----------------------------------------------------------------------------------------	
|                                                                                         |
|                                                                                         |
|    // esse   -12   aqui no tam                                                          |
|	int tam = sizeof(pessoa.usuarioLog)-12;   // Pegando Quantidade de usuarios           |
|                                              // colocando -12 o programa funciona       |
|                                                                                         |      
|                                                                                         |
//----------------------------------------------------------------------------------------|
   fflush( stdin ); // Nao sei pra que serve vou explicar no post por que coloquei
	
	cout << " Codigo da Empresa : ";       // Imprimi
    gets(wordTemp);                        // Armazenando em WordTemp

 

Verdade Mas o For não e execultado ne? pois a condição do for já foi satisfeita,

e agora que percebi que o sizeof(pessoa,usuarioLog) ta retornando 12 mas não era para retorna 2 pois ne main fiz :

 

pessoa.usuarioLog.push_back("01848238622"); // Armazenando em Pessoa,Usuario pessoa.usuarioLog.push_back("01848268636"); // Armazenando em Pessoa.Usuario

 

o tamanho de pessoa,usuario não deveria ser 2?

tava usando o tamanho para pecorrer pessoa,usuario e verificar se ja tinha aquele usuario para nao ter dois

usuario com o mesmo nome...

 

em fim to quase desistindo de fazer o programa  :(

 

se souber alguma forma diferente do for para pecorrer pessoa,usuario e verificar se ja tenha aquele usuario armazenado me diga

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@vitor de jesus  o for é executado sim, mas apenas uma vez já que este é o primeiro usuário 

quando tiver dois usuário ele será executado 2 vezes.

eu não tinha reparado nesses push_back ali no inicio do programa.

o tamanho de pessoa.usuario seria 2, porque o primeiro push_back coloca a informação

"01848238622" na posição zero do vetor e o segundo push_back coloca essa mesma

informação na posição um do vetor, pois o vetor começa em zero.  então coloque -11

no lugar de -12. 

Link para o comentário
Compartilhar em outros sites

@devair1010

12 horas atrás, devair1010 disse:

@vitor de jesus  o for é executado sim, mas apenas uma vez já que este é o primeiro usuário 

quando tiver dois usuário ele será executado 2 vezes.

eu não tinha reparado nesses push_back ali no inicio do programa.

o tamanho de pessoa.usuario seria 2, porque o primeiro push_back coloca a informação

"01848238622" na posição zero do vetor e o segundo push_back coloca essa mesma

informação na posição um do vetor, pois o vetor começa em zero.  então coloque -11

no lugar de -12. 

Entendi.. Mas ele não estava verificando se aquele usuário já estava armazenado, pois estava Pegando o Tamanho de pessoa.usuario de forma errada por isto estava retornando 12 em vez de retorna 2 -> que era a quantidade de usuários armazenados...

 

para pegar o tamanho de um vector usa se : usuario.sizeof();

e estava fazendo sizeof(usuario);

 

consegui consertar o codigo de uma olhada

#include <iostream> // Incluindo A Biblioteca Iostream
#include <string.h> // Incluindo A Biblioteca String.h
#include <stdlib.h> // Incluindo A Biblioteca Stdlib.h
#include <stdio.h>  // Incluindo A Biblioteca Stdio.h.
#include <vector>   // Incluindo A Biblioteca Vector..

using namespace std;          // Usando NamesPace Std.

typedef struct                // Criando Meu Propio Tipo De Variavel.
{

	vector <string> endereco; // Armazena Endereço da Pessoa #
	vector <string> dataNasc; // Armazena DataNasc da Pessoa #
	vector <string> email;    // Armazena Email... da Pessoa #
	vector <string> nome;     // Armazena Nome.... da Pessoa #
	
	vector <int> idadeAtu;    // Armazena IdadeAtu da Pessoa #
	vector <int> telefone;    // Armazena Telefone da Pessoa #
	vector <int> cpf;         // Armazena Cpf..... da Pessoa #
	vector <int> rg;          // Armazena Rg...... da Pessoa #

	vector <string> codigoAcesso; // Armazena Codigo de Acesso da Pessoa
	vector <string> usuarioLog;   // Armazena Usuario do Admin
    vector <string> senhaUsuar;   // Armazena Senha.. do Admin
    
} DadosPessoais;                  // Meu Propio Tipo " DadosPessoais "

DadosPessoais pessoa;             // Variavel do Tipo DadosPessoias
DadosPessoais *pT;                // Ponteiro Para Dados Pessoais

string wordTemp;                  // Armazena um Texto Temporario

void cadastraAdmin(DadosPessoais *pT); // Declarando Funçao


int main(){	                      // Funçao Principal
	
	pessoa.usuarioLog.push_back("AdminMaximo"); // Armazenando Admin Maximo
	pessoa.usuarioLog.push_back("AdminMaximo"); // Armazenando Admin Maximo
	pessoa.senhaUsuar.push_back("01848238622"); // Armazenando Admin Maximo
	pessoa.senhaUsuar.push_back("01848243626"); // Armazenando Admin Maximo
	
	cadastraAdmin(pT);                          // Chamando Funçao Passando o pT
	
	int tam = pessoa.usuarioLog.size();         // Pegando a Quantidade de User
	
	cout << " Usuarios Armazenados : " << endl << endl;   // imprimi
	for(int i = 0; i < tam; i++){                         // ira imprimir Todos
		cout << " usuario : " << pessoa.usuarioLog[i];    // Os Usuarios...
		cout << endl;                         
		cout << " Senha.. : " << pessoa.senhaUsuar[i];
		cout << endl << endl;
	}
	
	return 0;
}

void cadastraAdmin(DadosPessoais *pT){    // Cadastra Admin
	
	int posicao = pessoa.usuarioLog.size(); // Verifica Quantidade de Usuario
	
	cout << " Codigo de Acesso : ";                         // Pedindo
	getline(cin,wordTemp);                                  // Armazenando 
	
    system("cls");                                          // Limpando Tela
    cout << endl;                                           // Pulando 1 Linha
    
  	if(wordTemp!="EMPRESA2001"){                            // Testando Condiçao
     	cout << " Codigo Invalido \"Fechando O Programa\""; // Imprimindo
        cout << endl << endl;                               // Pulando 2 Linhas
		exit(0);                                            // Fechando Programa
	}else{                                                  // If Retorna 0 Faça
        cout << " Digite um Nome Para Usuario : ";          // Pedindo Nome
	    getline(cin,wordTemp);                              // Armazenando Nome
	    
	    int controle = 0;                                   // Ira Verficar
	    for(int i = 0; i < posicao; i++ ){                  // Se ja Possui 
			if(wordTemp==pessoa.usuarioLog[i]){             // O Usuario 
				controle++;                                 // Armazenado
			}
		}
		
		if(controle>0){                           // Se Condiçao Retorna 1 Faça
        cout << " Este Usuario Ja Esta em Uso ";  // Imprimi 
        cout << " \" Fechando Programa \"  ";     // Imprimi
        cout <<  endl << endl;                    // Pula 2 Linhas 
        exit(0);                                  // Fechando Programa
		}else{                                    // Se nao retorna 1 Faça
        pessoa.usuarioLog.push_back(wordTemp);    // Armazenando usuario
        cout << " Digite uma Senha Para O Usuario : ";  // Imprimi
        getline(cin , wordTemp);                        // Armazenando Senha 
  	    pessoa.senhaUsuar.push_back(wordTemp);	        // Armazenando Senha
  	    system("cls");
  	    cout << "O usuario Foi Criado com Sucesso \n "; // imprimi 
  	    cout << endl << endl;
		}
		
	}
	
}

Este programa e só uma parte de um programa maior...

Mas Agora que estou terminando ele estou com outra duvida :

ainda não sei usar arquivos para salvar as informações de um programa

e para salvar as informações no programa eu precisaria de usar arquivos né?

 

em fim minha duvida e : os arquivos dão a opção de determinada parte do programa ser execultada apenas uma vez? - tipo a parte que armazena os adminMaximo e pra ser execultada  apenas uma vez isto e possível faze isto usando arquivos?

 

e também queria saber se para usar um arquivo para salvar informações de um programa e preciso fazer muitas alterações no programa " Escrever Mais.. "

 

Obrigado!!

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!