Ir ao conteúdo

Posts recomendados

Postado

Bom eu estou com uma duvida nesse codigo, bom eu quero que ele faça o seguinte , o programa pergunta quantos clientes desejar cadastrar  coforme a quantidade de clientes q eu

digito, ele e pede o nome do cliente. Exemplo: se eu quero cadastrar 2 clientes , ele tem que pedir pra digitar o nome dos dois clientes , porém eu não estou conseguindo.

Obs: Estou Aprendendo C sou bem iniciante , Desde já agradeço a quem puder me ajudar.

 

 

 

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


int main(){

    char nome[100];
    int i, cliente;

    printf("\t\t\t\t|Sistema de Clientes|\n\n");
    printf("Quantos Clientes Serao Cadastrados ?: ");
    scanf("%i", &cliente);

    for(i=0;i<cliente;i++){

        system("cls");

        printf("Digite o Nome do Cliente: ");
        scanf("%c", &nome);

    }
    printf("Cliente Cadastrado!");

    return 0;
}

  • Curtir 1
  • Amei 1
  • Moderador
Postado

@Jão Marcos da Silva Você colocou %c no segundo scanf, %c é para um único caractere, ali é vetor de caracteres, deveria ser %s, pois trata-se de uma string. Só que, do jeito que está o seu código você só tá cadastrando um cliente de qualquer forma, pois está usando a mesma variável pra armazenar todos os nomes, faça o teste, coloque um printf("%s", nome); fora do for e você verá que só mostrará o último nome inserido.

  • Curtir 2
  • Moderador
Postado

@Jão Marcos da Silva  Eis aqui o código que eu fiz, veja se ficou do jeito que você queria. @AnsiC Você poderia dar uma olhada nesse código e me falar como posso melhorá-lo (se não for incômodo), ficou meio limitado, pois só tem como colocar o primeiro nome dos clientes, se colocar nome completo com espaços acaba bugando. Tô até usando o "\b" que aprendi com você naquele código meu que você deu uma arrumada marota kkkk.

#include <stdio.h>
#include <locale.h>

int main () {
	
	setlocale(LC_ALL,"");
	
	struct cliente {
		
		char nome[50];
		
	};
	
	struct cliente dados [50];
	
	int quantidade, j, cont, l = 0;
	
	printf("\nInsira quantos clientes deseja cadastrar: \t [  ]\b\b\b");
	scanf("%d", &quantidade);
	
	for (int i = 0; i < quantidade; i++) {
		j++;
		printf("\n\nInsira o nome do %dº cliente: \t", j);
		scanf("\n%s", dados[i].nome);
		cont++;
	}
	cont--;
	printf("\nEis a lista de todos os clientes cadastrados:");
	for (int k = 0; k < cont; k++) {
		l++;
		printf("\n %dº cliente cadastrado: %s ", l, dados[k].nome);	
	}
	
	return 0;	
}

 

adicionado 8 minutos depois

@Jão Marcos da Silva Qualquer coisa nesse código aí que você não entender o por que de estar ali me fala que te explico, tranquilo?

  • Curtir 2
Postado

@Batata Defumada Olá. Para resolver a questão q você mencionou de só ser possível colocar o primeiro nome poderia resolver dessa forma:

scanf("%[^\n]", &dados[i].nome);

Obs: Para um código com o seu, recomendo uma função para limpar a sujeira do buffer. Poderia ser essa: 

void limpa_linha() {
    scanf("%*[^\n]");
    scanf("%*c");
}

E aí depois de cada scanf fazer a chamada a essa função. Algo assim:

printf("\nInsira quantos clientes deseja cadastrar: \t [  ]\b\b\b");
scanf("%d", &quantidade);
limpa_linha();

 

  • Moderador
Postado

@giu_d Opa, muito obrigado mano, funcionou direitinho.  Isso de limpar o buffer faz milagre em? Tava testando o método que você mostrou pra colocar nome completo das pessoas e não deu certo até eu usar a função.

