Ir ao conteúdo
  • Cadastre-se

C++ Verificar moradores cadastrados a


Posts recomendados

	case 2:
		cout<<"Digite o nome do morador : ";
		cin>>nomem;
		for (i=0; ;i++)
        {
			if (strcmp (nomem,x[i].nome) == 0)
			{
			cout<<"Codigo : "<<x[i].codigo<<"\n";
			cout<<"Numero da casa : "<<x[i].numcasa<<"\n";
			cout<<"Idade : "<<x[i].idade<<"\n";
			cout<<"Rua : "<<x[i].rua<<"\n";
			}
			else
			{
			cout<<"Morador nao existe";
			} 
        }
		break;

Nao sei como colocar o for , eu tinha conseguido de uma forma porém , as vezes entrava em loop. 

 

Se alguem puder abrir minha cabeca .

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

	case 2:
		cout<<"Digite o nome do morador : ";
		cin>>nomem;
		for (i=0;strcmp (nomem,x[i].nome) == 0 ;i++)
			{
			
			cout<<"Codigo : "<<x[i].codigo<<"\n";
			cout<<"Numero da casa : "<<x[i].numcasa<<"\n";
			cout<<"Idade : "<<x[i].idade<<"\n";
			cout<<"Rua : "<<x[i].rua<<"\n";
}

Consegui dessa maneira porém nao estou conseguindo por o "Morador nao cadastrado";

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

@WilliamNascimento    creio que esse loop for do jeito que está não vai funcionar , pois já no primeiro cadastro e se ele não for igual , o loop termina ,   então uma outra forma poderia ser assim  :

case 2:
    int flag=0;
    cout<<"Digite o nome do morador : ";
    cin>>nomem;
    for (i=0; i < tamanho do struct ; i++){
        if(strcmp (nomem,x[i].nome) == 0){
            cout<<"Codigo : "<<x[i].codigo<<"\n";
            cout<<"Numero da casa : "<<x[i].numcasa<<"\n";
            cout<<"Idade : "<<x[i].idade<<"\n";
            cout<<"Rua : "<<x[i].rua<<"\n";
            flag=1;
            break;
        }
    }
    if(flag==0)
        cout<<"Morador Nao Cadastrado . . . !"<<endl;
    system("pause");
}

 

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

9 minutos atrás, devair1010 disse:

@WilliamNascimento    creio que esse loop for do jeito que está não vai funcionar , pois já no primeiro cadastro e se ele não for igual , o loop termina ,   então uma outra forma poderia ser assim  :


case 2:
    int flag=0;
    cout<<"Digite o nome do morador : ";
    cin>>nomem;
    for (i=0; i < tamanho do struct ; i++){
        if(strcmp (nomem,x[i].nome) == 0){
            cout<<"Codigo : "<<x[i].codigo<<"\n";
            cout<<"Numero da casa : "<<x[i].numcasa<<"\n";
            cout<<"Idade : "<<x[i].idade<<"\n";
            cout<<"Rua : "<<x[i].rua<<"\n";
            flag=1;
            break;
        }
    }
    if(flag==0)
        cout<<"Morador Nao Cadastrado . . . !"<<endl;
    system("pause");
}

 

Eu sou iniciante ainda , como faco para saber o tamanho da struct ? Posto o codigo todo ?

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

29 minutos atrás, devair1010 disse:

@WilliamNascimento    a parte onde você criou o struct morador x[10] ;   se você não colocou esses colchetes então o tamanho será igual a hum , e se tiver colocado , então o tamanho será o valor dentro desses colchetes .

o tamanho do vetor ?

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

@WilliamNascimento    você quer que quem já pagou seja identificado ?   para isso você pode colocar uma matriz de char com duas posições , assim na primeira posição você armazena o nome de quem pagou e na segunda posição você guarda a informação , por exemplo , coloque o valor zero para quem ainda não pagou e coloque 1 para quem já pagou , assim na hora de verificar quem já pagou você verifica se determinado nome na matriz na segunda posição  é 1  ou  0 ,   e se você puder / quiser poste seu código para podermos ver como está e em que podemos ajudar  .

Link para o comentário
Compartilhar em outros sites

Em 20/09/2018 às 14:09, devair1010 disse:

@WilliamNascimento    você quer que quem já pagou seja identificado ?   para isso você pode colocar uma matriz de char com duas posições , assim na primeira posição você armazena o nome de quem pagou e na segunda posição você guarda a informação , por exemplo , coloque o valor zero para quem ainda não pagou e coloque 1 para quem já pagou , assim na hora de verificar quem já pagou você verifica se determinado nome na matriz na segunda posição  é 1  ou  0 ,   e se você puder / quiser poste seu código para podermos ver como está e em que podemos ajudar  .

