Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
Jão Marcos da Silva

C Meu For Nao Funciona

Recommended Posts

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

@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

Compartilhar este post


Link para o post
Compartilhar em outros sites

@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();

 

  • Curtir 1
  • Obrigado 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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;

Editado por AnsiC
  • Curtir 2

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário






Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×