Ir para conteúdo
Fórum Script Brasil
  • 0

HugoGuedes

Pergunta

Ola pessoal, primeiro brigado a quem responder..

Estou fazendo estrutura de dados na faculdade, como não sou muito bom em c, vim recorrer a quem conhece.

O trabalho é o seguinte

Desenvolver um programa em C com menu para

Cadastrar Clientes em um vetor capaz de armazenar 50 clientes, cada estrutura de clientes contem CPF, NOME e TELEFONE, não são permitidos CPF duplicados

Listar na tela os clientes em ordem crescente de nome, e também listar em ordem crescente de CPF

Pesquisar por nome ate o índice em que o vetor foi preenchido, pois deve haver dois clientes com o mesmo nome, achado mostrar NOME e CPF

Pesquisar por CPF, ao encontrar a primeira e suposta unica ocorrência mostra o nome e termina a busca.

OBS: eu fiz algumas coisas so que dentro da main(), o professor pediu em funções passando por ponteiros.

DUVIDAS:

 posso criar um vetor de estruct fora da main?

Como posso, referenciar a minha struct em uma função tipo no cadastrar?

Abaixo Segue o que eu consegui fazer.

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

int main(){
	//Estrutura Clientes
	struct Clientes{
		char nome[255];
		int cpf;
		char telefone[25];
			
	};
	// Vetor da estrutura de clientes
	struct Clientes clientes [50];	
	int opcao, i;
	//Exibição do Menu
	while(i < 1){
		//Menu
		printf("\nEscolha a opcao desejada |\n 1 - Cadastrar Cliente :\n 2 - Buscar Cliente :\n 3 - Listar Clientes |: ");
		scanf("%d", &opcao);
			//Escolha do Menu
			
			//Cadastro de clientes 
			if(opcao == 1){
				//Cadastro de Clientes
				int cont=0,c=0;
				while(c < 1){	
					printf("\nCadastrar Clientes !!!\n");
							  fflush ( stdin );
					          printf ( "\n Nome: " );
					          scanf ( "%s", &clientes [ cont ].nome );
					          printf ( "\n CPF: " );
					          scanf ( "%d", &clientes [ cont ].cpf );
					          printf ( "\nTELEFONE: " );
					          scanf ( "%s", &clientes [ cont ].telefone );
					        
					    printf("Deseja Fazer um novo cadastrato: 1 - Nao : 0 - Sim");
					    scanf("%d", &c);
					    cont++;
					}
			}
			
			// Busca Clientes
			if (opcao == 2){
		
				int cont=0,c=0;
				char busca[255];
				printf ( "\n Digite o nome do cliente a ser buscado: \n" ); // Exibindo
		        printf ( "Cliente: " );// Exibindo
		        scanf ( "%s", &busca );// Busca
		        while(c < 1){
				while(cont < 50){	
					        if (strcmp ( busca, clientes [ cont ].nome ) == 0) {
					              printf("\n %s", clientes [ cont ].nome);
					        }cont++;	
       			}
       					printf("Deseja Fazer uma nova busca: 1 - Nao : 0 - Sim");
					    scanf("%d", &c);
       		}
			}
			
			//Listar Cliente
			if(opcao == 3){
				int list;
			printf("\nListar Cliente em |1 - CPF : ordem crescente :: 2 - NOME : ordem crescente|: ");
			scanf("%d", &list);
				if(list == 1){
					// Ordenando Vetor em CPF
					int i=0, j=0;
					char VeTempo[50];
					for(i;i<50-1;i++){
						for(j;j<50-(i+1);j++){
							if(clientes[j].cpf > clientes[j+1].cpf){
								VeTempo[j]= clientes[j].cpf;
								clientes[j].cpf = clientes[j+1].cpf;
								clientes[j+1].cpf = VeTempo[j];
							}
						}
					}
				}
				
		}
		
		//Fim do while Menu
		printf("\n Deseja Fazer outra operacao 1 - Sair : 0 - Continuar: ");
		scanf("%d", &i);
		// ------------------------
	}
}

MUITO OBRIGADO MESMO A QUEM ME AJUDAR.

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0
22 horas atrás, HugoGuedes disse:

posso criar um vetor de estruct fora da main?

Poder pode, que seja uma boa ideia, em absoluto que não. Vc deve sempre usar os parâmetros para passar dados.

 

22 horas atrás, HugoGuedes disse:

Como posso, referenciar a minha struct em uma função tipo no cadastrar?

A struct deveria estar criada dentro de main, e vc deveria passar ela por referencia.

Em main criamos o array assim:

struct Clientes clientes [50];

E se tivermos uma função que receba os parâmetros tipo:

void func(struct Clientes *clientes){...}

Devemos invocar a função passando o array dessa forma:

func(clientes);

Pois a função espera a direção da lista(primeiro objeto da lista).

É equivalente a func(&clientes[0]);

 

 

 

 

Editado por vangodp
Link para o comentário
Compartilhar em outros sites

  • 0
11 horas atrás, vangodp disse:

Poder pode, que seja uma boa ideia, em absoluto que não. Vc deve sempre usar os parâmetros para passar dados.

 

A struct deveria estar criada dentro de main, e vc deveria passar ela por referencia.

Em main criamos o array assim:


struct Clientes clientes [50];

E se tivermos uma função que receba os parâmetros tipo:


void func(struct Clientes *clientes){...}

Devemos invocar a função passando o array dessa forma:


func(clientes);

Pois a função espera a direção da lista(primeiro objeto da lista).

É equivalente a func(&clientes[0]);

 

 

 

 

Vlew cara fiquei lendo ate entender e agora entendi e agora funfa a opção cadastrar do programa

Ve ai como ficou

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<conio.h>
//Estrutura Clientes
struct Clientes{
	char nome[255];
	int cpf;
	char telefone[50];	
};

//Função Cadastra
void CadastrarCliente(struct Clientes *clientes){
int count = 0;
int Op = 1;

while (Op > 0){
	printf("\n Digite o nome do cliente \n");
	printf("\n NOME: ");
	scanf ( "%s",  clientes[ count ].nome );

	printf("\n Digite o CPF do cliente \n");
	printf("\n CPF: ");
	scanf ( "%d",  &clientes[ count ].cpf );
	
	printf("\n Digite o Telefone do cliente \n");
	printf("\n TELEFONE: ");
	scanf ( "%s",  &clientes[ count ].telefone );
	
	printf("\n Deseja Cadastrar mais um Cliente? \n");
	printf("\n 1 - SIM || 0 - NAO \n");
	printf("\n Escolha: ");
	scanf("%d", &Op);
	count++;
}
}
//---------------


main(){
//Vetor de Cleintes
struct Clientes clientes[50];


//-------------------------
//Menu
/*Variavel de Escolha*/
int Op = 1;
while(Op > 0){
printf("\n Sistemas de Clientes \n");
printf("\n Esolha a opcao desejada \n");
printf("\n 1 - Cadastrar Clientes | :");
scanf("%d", &Op);
	//Cadastro Cliente
	if(Op == 1){
		CadastrarCliente(clientes);
	}
	//Fim Cadastro Cliente
	
	//Retorno para o menu ou sair do programa
	printf("\n Deseja Retornar ao Menu? | SIM - 1 Nao - 0 | Escolha: ");
	scanf("%d",&Op);
	system("cls");
}
//Fim do Menu
}

 

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...