Ir ao conteúdo

Posts recomendados

Postado

Olá gostaria de fazer um programa em C, queria fazer um controle de estacionamento da seguinte maneira:

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
int main(void)
{

    printf("-----------------------------------------\n");
    printf("\tCONTROLE DE ESTACIONAMENTO\n");
    printf("-----------------------------------------\n\n");
    printf("1- Cadastrar Cliente\n");
    printf("\n2- Cadastrar Veiculo\n");
    printf("\n3- Listar veiculos cadastrados\n");
    printf("\n4- Creditos\n");
    printf("\n5- Sair\n");

    //dados cadastrais do cliente
    struct cad_cliente{
    char nome[10];
    char idade[20];
    char CPF/CNPJ[20];
    char CNH[30];
    char Endereco[5];

    printf("Informe o nome do cliente: ");
    scanf("%c", &nome_cliente);
    printf("Informe a idade do cliente: ");
    scanf("%c", &idade_cliente);
    printf("Informe o CPF/CNPJ do cliente: ");
    scanf("%c", &CPF);
    printf("Informe o número do CNH do cliente: ");
    scanf("%c", &CNH);
    printf("Informe o endereço do cliente: ");
    scanf("%c", &Endereco);
    system("pause");
    return 0;

    };


fiz com essas informações mas não ta imprimindo as opções, como eu poderia fazer isso? Alguém me ajuda? 

  • Curtir 1
Postado

@Def o seu algoritmo tem bastante erros vou citar alguns;

voce nao fechou a struct , voce nao declarou o tipo da struct, voce nao esta tentando atribuir as informações lidas nas variaveis das struc, voce esta usando todas variaveis do tipo caractere ate quando deveria ser inteiros, o seu algoritmo nao tem um switch para ler a opcao do menu acredio porque deu pau antes de da tempo de fazer, para ler um string você nao pode usar %c de char deve usar %s de string ou gets e nao deve usar & quando se tratar d estrings, fiz alguma pequenas modificacoes e ja compilou, tente terminar...

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
int main(void)
{

    printf("-----------------------------------------\n");
    printf("\tCONTROLE DE ESTACIONAMENTO\n");
    printf("-----------------------------------------\n\n");
    printf("1- Cadastrar Cliente\n");
    printf("\n2- Cadastrar Veiculo\n");
    printf("\n3- Listar veiculos cadastrados\n");
    printf("\n4- Creditos\n");
    printf("\n5- Sair\n");

    //dados cadastrais do cliente
    struct cad_cliente{
    char nome[10];
    int idade;
    char CPF_CNPJ[20];
    char CNH[30];
    char Endereco[50];
	};
	
	cad_cliente info;
    printf("Informe o nome do cliente: ");
    gets(info.nome);
    printf("Informe a idade do cliente: ");
    scanf("%d", &info.idade);
    printf("Informe o CPF/CNPJ do cliente: ");
    gets(info.CPF_CNPJ);
    printf("Informe o número do CNH do cliente: ");
    gets(info.CNH);
    printf("Informe o endereço do cliente: ");
    gets(info.Endereco);
    system("pause");
    return 0;

    };

 

  • Curtir 2
Postado

@herbertbahia

7 minutos atrás, herbertbahia disse:

@Def o seu algoritmo tem bastante erros vou citar alguns;

voce nao fechou a struct , voce nao declarou o tipo da struct, voce nao esta tentando atribuir as informações lidas nas variaveis das struc, voce esta usando todas variaveis do tipo caractere ate quando deveria ser inteiros, o seu algoritmo nao tem um switch para ler a opcao do menu acredio porque deu pau antes de da tempo de fazer, para ler um string você nao pode usar %c de char deve usar %s de string ou gets e nao deve usar & quando se tratar d estrings, fiz alguma pequenas modificacoes e ja compilou, tente terminar...


#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
int main(void)
{

    printf("-----------------------------------------\n");
    printf("\tCONTROLE DE ESTACIONAMENTO\n");
    printf("-----------------------------------------\n\n");
    printf("1- Cadastrar Cliente\n");
    printf("\n2- Cadastrar Veiculo\n");
    printf("\n3- Listar veiculos cadastrados\n");
    printf("\n4- Creditos\n");
    printf("\n5- Sair\n");

    //dados cadastrais do cliente
    struct cad_cliente{
    char nome[10];
    int idade;
    char CPF_CNPJ[20];
    char CNH[30];
    char Endereco[50];
	};
	
	cad_cliente info;
    printf("Informe o nome do cliente: ");
    gets(info.nome);
    printf("Informe a idade do cliente: ");
    scanf("%d", &info.idade);
    printf("Informe o CPF/CNPJ do cliente: ");
    gets(info.CPF_CNPJ);
    printf("Informe o número do CNH do cliente: ");
    gets(info.CNH);
    printf("Informe o endereço do cliente: ");
    gets(info.Endereco);
    system("pause");
    return 0;

    };

Olá, já quero lhe agradecer por se disponibilizar em me ajudar. Mas eu copiei esses códigos e colei no meu codeblocks e deu vários erros, e acabou que não abriu o compilador olha como ficou:ERROS.thumb.png.f6b71b24e159f2d9f467960d54443df4.png

 

  • Curtir 2
Postado

@herbertbahia ué,  já desinstalei e instalei de novo pra ver se dava certo e  ainda continua dando erro, acho que você fez em c++ mas esse projeto tem que ser feito somente em C ;/

adicionado 3 minutos depois

@herbertbahia ahh entendi o problema, é porque você fez em C++ mas esse meu projeto só posso fazer ele em C, teria como me mostrar como se faz em C? por favor preciso muito e estou com dificuldade 

  • Curtir 1
Postado
2 minutos atrás, Def disse:

já desinstalei e instalei de novo pra ver se dava certo e  ainda continua dando erro

é verdade apenas desinstalar não vai fazer as conficiones se ajeitarem então é bom voce ver se realmente tem um compilador linkado certinho entre outros detalhes mas eu nao usei nenhum comando da linuguagem c++ somente c

  • Curtir 1
Postado

@herbertbahia eu tentei compilar em C no codeblocks e deu aqueles erros, só quando compilei em c++ que deu certo. Mas preciso fazer ele em C e com esses comandos não dá certo compilando em C -;

3 minutos atrás, herbertbahia disse:

é verdade apenas desinstalar não vai fazer as conficiones se ajeitarem então é bom voce ver se realmente tem um compilador linkado certinho entre outros detalhes mas eu nao usei nenhum comando da linuguagem c++ somente c

 

  • Curtir 2
Postado

@Def basta mencionar que infor é do tipo struct veja 

#include <stdio.h>
#include <stdlib.h>
//dados cadastrais do cliente
    struct cad_cliente{
    char nome[10];
    int idade;
    char CPF_CNPJ[20];
    char CNH[30];
    char Endereco[50];
	};

int main(void){
    struct cad_cliente info;
    printf("-----------------------------------------\n");
    printf("\tCONTROLE DE ESTACIONAMENTO\n");
    printf("-----------------------------------------\n\n");
    printf("1- Cadastrar Cliente\n");
    printf("\n2- Cadastrar Veiculo\n");
    printf("\n3- Listar veiculos cadastrados\n");
    printf("\n4- Creditos\n");
    printf("\n5- Sair\n");

    printf("Informe o nome do cliente: ");
    gets(info.nome);
    printf("Informe a idade do cliente: ");
    scanf("%d", &info.idade);
    printf("Informe o CPF/CNPJ do cliente: ");
    gets(info.CPF_CNPJ);
    printf("Informe o número do CNH do cliente: ");
    gets(info.CNH);
    printf("Informe o endereço do cliente: ");
    gets(info.Endereco);
    system("pause");
    return 0;

    }

 

  • Curtir 1
Postado

@herbertbahia nossa, muito obrigado me ajudou DEMAAAAISS!! mas poderia me tirar uma dúvida? porque você colocou esses info e porque mudou o struct pra cima?

 

  • Curtir 2
Postado
4 minutos atrás, Def disse:

porque você colocou esses info

para acessar os elementos de uma struct ela vai precisar ter um tipo e a sua struct cad_cliente nao tinha. pode ser qualquer nome o importante é ter um tipo. veja os tipos de structs e como associar valores as suas respetivas variaveis

#include <stdio.h>

int main() {
//Existem quatro tipos de struct: 

//Struct com tipo logo apos a chave. (apenas uma unica estrutura)
struct estrutura1{
	int a;
	int b;
}var1; //aqui cria-se um novo tipo, poderia ser vetor.
var1.a=3;
printf("%d\n",var1.a);



//Struct com a variável depois. (apenas uma unica estrutura)
struct estrutura2{
	int a;
	int b;
};
struct estrutura2 var2;//aqui cria-se o novo tipo var2, poderia ser vetor.
var2.a=5;
var2.b=7;
printf("%d %d\n",var2.a,var2.b);



//Struct typedef com o tipo logo apos a chave.
typedef struct{
	int a;
	int b;
}var3; //aqui cria-se um novo tipo

//Observe que nao pode fazer var1 x,y; nem var2 x,y; mas com struct typedef pode.
//ou seja cada variavel que criar sera outra estrutura.

var3 x,y;//aqui foi criado 2 variavel do tipo var3 cada variavel representa 1 struct.
x.a=1;
y.a=2;
printf("%d %d\n",x.a,y.a);



//Struct com typedef na variavel
struct estrutura4{
	int a;
	int b;
};
typedef struct estrutura4 novo;//tipo e variavel na mesma linha.
//observe que agora podemos declarar novas variaveis para a mesma estrutura.
novo struct1, struct2, struct3;
struct1.a=8;
struct2.a=10;
struct3.a=20;
printf("%d %d %d\n",struct1.a,struct2.a,struct3.a);

//quando o novo tipo de alguma estrutura for um ponteiro poderá usar setinha ->
//resumindo o que permite usar -> é possuir um asterisco(*)
//ex 1:
struct estrutura5{
 int membro;
};
// Acessando através de uma variavel não-ponteiro: e
estrutura5 e;
e.membro = 0;
// Acessando através de uma variavel ponteiro: e2
estrutura5* e2;
e2->membro = 0; // ou 
(*e2).membro = 0;


//ex2:
struct no{		
  int dado;
  struct no *prox;
};
struct no *ptr = (struct no*) malloc(sizeof(struct no));
ptr->dado // ou
(*ptr).dado
ptr->prox// ou
(*ptr).prox

}

 

8 minutos atrás, Def disse:

porque mudou o struct pra cima?

voce estava deixando a struct presa na funcao main eu coloquei a struct como global pois pode ser acessada de qualquer funcao do programa

  • Curtir 1
Postado
3 minutos atrás, Def disse:

as ta ficando um do lado do outro o que eu faço em casos como esse?

limpe o buffer

#include <stdio.h>
#include <stdlib.h>
//dados cadastrais do cliente
    struct cad_cliente{
    char nome[10];
    int idade;
    char CPF_CNPJ[20];
    char CNH[30];
    char Endereco[50];
	};

int main(void){
    struct cad_cliente info;
    printf("-----------------------------------------\n");
    printf("\tCONTROLE DE ESTACIONAMENTO\n");
    printf("-----------------------------------------\n\n");
    printf("1- Cadastrar Cliente\n");
    printf("\n2- Cadastrar Veiculo\n");
    printf("\n3- Listar veiculos cadastrados\n");
    printf("\n4- Creditos\n");
    printf("\n5- Sair\n");

    printf("Informe o nome do cliente: ");
    gets(info.nome);
    printf("Informe a idade do cliente: ");

    scanf("%d", &info.idade);
    printf("Informe o CPF/CNPJ do cliente: ");
    fflush(stdin);
    gets(info.CPF_CNPJ);
    printf("Informe o número do CNH do cliente: ");
    gets(info.CNH);
    printf("Informe o endereço do cliente: ");
    gets(info.Endereco);
    system("pause");
    return 0;

    }

 

  • Curtir 1
Postado

@herbertbahia 1805219872_comovolta.thumb.png.239b024f71f971b179c5d59e6d192aa7.png

Como faço pra ele voltar para o inicio? tipo, ele fez o cadastro com esses dados que coloquei eai quero que quando apertar o enter ele vá para a 2 opção ou pro inicio mesmo

  • Curtir 1
Postado

@herbertbahia ok, to fazendo com switch case, mas preciso tirar uma dúvida. Qual código que tem que colocar pra aparecer aquela mensagem de "Informe o nome do cliente" somente quando eu digitar a opção 1?

image.png.8e4fc7b23c6d2359599d431fa0129baf.png

  • Curtir 1
Postado
7 horas atrás, Def disse:

colocar pra aparecer aquela mensagem de "Informe o nome do cliente" somente quando eu digitar a opção 1?

nao faria muito sentido ler apenas o nome do cliente quando digitar 1 pois no menu diz cadastrar cliente entao deve armazenar toda estrutura que fez para ler os dados do cliente dentro do case 1 eis um exemplo.

#include <stdio.h>
#include <stdlib.h>
//dados cadastrais do cliente
    struct cad_cliente{
    char nome[10];
    int idade;
    char CPF_CNPJ[20];
    char CNH[30];
    char Endereco[50];
	};

int main(void){
    struct cad_cliente info;
    int op;
       printf("-----------------------------------------\n");
    printf("\tCONTROLE DE ESTACIONAMENTO\n");
    printf("-----------------------------------------\n\n");
    printf("1- Cadastrar Cliente\n");
    printf("\n2- Cadastrar Veiculo\n");
    printf("\n3- Listar veiculos cadastrados\n");
    printf("\n4- Creditos\n");
    printf("\n5- Sair\n");
    scanf("%d",&op);
    switch(op){
    case 1:
    printf("Informe o nome do cliente: ");
    gets(info.nome);
    printf("Informe a idade do cliente: ");

    scanf("%d", &info.idade);
    printf("Informe o CPF/CNPJ do cliente: ");
    fflush(stdin);
    gets(info.CPF_CNPJ);
    printf("Informe o número do CNH do cliente: ");
    gets(info.CNH);
    printf("Informe o endereço do cliente: ");
    gets(info.Endereco);
    break;
    }
    }

 

  • Curtir 1
Postado

@herbertbahia É porque tipo, eu queria que aparecesse assim: Digite uma opção: ai eu digito o numero 1 e apaga tudo aquilo e fica só as opções do número 1, como se fosse a guia do numero 1 entendeu? que é só a parte de cadastrar o cliente ai quando eu cadastrasse eu apertava enter e voltava pra aquele menu inicial. Sabe como faz? 

cnd.png

Pra não ter que ficar assim meio bagunçado ^

  • Curtir 2
Postado

para limpar a tela use a função system("cls");

chame essa funçao logo quando for iniciar a outra etapa

 

se voce vai cadastrar um numero indeterminado de clientes entao voce pode usar estrutura dinamica e realocar sempre que for cadastrar um novo cliente

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

struct cad_cliente{
char nome[30];
};

int main(){
struct cad_cliente *ptr;
ptr = ( struct cad_cliente* ) malloc (1* sizeof (  struct cad_cliente* ));
int i,cont=1;
char op;
for (i=0;i<cont;i++){
	fflush(stdin);
printf ( "\n Digite o nome : \n" );
gets(ptr[i].nome);
printf ( "\n Deseja cadastrar outro ? s | n :\n" );
scanf(" %c",&op);
if (op=='s'||op=='S'){
cont++;
ptr = ( struct cad_cliente* ) realloc(ptr,1 * sizeof(  struct cad_cliente* ));
}

}
for (i=0;i<cont;i++){
	printf ( "\n Nome: %s\n ",ptr[i].nome );
}
free(ptr);
}

 

  • Curtir 1
Postado
1 minuto atrás, Def disse:

da pra usar essa estrutura junto ao outro código?

sim claro por isso mesmo estou mencionando, mas se voce está iniciando agora e ainda nao viu esse conteudo ainda é melhor nem tentar.

  • Curtir 1
Postado

@herbertbahia

#include <stdio.h>
#include <stdlib.h>
//dados cadastrais do cliente
    struct cad_cliente{
    char nome[10];
    int idade;
    char CPF_CNPJ[20];
    char CNH[30];
    char Endereco[50];
    };

int main(void){
    struct cad_cliente info;
    int opcao;
       printf("-----------------------------------------\n");
    printf("\tCONTROLE DE ESTACIONAMENTO\n");
    printf("-----------------------------------------\n\n");
    printf("1- Cadastrar Cliente\n");
    printf("\n2- Cadastrar Veiculo\n");
    printf("\n3- Listar veiculos cadastrados\n");
    printf("\n4- Creditos\n");
    printf("\n5- Sair\n");
    printf("\nOpcao: ");
    scanf("%d",&opcao);
    switch(opcao){
    system("cls");
    case 1:
    printf("Informe o nome do cliente: ");
    gets(info.nome);
    printf("Informe a idade do cliente: ");

    scanf("%d", &info.idade);
    printf("Informe o CPF/CNPJ do cliente: ");
    fflush(stdin);
    gets(info.CPF_CNPJ);
    printf("Informe o número do CNH do cliente: ");
    gets(info.CNH);
    printf("Informe o endereço do cliente: ");
    gets(info.Endereco);
    break;
    }
    coloquei o system("cls"); abaixo na opcao mas ainda não apaga pra ficar só aquela opção, queria que apagasse pra ficar só a opcao 1 e quando eu terminasse de preencher esses dados que coloquei ai ia ter uma mensagem de "aperte enter para voltar ao menu" entende, o que está faltando? 

adicionado 1 minuto depois

@herbertbahia ainda não vi esse conteúdo, meu professor mal explicou como trabalha em C. Ele só nos passou lógica de programação em Portugol e pediu pra gente usar essa lógica em C kkkkk mas é complicado 

  • Curtir 2
Postado

tem que ficar dentro do case para ocls iniciar quando ele inciar

#include <stdio.h>
#include <stdlib.h>
//dados cadastrais do cliente
    struct cad_cliente{
    char nome[10];
    int idade;
    char CPF_CNPJ[20];
    char CNH[30];
    char Endereco[50];
    };

int main(void){
    struct cad_cliente info;
    int opcao;
       printf("-----------------------------------------\n");
    printf("\tCONTROLE DE ESTACIONAMENTO\n");
    printf("-----------------------------------------\n\n");
    printf("1- Cadastrar Cliente\n");
    printf("\n2- Cadastrar Veiculo\n");
    printf("\n3- Listar veiculos cadastrados\n");
    printf("\n4- Creditos\n");
    printf("\n5- Sair\n");
    printf("\nOpcao: ");
    scanf("%d",&opcao);
    switch(opcao){
    
    case 1:
    	system("cls");
    printf("Informe o nome do cliente: ");
    fflush(stdin);
    gets(info.nome);
    printf("Informe a idade do cliente: ");
    scanf("%d", &info.idade);
    printf("Informe o CPF/CNPJ do cliente: ");
    fflush(stdin);
    gets(info.CPF_CNPJ);
    printf("Informe o número do CNH do cliente: ");
    gets(info.CNH);
    printf("Informe o endereço do cliente: ");
    gets(info.Endereco);
    break;
    }
	}

 

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