Eu queria se possivel colocar o mes ..

 

#include <iostream>
#include <cstdlib>
#include <locale.h>
#include <string.h> 
using namespace std;
//prototipos
void indice();
//Structs
struct morador
{
	char nome[50];
	int idade;
	int codigo;
	char rua[60];
	int numcasa;
	int pagamento[10][10];
};
//
int main ()
{
setlocale (LC_ALL,"");
// opções
inicio:
indice();
//VARIAVEIS
int op,quantm,i,m=1,idade,j,valorp,mes,adcv;
char nomem[60];
//STRUCT
morador x[100];
//SELECIONAR OPCAO
cin>>op;
system("cls");
switch (op)
{
	case 1:
	cout<<"	***********************************************\n";
	cout<<"	*           Cadastro de moradores             *\n";
	cout<<"	***********************************************\n";
		cout<<"Quantos moradores deseja cadastrar ?";
			cin>>quantm;
			cin.ignore();
			system ("cls");
				for (i=0;i<quantm;i++)
				{
					cout<<"Cadastrando morador: "<<m++<<"\n";
					cout<<"\nNome:";
					cin.getline(x[i].nome,50);
					cin.ignore();
					cout<<"Idade: ";
					cin>>x[i].idade;
					cout<<"Codigo: ";
					cin>>x[i].codigo;
					cout<<"Rua: ";
					cin.ignore();
					cin.getline(x[i].rua,60);
					cout<<"Numero da casa: ";
					cin>>x[i].numcasa;
					system("cls");
				}
				break;
					//FIM CADASTRO ( OK )
	case 2:
		cout<<"Digite o nome do morador : ";
		cin>>nomem;
		for (i=0; i < 100  ;i++)
			{
				if (strcmp (nomem,x[i].nome)==0)
					{
						cout<<"Codigo : "<<x[i].codigo<<"\n";
						cout<<"Numero da casa : "<<x[i].numcasa<<"\n";
						cout<<"Idade : "<<x[i].idade<<"\n";
						cout<<"Rua : "<<x[i].rua<<"\n";
							break;
								}
			else
				{
					cout<<"Morador nao encontrado\n";
					break;
						}
			// fim procura
			}
			break;
	case 3:
		cout<<"Digite o nome do morador";
		cin>>nomem;
		cout<<"\nDigite o mes e o valor do pagamento de :"<<nomem;
		cin>>mes>>valorp;
		for (i=0; i < 100  ;i++)
			{
				if (strcmp (nomem,x[i].nome)==0)
				{
					x[i].pagamento[mes][valorp];
					break;
				}
		
			}
			break;	
	}
	goto inicio;
		
					
				
				
				



system ("pause");
return 0;
}

void indice ()
{
	cout<<"********************************\n";
	cout<<"*[1] Cadastrar Morador         *\n";
	cout<<"*[2] Verificar morador         *\n";
	cout<<"*[3] Verificar Pagamento       *\n";
	cout<<"*[4] Outros                    *\n";
	cout<<"********************************\n";
	cout<<"*       Escolha um opcao       *\n";
	cout<<"********************************\n";
}

o codigo esta assim no momento 

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

@WilliamNascimento    no seu código você já colocou uma matriz para registrar e informar se o morador já pagou ou não ,  então de jeito que eu tinha dito anteriormente , nessa matriz você coloca o valor hum para informar que o morador já pagou e zero para informar que ainda não pagou ,  então seu código com algumas modificações poderia ser assim  :

