Ir ao conteúdo

Posts recomendados

Postado

Boa tarde, eu estou fazendo um código e nele se pede para fazer uma agenda, o usuário vai digitar 5 nomes e suas idades, em seguida escolher uma das 3 opções, 1-ordem alfabética, 2-Editar dado e 3- sair. Eu ate consegui fazer ler a ordem alfabética porém, só não le um numero e na parte de fazer a edição eu estou com dificuldade. Alguém poderia me ajuda, agradeço desde já.

 

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>
int main(){
	
	int i,j,x,y,edit,pesq,cont;
	struct agenda{
		
	char nome [80];
	int idade;
	
};  agenda cadastro [5];
		
	printf ("\n....Agenda....\n");
	printf ("\n....Cadastro de Dados....\n");
	for (i=0; i<=4; ++i){
	
	printf ("\nNome:");
	fflush(stdin);
	gets (cadastro[i].nome);
	{
	printf ("Idade:");
	scanf ("%d",&cadastro[i].idade);
	{
}

}
} 
int op;
do{

		printf ("\nEscolha a opcao desejada:\n");
		printf ("\n1-Classificacao alfabetica\n2-Editar dado\n3-Sair\n");
		scanf ("%d",&op);
		switch (op){
			
		case 1:
		printf ("....Nomes em ordem alfabetica....");
				
		for (i=0; i<=5; i++){
		for (j=i+1; j<=5; j++){
					
		if (strcoll(cadastro[i].nome, cadastro[j].nome) > 0)
				
		cadastro[0]=cadastro[i];
		cadastro[i]=cadastro[j];
		cadastro[j]=cadastro[0];
								
		for (i=0;i<5;i++){
        printf("Nome: %s\n",cadastro[i].nome);}
		break;
		
		case 2:
	
		printf ("\n....Editar Dado....\n");
		printf ("Qual nome desejar editar:");
    
		printf ("\n" );
	

		break;	        
		case 3 :				
		printf("\nExibindo Agenda:\n");
		for (i=0; i<5;i++){
									
		printf("\nNome %s\n", cadastro[i].nome);
	 	printf ("Idade: %d\n",cadastro[i].idade);
		printf ("\n");}
		printf("\n.....Saindo.....\n");
		break;default:printf (" ");
}
}

}
} while (op!=3);return(0);
}







 

  • Obrigado 1
Postado

@Duda1001    de onde você tirou esse strcoll ?  ,   pois seu código não está organizando em ordem alfabética , não , melhor usar strcmp , e para editar você mostra os nomes cadastrados e o usuário informa qual vai editar  e faz uma busca na struct ,  e se for editar apenas o nome , então pega o novo nome e coloca na struct ,  e então seu código com algumas modificações poderia ser assim  :

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>
#define cls system("cls");
int main()
{
	int i,j,x,y,edit,pesq,cont,flag;
	struct agenda  //  geralmente as struct's ficam lá em cima antes da função main
	{
	    char nome [80];
	    int idade;
    };
    agenda cadastro [6];//  vetor de struct
	printf ("\n....Agenda....\n");
	printf ("....Cadastro de Dados....\n");
	for (i=1; i<6; i += 1 )
    {
        printf ("\nNome:");
        fflush(stdin);
        fgets(cadastro[i].nome,sizeof(cadastro[i].nome),stdin);
        cadastro[i].nome[strlen(cadastro[i].nome)-1] = '\0';
        printf ("Idade:");
        scanf ("%d",&cadastro[i].idade);
    }
    int op;
    do
    {
		printf("\nEscolha a opcao desejada:\n\n");
		printf(" 1 - Classificacao alfabetica\n");
		printf(" 2 - Editar dado\n");
		printf(" 3 - Sair\n");
		printf(" 2 - Escolha uma opcao ");
		scanf ("%d",&op);
		switch (op)
		{
		case 1:
		    printf ("....Nomes em ordem alfabetica....:\n");
		    for (i=1; i<6; i++)
            {
                for (j=i+1; j<6; j++)
                {
                    if ( strcmp(cadastro[i].nome, cadastro[j].nome ) > 0 )// organiza pela primeira letra
                    {
                        cadastro[0] = cadastro[i];
                        cadastro[i] = cadastro[j];
                        cadastro[j] = cadastro[0];
                    }
                }
            }
            for (i=1;i<6;i++)
            {
                printf("Nome: %s\n",cadastro[i].nome);
            }
            break;
		case 2:
		    char nom[30];
            flag=0;
            cls
		    printf ("\n....Editar Dado....\n");
		    for (i=1;i<6;i++)
                printf("Nome: %s\n",cadastro[i].nome);
		    printf( "\nQual nome desejar editar: ");
		    fflush(stdin);
		    fgets(nom,29,stdin);
		    nom[strlen(nom)-1] = '\0';
            for(i=1;i<6;i++)
                if(strcmp(nom,cadastro[i].nome) == 0 )
                {
                    flag = 1;
                    printf("Novo Nome ");
                    fgets(nom,29,stdin);
                    nom[strlen(nom)-1] ='\0';
                    strcpy(cadastro[i].nome,nom);
                    printf("edicao realizada com sucesso !\n");
                }
            if( ! flag )
                printf("nome inesistente !\n");
		    break;
		case 3:
		    printf("\nExibindo Agenda:\n");
		    for( i=1; i<6;i++)
            {
                printf("Nome --: %s\n"  , cadastro[i].nome);
                printf("Idade -: %d\n\n",cadastro[i].idade);
            }
            printf("\n.....Saindo.....\n");
            break;
		default:
		    printf("opcao invaLida !\n");
        }
    }while( op != 3 );
    return 8192;
}

 

  • Obrigado 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...

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!