Ir ao conteúdo

Posts recomendados

Postado
	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
Postado
	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
Postado

@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
Postado
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
Postado

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

Postado
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
Postado

Como faço para desabilitar uma página do controle TablePaje via código ou nas configurações do mesmo. Exemplo: tenho 5 paginas e preciso restringir uma delas e não estou conseguindo como fazer.

  • Curtir 1
Postado

@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<<"          ";
}

 

Postado
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
Postado

@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
Postado
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
Postado

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
Postado

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

Postado
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

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!