#include <iostream>
#include <cstdlib>
#include <locale.h>
#include <string.h>
#include <ctype.h>
#include <conio.h>
#include <windows.h>
using namespace std;
//prototipos
void indice();
//Structs
struct morador
{
	char nome[50];
	int  idade;
	int  codigo;
	char rua[60];
	int  numcasa;
	int  pagamento[100][3];
};
//
int cont;
int main(){
    int flag;
    //VARIAVEIS
    int op,quantm,i,idade,j,valor_p,mes,adcv;
    char nome_m[60],opc;
    //STRUCT
    morador x[100];
    setlocale (LC_ALL,"");
    // opções
    do{
        system("cls");
        indice();
        //SELECIONAR OPCAO
        cin>>op;
        switch(op){
	    case 1:
	        system ("cls");
	        cout<<"	***********************************************\n";
	        cout<<"	*           Cadastro de moradores             *\n";
	        cout<<"	***********************************************\n";
	        cout<<"\nCadastre Quantos Moradores Quiser\n"<<endl;
            do{
                cout<<"Cadastrando morador -> "<<cont+1<<"\n\n";
                cout<<"Nome Do Morador -----: ";
                fflush(stdin);
                cin.getline(x[cont].nome,50);
                cout<<"Idade ---------------: ";
                fflush(stdin);
                cin>>x[cont].idade;
                cout<<"Codigo --------------: ";
                fflush(stdin);
                cin>>x[cont].codigo;
                cout<<"Nome Da Rua ---------: ";
                fflush(stdin);
                cin.getline(x[cont].rua,60);
                cout<<"Numero da casa ------: ";
                fflush(stdin);
                cin>>x[cont].numcasa;
                cout<<"Quer Cadastrar Outro Morador  S / N "<<endl;
                fflush(stdin);
                cin>>opc;
                if(cont < 99)cont++;
                else{
                    cout<<"só Pode Cadastrar Ate No Maximo 100 Moradores !"<<endl;
                    opc='n';
                    Sleep(1000);
                }
            }while(toupper(opc)!='N');
            break;
            //FIM CADASTRO ( OK )
	    case 2:
		    cout<<"Digite o nome do morador : ";
		    cin>>nome_m;
		    flag=0;
		    cout<<endl;
		    for(i=0; i < 100  ;i++){
                if (strcmp (nome_m,x[i].nome)==0){
                    cout<<"Nome -----------: "<<x[i].nome   <<endl;
                    cout<<"Codigo ---------: "<<x[i].codigo <<endl;
                    cout<<"Numero da casa -: "<<x[i].numcasa<<endl;
                    cout<<"Idade ----------: "<<x[i].idade  <<endl;
                    cout<<"Rua ------------: "<<x[i].rua    <<endl;
                    flag=1;
                    break;
                }
			    // fim procura
            }
            if(flag==0)cout<<"Morador nao Cadastrado . . . !"<<endl;
            cout<<"     Tecle !\n\n"<<endl;
            getch();
            break;
	    case 3:
            cout<<"\nRegistrando Pagamento !\n"<<endl;
		    cout<<"Digite o nome do morador ";
		    cin>>nome_m;
		    cout<<"\nDigite o mês e o valor do pagamento de "<<nome_m<<" : ";
		    cin>>mes>>valor_p;
		    flag=0;
		    for (i=0; i < cont  ;i++){
                if (strcmp (nome_m,x[i].nome)==0){
                    x[i].pagamento[i][0] = mes;/* na posição 0 dessa matriz será guardado o mes */
                    x[i].pagamento[i][1] = valor_p;/* na posição 1 dessa matriz será guardado o valor pago */
                    x[i].pagamento[i][2] = 1;/* na posição 2 dessa matriz será guardado o 1 para quem pagou   */
                    flag=1;
                    break;
                }
            }
            if(flag==0)cout<<"Morador Não  Cadastrado . . . !"   <<endl;
            else cout<<"Pagamento Registrado Com Sucesso . . . !"<<endl;
            Sleep(2000);
            break;
        case 4:
            system("cls");
            cout<<"\nListando Todos Os Maradores Cadastrados !\n"<<endl;
            for(i=0;i<cont;i++){
                cout<<"Nome -----------: "<<x[i].nome   <<endl;
                cout<<"Codigo ---------: "<<x[i].codigo <<endl;
                cout<<"Numero da casa -: "<<x[i].numcasa<<endl;
                cout<<"Idade ----------: "<<x[i].idade  <<endl;
                cout<<"Rua ------------: "<<x[i].rua    <<endl;
                cout<<"--------------------------------"<<endl;
            }
            cout<<"     Tecle !"<<endl;
            getch();
            break;
        case 5:
            system("cls");
            cout<<"Listando Os Pagamentos !\n"<<endl;
            for(i=0;i<cont;i++){
                if(x[i].pagamento[i][2] == 1){/* na terceira coluna da matriz sera (0 não pagou) ou (1 pagou ) */
                  cout<<"Morador ---> "<<x[i].nome<<" Pagou ---: "<<x[i].pagamento[i][1]
                  <<" Referente Mes "<<x[i].pagamento[i][0]<<endl;  
                }
                else cout<<"Morador ---> "<<x[i].nome<<" ------: Ainda Não Pagou !"<<endl;
            }
            cout<<"\n     Tecle !"<<endl;
            getch();
            break;
        case 6:
            cout<<"Saindo . . . !"<<endl;
            break;
        default :
            printf("Opcao Invalida . . . !");
            Sleep(1000);
	    }
    }while(op!=6);
    system ("pause");
    return 0;
}
void indice (){
    cout<<"********************************\n";
    cout<<"*                              *\n";
	cout<<"* [1] Cadastrar Morador        *\n";
	cout<<"* [2] Verificar morador        *\n";
	cout<<"* [3] Verificar Pagamento      *\n";
	cout<<"* [4] Listar Moradores         *\n";
	cout<<"* [5] Listar Pagamento         *\n";
	cout<<"* [6] Sair Do Programa         *\n";
	cout<<"*                              *\n";
	cout<<"********************************\n";
	cout<<"*       Escolha uma opcao      *\n";
	cout<<"********************************\n";
	cout<<"          ";
}

 