Agora tô tentando implementar um menu, onde o usuário possa escolher cadastrar clientes, ver a lista de todos os clientes cadastrados e também sair do programa se desejar, tava tentando isso "ontem" (já era madrugada), mas por algum motivo com o menuzinho não deu certo, acho que o tanto de contadores que eu coloquei (cont, j, l) acabaram ficando meio bugados quando coloquei os "if".

adicionado 3 minutos depois

@Jão Marcos da Silva No momento, o código está assim:

#include <stdio.h>
#include <locale.h>

void limpa_linha();

int main () {
	
	setlocale(LC_ALL,"");
	
	struct cliente {
		
		char nome[50];
	};
	
	struct cliente dados [50];
	
	int quantidade, j, i, k, cont, l = 0;
	
	printf("\nInsira quantos clientes deseja cadastrar: \t [  ]\b\b\b");
	scanf("%d", &quantidade);
	limpa_linha();
	
	for (i = 0; i < quantidade; i++) {
		j++;
		printf("\n\nInsira o nome do %dº cliente: \t", j);
		scanf("%[^\n]", dados[i].nome);
		limpa_linha();
		cont++;
	}
	printf("\nEis a lista de todos os clientes cadastrados:");
	for (k = 0; k < cont; k++) {
		l++;
		printf("\n %dº cliente cadastrado: %s ", l, dados[k].nome);	
	}
	
	return 0;	
}

void limpa_linha() {
    scanf("%*[^\n]");
    scanf("%*c");
}

 

  • Curtir 1
Postado

Olá tudo bem?

 

Um cardápio implementa-se dentro e foram da função main. Para esse exercício implementei dentro da função main. Então dentro da main fiz aquilo que é do menu, e suas funções implementadas com switch-case, por exemplo:

#include  <stdio.h>     /**< os padrões de entrada e saída. */ 
#include <locale.h>     /**< os padrões de localidade.      */


int main (int argc, char **argv){
    int quantidade, cont =  0;
    struct cliente{ char nome[50]; };

	
    printf ("\n");
    setlocale (LC_ALL,"");

    printf ("Insira quantos clientes deseja cadastrar: \t [ ]\b\b");
    scanf (" %d", &quantidade);

    /* nova strutc dados */
    struct cliente__dados{ struct cliente dados[quantidade]; };
    struct cliente__dados clientes;
    int opt;
	
    lbmenu : 
    printf ("Opções do Sistema\n");
    printf ("[1]: Cadastrar Clientes\n");
    printf ("[2]: Exibir os Clientes já cadastrados\n");
    printf ("[3]: Encerrar\n");
    
    printf ("[ ]\b\b");
    scanf (" %d", &opt);
    
    switch (opt){
        case 1 : printf("\n\n");
                 for (int i =  cont =  0; i  <  quantidade; i ++) {
                       printf("Insira o nome do %dº cliente: \t", i + 1);
                       scanf(" %[^\n]", clientes.dados[i].nome);
                       /* limpa_linha () */
                            scanf("%*[^\n]");
                            scanf("%*c");
                       cont ++; }
                 printf ("\n\n");
                 break;
	
        case 2 : printf ("\n");
                 printf("Eis a lista de todos os clientes cadastrados:");
                 for (int k =  0; k  <  cont; k ++) {
                       printf ("\n ");
                       printf ("%dº cliente cadastrado: ", k + 1);
                       printf ("%s", clientes.dados[k].nome); }
                 printf ("\n\n");
                 break;

        case 3 : printf ("Bye !!!\n\n");
                 return  0;
 
        default : printf ("<!> Erro opção invalida\a");
                  printf ("\n\n"); }
        goto lbmenu; /* jump para cardápio */
	return  0; }

 

Ok tchau!

 

adicionado 17 minutos depois

Faltou a variável cont;

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

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!