Link para o comentário
Compartilhar em outros sites

cout<<"Digite o nome do morador : ";
		    cin>>nome_m;
		    flag=0;
		    cout<<endl;
		    for(i=0; i < 100  ;i++){
                if (strcmp (nome_m,x[i].nome)==0){
                    cout<<"Nome -----------: "<<x[i].nome   <<endl;
                    cout<<"Codigo ---------: "<<x[i].codigo <<endl;
                    cout<<"Numero da casa -: "<<x[i].numcasa<<endl;
                    cout<<"Idade ----------: "<<x[i].idade  <<endl;
                    cout<<"Rua ------------: "<<x[i].rua    <<endl;
                    flag=1;
                    break;

Eu sou um pouco inciante ainda , o que seria esssa " flag " ?

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

@WilliamNascimento     flag é uma variável qualquer , usei ela  para indicar que achou o nome guardado no vetor ,  assim depois de terminar o loop , e verificando o valor dessa variável pode se saber se achou ou não o nome , pois se o valor dela for 1 significa que achou e se for zero então não achou , e aí informa ao usuário que não achou , pois se você apenas  colocar um else dentro loop então toda vez que ele comparar o nome com o que está no vetor e não for igual ele vai imprimir que o nome não foi encontrado e assim terá essa mesma frase escrita várias vezes  .    e usei o cont para trabalhar apenas com as posições que já foram castradas evitando que você fique procurando no vetor onde não há nada guardado , diminuindo os ciclos de processamento , pois o cont vai contando cada cadastro realizado então para saber quanto moradores foram cadastrados você verifica essa variável .

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

Em 23/09/2018 às 21:27, devair1010 disse:

@WilliamNascimento     flag é uma variável qualquer , usei ela  para indicar que achou o nome guardado no vetor ,  assim depois de terminar o loop , e verificando o valor dessa variável pode se saber se achou ou não o nome , pois se o valor dela for 1 significa que achou e se for zero então não achou , e aí informa ao usuário que não achou , pois se você apenas  colocar um else dentro loop então toda vez que ele comparar o nome com o que está no vetor e não for igual ele vai imprimir que o nome não foi encontrado e assim terá essa mesma frase escrita várias vezes  .    e usei o cont para trabalhar apenas com as posições que já foram castradas evitando que você fique procurando no vetor onde não há nada guardado , diminuindo os ciclos de processamento , pois o cont vai contando cada cadastro realizado então para saber quanto moradores foram cadastrados você verifica essa variável .

A sim entendi , sou iniciante ainda vou começar a utilizar flag .

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

Outra duvida sobre esse trecho de codigo 

while (trocou)
{
	trocou = false ;
		for (i=0 ; i < fim ; i++)
		{
			if (v[i] > [i+1])
			{
				aux = v[i];
				v[i] = v[i+1];
				v[i+1] = aux;
				trocou = true ;
			}
		}
}

Sobre a condicao de parada ,a trocar de numeros eu saqui porém depois a atribuicao verdadeira a trocou e a condicao de parada nao entendi muito bem ,  e porqe nao consigo utilizar direito a variavel boolean , alguem pode me explicar melhor ?

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

@WilliamNascimento     com esse trecho de código , você está querendo ver qual é maior número no vetor ou está querendo colocar todos os números do vetor em ordem crescente  ?   se for colocar em ordem então precisa usar outro loop dentro desse começando da posição do loop  i  + 1  e indo até o final e dentro desse segundo loop você coloca esse código que compara o valor do número , e nesse caso não precisa do while .

Link para o comentário
Compartilhar em outros sites

7 horas atrás, devair1010 disse:

@WilliamNascimento     com esse trecho de código , você está querendo ver qual é maior número no vetor ou está querendo colocar todos os números do vetor em ordem crescente  ?   se for colocar em ordem então precisa usar outro loop dentro desse começando da posição do loop  i  + 1  e indo até o final e dentro desse segundo loop você coloca esse código que compara o valor do número , e nesse caso não precisa do while .

tinha mais uma parte do codigo , onde ele decrementava fim , é para colocar em ordem , a condiçao de para é quando trocou for falso ? Eu fiquei estudando e meio que consegui entender eu acho , o codigo pegava o maior numero e jogava para o final , logo depois decrementava o tamanho ja que o maior numero estava no final , e assim por diante ate o fim chegar a 0 

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

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

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!