Ir ao conteúdo

Posts recomendados

Postado
48 minutos atrás, Def disse:

Mas esse int menu era apenas pra declarar a opção do case 1?

 

Não. Como eu tinha te explicado...

 

image.png.4d26d2723651d5ce56ceadc78b7497e7.png

 

Quando eu disse

 

Citação

"passe esse menu e a leitura da opcao para uma ourtra função para ficar mais simples. Apenas uma função que retorna a opção lida antes de entrar no case"

 

adivinhe o que eu queria dizer... 
 

image.png.a0d99887103f4d3a9baa35362ce72d9a.png

 

É o simples. Todos os menus são assim.

Postado

Na minha opinião a discussão redeu isto. 

#define  _CRT_SECURE_NO_WARNINGS

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

//** Macro de Constante do menu
#define Cadastrar_Veiculo (2) 
#define Mostra_Veiculo    (3)  
#define Sair_             (5)

//** Dados Cadastrais Folha do Cliente
struct cad_cliente{
	char	nome[10];
	int	idade;
    	char	CPF_CNPJ[20];
    	char	CNH[30];
    	char	endereco[50];
};
typedef struct cad_cliente Cliente;

//** Dados Cadastrais Folha do Carro
struct cad_carro {
	char	placa[10];
	char	modelo[20];
	char	marca[20];
	char	cor[20];
	char	ano[5];
};
typedef struct cad_carro Carro;

//** Protótipos de Funções
// > Funções do Tipo Carro
int le_um_carro (Carro *);
int mostra_um_carro(Carro *);

// > Funções do Tipo Cliente
int le_um_cliente (Cliente *);
int mostrar_um_cliente (Cliente *);

// > Funções Sistema
int menu (void);

//------------------------------------------------------------| MAIN
int main (void){
	Carro infor_carro; //> Folha de Informações d'Carro

	int opcao = 0;
	int continuar_loop = 1;
	while (continuar_loop){
		menu (); //> Exibe as opções do menu.
		scanf (" %d", &opcao); //> Ler opção do Usuário
		setbuf (stdin, NULL);

    		switch (opcao){
			case Cadastrar_Veiculo:
				le_um_carro (&infor_carro);
				break;
			case Mostra_Veiculo:
				mostra_um_carro (&infor_carro);
				break;
			case Sair_:
				continuar_loop = 0;
				break;
    			default:
				printf("Opcao inesperada: %d\n", opcao);
				break;
		}
		opcao = 0;
	}
	return EXIT_SUCCESS;
}//----------- FIM MAIN
//** Definição de Funções d'Programa
//>> Funções do Tipo Carro
//------------------------------------------------------------| LER UM CARRO  
int le_um_carro(Carro *C){
    	Carro tmp_car = {0}; //> Variável Temporária do Tipo Carro

    	_placa:
		printf("Informe o numero da placa [7 digitos]: ");
        	gets (tmp_car.placa);
		setbuf (stdin, NULL);

        	if (strlen (tmp_car.placa) != 7){
            		printf (" Erro quantidade de digitos diferente de 7! \n\n");
        		goto _placa;
        	}
        printf (" a marca do veiculo..................: ");
        gets (tmp_car.marca);
	setbuf (stdin, NULL);
        
	printf (" o modelo do veiculo.................: ");
	gets (tmp_car.modelo);
	setbuf (stdin, NULL);

        printf (" a cor do veiculo....................: ");
        gets (tmp_car.cor);
	setbuf (stdin, NULL);

        printf (" o ano do veiculo....................: ");
        gets (tmp_car.ano);
	setbuf (stdin, NULL);

	if (C){
		*C = tmp_car;
		return EXIT_SUCCESS;
	}
        return EXIT_FAILURE;
}//----------- FIM LER UM CARRO
//------------------------------------------------------------| MOSTRA UM CARRO 
int mostra_um_carro (Carro *C){
	if (C){
		printf ("\n\n");
		printf ("Veiculo(s) Cadastrado \n"
		        " %-10s|%-20s|%-20s|%-20s|%-5s \n",
							"Marca", "Modelo",
								 "Cor", "Placa",
									 "Ano");
		printf( " %-10s|%-20s|%-20s|%-20s|%-5s \n",
							C->marca, C->modelo,
								C->cor, C->placa,
								      	 C->ano);
		getchar (); // Pause
		return EXIT_SUCCESS;
	}
	return EXIT_FAILURE;
}//----------- FIM MOSTRA UM CARRO
// > Funções d'Sistema
//------------------------------------------------------------| MENU
int menu (void){
        system ("cls");
	printf ("-----------------------------------------\n"
		"\tCONTROLE DE ESTACIONAMENTO\n"
		"-----------------------------------------\n"
		"\n1 Cadastrar Cliente"
		"\n2 Cadastrar Veiculo"
		"\n3 Listar veiculos cadastrados"
		"\n4 Creditos"
		"\n5 Sair"
		"\nOpcao..: "
	);
	return EXIT_SUCCESS;
}//----------- FIM MENU

👍

Postado

image.thumb.png.f827f612f94ac927b9a52789c31ba938.png

 

Sério? no tópico #109...

 

56 minutos atrás, Def disse:

Apertei alt + enter mas não deu em nada

 

Cada IDE tem suas funções... Uns são mais espertos outros são mais simples.

 

Esse pelo qual você optou é o mais simples e antiquado. Acho que não tem essas funções...

 

 

Postado
5 horas atrás, herbertbahia disse:

#define  _CRT_SECURE_NO_WARNINGS

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
//dados cadastrais do cliente
     typedef struct{
    char nome[10];
    int idade;
    char CPF_CNPJ[20];
    char CNH[30];
    char Endereco[50];
    }Cliente;
    
    typedef struct
{
    char placa[10];
    char modelo[20];
    char marca[20];
    char cor[20];
    char ano[5];
}   Carro;

//int le_um_cliente(Cliente*);
//int mostra_um_cliente(Cliente*);
int le_um_carro(Carro*);
int mostra_um_carro(Carro* c);

    int main(){
    char aux[200];
    Carro info;
    Cliente cliente;
    int opcao;
    while(1){
            system("cls");
    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:
     /*   le_um_cliente(&cliente);
        mostra_um_cliente(&cliente);
        break;
        */
        
        system("cls");
    printf("Informe o nome do cliente: ");
    fflush(stdin);
    gets(cliente.nome);
    printf("Informe a idade do cliente: ");
    scanf("%d", &cliente.idade);

    printf("Informe o CPF/CNPJ do cliente: ");
    cpf:
    fflush(stdin);
    gets(aux);
    if (strlen(aux) < 11){
    printf("erro quantidade de digitos menor do que o correto\n");
    printf("Digite novamente: \n");
    goto cpf;

    }
    else if (strlen(aux) > 11){
    printf("erro quantidade de digitos maior do que o correto\n");
    printf("Digite novamente: \n");
    goto cpf;

    }
    else{
    strcpy(cliente.CPF_CNPJ,aux);
    }
    printf("Informe o número do CNH do cliente: ");
    cnh:
    fflush(stdin);
    gets(aux);
    if (strlen(aux) < 11){
    printf("erro quantidade de digitos menor do que o correto\n");
    printf("digite novamente: \n");
    goto cnh;

    }
    else if (strlen(aux) > 11){
    printf("erro quantidade de digitos maior do que o correto\n");
    printf("digite novamente: \n");
    goto cnh;

    }
    else{
    strcpy(cliente.CNH,aux);
    }

    printf("Informe o endereco do cliente: ");
    gets(cliente.Endereco);
    system("pause");
    break;
        
    case 2:
        le_um_carro(&info);
        
        break;
    default:
        printf("Opcao inesperada: %d\n", opcao);
        break;
        case 3:
        	mostra_um_carro(&info);
        	system("pause");
        	break;
        	 case 5:
        	 	exit(1);
    }  // switch()
}  
}// main()
     
int le_um_carro(Carro* C)
{
    char aux[200];
    Carro info;
        printf("Informe o numero da placa [8 digitos]: ");
    placa:
        fflush(stdin);
        gets(aux);
        if (strlen(aux) < 8) {
            printf("erro quantidade de digitos menor do que o correto\n");
            printf("Digite novamente: ");
            goto placa;
        }
        else if (strlen(aux) > 8) {
            printf("erro quantidade de digitos maior do que o correto\n");
            printf("Digite novamente: ");
            goto placa;
        }
        else {
            strcpy(info.placa, aux);
        }
        printf("Informe a marca do veiculo: ");
        gets(info.marca);
        printf("Informe o modelo do veiculo: ");
        gets(info.modelo);
        printf("Informe a cor do veiculo: ");
        gets(info.cor);
        printf("Informe o ano do veiculo: ");
        gets(info.ano);
        *C = info;
        return 0;
};  // le_um_carro()


int mostra_um_carro(Carro* c)
{
    printf("Marca/Modelo: %s %s Cor: %s Placa: %s Entrada: %s \n",
        c->marca,
        c->modelo,
        c->cor,
        c->placa,
        c->ano
    );
    return 0;
};

 

Porque você colocou case 4 e o case 5?

Postado
6 horas atrás, Def disse:

Porque você colocou case 4 e o case 5?

eu só estava dando um jeito de compilar até porque voce parecia estar tendo muita dificuldade para fazer isto mas é bem visivel que ainda precisa melhorar mais coisas, viu como fica estranho chamar uma função em um case e na outra ter a função lá dentro parece que nao tem um padrão, e o fato de eu ter escrito os cases 4 e 5 e porque o seu menu gritante

6 horas atrás, Def disse:

printf("\n4- Creditos\n"); printf("\n5- Sair\n");

nao tinha resposta nenhuma pra isto

 

viu direitinho a conclusão que  o @Mauro Britivaldo britivaldo postou? e os exemplos do @arfneto ? se seguir a orientações vai ter uma nota excelente.

Postado
7 horas atrás, herbertbahia disse:

eu só estava dando um jeito de compilar até porque voce parecia estar tendo muita dificuldade para fazer isto mas é bem visivel que ainda precisa melhorar mais coisas, viu como fica estranho chamar uma função em um case e na outra ter a função lá dentro parece que nao tem um padrão, e o fato de eu ter escrito os cases 4 e 5 e porque o seu menu gritante

nao tinha resposta nenhuma pra isto

 

viu direitinho a conclusão que  o @Mauro Britivaldo britivaldo postou? e os exemplos do @arfneto ? se seguir a orientações vai ter uma nota excelente.

Ahh sim, entendi. @herbertbahia já terminamos o trabalho praticamente, mas quis colocar uma opção pra pessoa decidir se ela irá querer pagar uma diaria ou mensal pelo estacionamento então fizemos com switch case também pra pessoa escolher, porém tem algo dando errado. Acredito que seja porque tem o case 1 e 2 dentro do case 3 como você pode ver, mas não tem o que fazer já que precisa do switch case pra pessoa poder escolher, como eu deveria arrumar isso? usando um if talvez??

//Feito por Alex, Gabriel M e Pedro V.
//Feito por Alex, Gabriel M e Pedro V.

#define  _CRT_SECURE_NO_WARNINGS//Diz para o compilador que o programador não quer usar a versão segura das bibliotecas

#include <stdio.h>//Biblioteca padrão do C
#include <stdlib.h>//Biblioteca padrão do C
#include <string.h>//Possui comando para mehlor utilização de stirngs
#include <locale.h>//Biblioteca para reconhecer caracteres como "Ç"


    typedef struct //dados cadastrais do cliente
    {
        char nome[10];//Variável para nome
        int idade;//Variável para idade
        char CPF_CNPJ[20];//Variável para CPF/CNPJ
        char CNH[30];//Variável para CNH
        char Endereco[50];//Variável para endereço
    }   Cliente;//Atribui todas as variáveis para o Cliente

    typedef struct //dados cadastrais do veículo
{
        char placa[10];//Variável para placa do veículo
        char modelo[20];//Variável para modelo do veículo
        char marca[20];//Variável para marca do veículo
        char cor[20];//Variável para cor do veículo
        char ano[5];//Variável para ano do veículo
}       Carro;//Atribui todas as variáveis para o carro

    int le_um_carro(Carro*); //Informações do veículo
    int mostra_um_carro(Carro* c);//Informações do veículo para serem exibidas no programa

    int main(){
    char aux[200];
    Carro info;
    Cliente cliente;
    int opcao; //Variável para o Switch-Case
    int qntdvezes; //Variável que guardar quantas vezes o cliente veio ao estacionamento
    int virnovamente; //Variável que valida quantas vezes o cliente tem que vir para dar 10 idas ao estacionamento
    setlocale(LC_ALL, "Portuguese"); //Comando da biblioteca locale.h para reconhecer caracteres especiais

    while(1){
        //Menu para o cliente
        system("cls");
        printf("-----------------------------------------\n");
        printf("\tCONTROLE DE ESTACIONAMENTO\n");
        printf("-----------------------------------------\n\n");
        printf("1- Cadastrar Cliente\n");
        printf("\n2- Cadastrar Veículo\n");
        printf("\n3- Valor do estacionamento\n");
        printf("\n4- Listar  o último veículo cadastrado\n");
        printf("\n5- Créditos\n");
        printf("\n6- Sair\n");
        printf("\nOpcao: ");
        scanf("%d",&opcao);

    switch (opcao){//Switch para o cliente escolher

    //Case 1 é para guardar informações do cliente
    case 1:
        system("cls");//Limpa a tela
        printf("Informe o nome do cliente: ");//Printf para exibir uma mensagem na tela
        fflush(stdin);//Limpa o espaço de memória
        gets(cliente.nome);//Gets armazena TODOS os caracteres digitados
        printf("Informe a idade do cliente: ");
        scanf("%d", &cliente.idade);//Sacnf é para receber valores de váriaveis

        printf("Informe o CPF/CNPJ do cliente: ");
        cpf:
        fflush(stdin);
        gets(aux);
    if (strlen(aux) < 11){ //If para validar se os digitos estão corretos
        printf("Erro quantidade de dígitos menor do que o esperado\n");
        printf("Digite novamente: ");
        goto cpf;//O goto serve para tratar erros, se algum for indentificado, ele volta para o usuário digitar novamente
        }

    else if (strlen(aux) > 11){ //Else if para validar se os digitos estão corretos
        printf("Erro quantidade de dígitos maior do que o esperado\n");
        printf("Digite novamente: ");
        goto cpf;
        }

    else{ //Else para validar se os digitos estão corretos, e se estiverem prossegue o cadastro
        strcpy(cliente.CPF_CNPJ,aux);
        }
        printf("Informe o número do CNH do cliente: ");
        cnh:
        fflush(stdin);
        gets(aux);
    if (strlen(aux) < 11){ //If para validar se os digitos estão corretos
        printf("Erro quantidade de dígitos menor do que o esperado\n");
        printf("Digite novamente: ");
        goto cnh;
        }

    else if (strlen(aux) > 11){ //Else if para validar se os digitos estão corretos
        printf("Erro quantidade de dígitos maior do que o esperado\n");
        printf("Digite novamente: ");
        goto cnh;
        }

    else{ //Else para validar se os digitos estão corretos, e se estiverem prossegue o cadastro
        strcpy(cliente.CNH,aux);//Strcpy transfere o valor de uma variável para outra(char)
        }
        printf("Informe o endereço do cliente: ");
        gets(cliente.Endereco);
        system("pause");//Faz o sistema esperar o usuário apertar uma tecla para voltar ao menu
        break;//´Para a execução do switch

    //Case 2 é para cadatrar os dados dos veículos
    case 2:
        le_um_carro(&info);//Chama a função para o cadastro dos veículos
        break;
        default: //Default é para, se alguma opção foi escolhida erroneamente, ele exibe uma mensagem
        printf("Opcao inesperada: %d\n", opcao);
        break;

     //Case 3 é para exibir o valor do estacionamento
    case 3:
    system(cls);//limpar a tela
int pagamento;//forma de pagamento
int tipo_serv;//tipo de serviço
  {
    printf("------------------------------------------\n");
    printf("\tTIPOS DE SERVICOS OFERECIDOS:\n");
    printf("------------------------------------------\n\n");
    printf("\n1- PLANO MENSAL =60R$ \n\n");
    printf("\n2- DIARIA =2,50R$ \n\n");
    printf("Escolha uma das duas opções para realizar o pagamento: ");
    scanf("%d", &tipo_serv);
switch(tipo_serv)
    {
case 1:
    system("cls");
    printf("SUA CONTA FICOU 60R$.\t");
    printf("Escolha o meio de pagamento: \n\n");
    printf("\n1- Credito\n");
    printf("\n2- Debito\n");
    printf("\n3- Em dinheiro\n\n");
    printf("Digite o numero equivalente a sua escolha: ");
    scanf("%d", &pagamento);
break;

case 2:
    system("cls");
    printf("SUA CONTA FICOU 2,50R$.\t");
    printf("Escolha o meio de pagamento: \n\n");
    printf("\n1- Credito\n");
    printf("\n2- Debito\n");
    printf("\n3- Em dinheiro\n\n");
    printf("Digite o numero equivalente a sua escolha: ");
    scanf("%d", &pagamento);
    }

}
    //Case 4 é para exibir o último carro cadastrado
    case 4:
        system("cls");
        mostra_um_carro(&info);
        system("pause");
        break;

    //Case 5 é para validar quantas vezes o cliente terá q usar o estacionamento para ter uma vinda de graça
    case 5:
        printf(" A cada 10 vindas ao estacionamento, você tem direito a vir 1 vez sem pagar.\n ");
        printf("Informe quantas vezes veio ao estacionamento:\n ");
        scanf("%d", &qntdvezes);
        if (qntdvezes < 10){
            virnovamente = 10 - qntdvezes;//Validar quantas vezes o cliente precisa vir para ter o estacionamento gratuito
            printf(" Você precisa vir mais %d vezes ao estacionamento.", virnovamente);
            }
        else {
            printf(" Parabéns, você tem uma ida ao estacionamento de graça.");
            }
        getch();
        break;
    //Case 6 é para o cliente sair do menu
    case 6:
        printf("Agradecemos a sua vinda e volte sempre!!");
        exit(1);//Sair do programa
        break;
        }
    }
}

    //le_um_carro serve para guardar as informações do case 2
    int le_um_carro(Carro* C)
    {
        system("cls");
        char aux[200];
        Carro info;
        printf("Informe o número da placa, como: xxx-xxxx [8 digitos]: ");
        placa:
        fflush(stdin);
        gets(aux);
        if (strlen(aux) < 8) {//If para validar se os digitos estão corretos
            printf("Erro quantidade de dígitos menor do que o correto\n");
            printf("Digite novamente: ");
            goto placa;
            }

        else if (strlen(aux) > 8) {//Else if para validar se os digitos estão corretos
            printf("Erro quantidade de dígitos maior do que o correto\n");
            printf("Digite novamente: ");
            goto placa;
            }

        else {//Else para validar se os digitos estão corretos, e se estiverem prossegue o cadastro
            strcpy(info.placa, aux);
            }
            printf("Informe a marca do veículo: ");
            gets(info.marca);
            printf("Informe o modelo do veículo: ");
            gets(info.modelo);
            printf("Informe a cor do veículo: ");
            gets(info.cor);
            printf("Informe o ano do veículo: ");
            gets(info.ano);
            *C = info;
        return 0;
};

    //mostra_um_carro serve para literalmente mostrar as informações do case 3
    int mostra_um_carro(Carro* c)
    {
        printf(" Marca/Modelo: %s %s\n Cor: %s\n Placa: %s\n Ano do Veículo: %s\n",
            c->marca,
            c->modelo,
            c->cor,
            c->placa,
            c->ano
            );
    return 0;
};

OBS: Esse é nosso trabalho

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

já terminamos o trabalho praticamente, mas quis colocar uma opção pra pessoa decidir se ela irá querer pagar uma diaria ou mensal pelo estacionamento então fizemos com switch case também pra pessoa escolher, porém tem algo dando errado. Acredito que seja porque tem o case 1 e 2 dentro do case 3 como você pode ver, mas não tem o que fazer já que precisa do switch case pra pessoa poder escolher, como eu deveria arrumar isso? usando um if talvez??

é normal usar um switch dentro do outro, a questão é que você chamou a função getch da biblioteca conio veja

 

//Feito por Alex, Gabriel M e Pedro V.
//Feito por Alex, Gabriel M e Pedro V.

#define  _CRT_SECURE_NO_WARNINGS//Diz para o compilador que o programador não quer usar a versão segura das bibliotecas

#include <stdio.h>//Biblioteca padrão do C
#include <stdlib.h>//Biblioteca padrão do C
#include <string.h>//Possui comando para mehlor utilização de stirngs
#include <locale.h>//Biblioteca para reconhecer caracteres como "Ç"
#include <conio.h>//getch



    typedef struct //dados cadastrais do cliente
    {
        char nome[10];//Variável para nome
        int idade;//Variável para idade
        char CPF_CNPJ[20];//Variável para CPF/CNPJ
        char CNH[30];//Variável para CNH
        char Endereco[50];//Variável para endereço
    }   Cliente;//Atribui todas as variáveis para o Cliente

    typedef struct //dados cadastrais do veículo
{
        char placa[10];//Variável para placa do veículo
        char modelo[20];//Variável para modelo do veículo
        char marca[20];//Variável para marca do veículo
        char cor[20];//Variável para cor do veículo
        char ano[5];//Variável para ano do veículo
}       Carro;//Atribui todas as variáveis para o carro

    int le_um_carro(Carro*); //Informações do veículo
    int mostra_um_carro(Carro* c);//Informações do veículo para serem exibidas no programa

    int main(){
    char aux[200];
    Carro info;
    Cliente cliente;
    int opcao; //Variável para o Switch-Case
    int qntdvezes; //Variável que guardar quantas vezes o cliente veio ao estacionamento
    int virnovamente; //Variável que valida quantas vezes o cliente tem que vir para dar 10 idas ao estacionamento
    setlocale(LC_ALL, "Portuguese"); //Comando da biblioteca locale.h para reconhecer caracteres especiais

    while(1){
        //Menu para o cliente
        system("cls");
        printf("-----------------------------------------\n");
        printf("\tCONTROLE DE ESTACIONAMENTO\n");
        printf("-----------------------------------------\n\n");
        printf("1- Cadastrar Cliente\n");
        printf("\n2- Cadastrar Veículo\n");
        printf("\n3- Valor do estacionamento\n");
        printf("\n4- Listar  o último veículo cadastrado\n");
        printf("\n5- Créditos\n");
        printf("\n6- Sair\n");
        printf("\nOpcao: ");
        scanf("%d",&opcao);

    switch (opcao){//Switch para o cliente escolher

    //Case 1 é para guardar informações do cliente
    case 1:
        system("cls");//Limpa a tela
        printf("Informe o nome do cliente: ");//Printf para exibir uma mensagem na tela
        fflush(stdin);//Limpa o espaço de memória
        gets(cliente.nome);//Gets armazena TODOS os caracteres digitados
        printf("Informe a idade do cliente: ");
        scanf("%d", &cliente.idade);//Sacnf é para receber valores de váriaveis

        printf("Informe o CPF/CNPJ do cliente: ");
        cpf:
        fflush(stdin);
        gets(aux);
    if (strlen(aux) < 11){ //If para validar se os digitos estão corretos
        printf("Erro quantidade de dígitos menor do que o esperado\n");
        printf("Digite novamente: ");
        goto cpf;//O goto serve para tratar erros, se algum for indentificado, ele volta para o usuário digitar novamente
        }

    else if (strlen(aux) > 11){ //Else if para validar se os digitos estão corretos
        printf("Erro quantidade de dígitos maior do que o esperado\n");
        printf("Digite novamente: ");
        goto cpf;
        }

    else{ //Else para validar se os digitos estão corretos, e se estiverem prossegue o cadastro
        strcpy(cliente.CPF_CNPJ,aux);
        }
        printf("Informe o número do CNH do cliente: ");
        cnh:
        fflush(stdin);
        gets(aux);
    if (strlen(aux) < 11){ //If para validar se os digitos estão corretos
        printf("Erro quantidade de dígitos menor do que o esperado\n");
        printf("Digite novamente: ");
        goto cnh;
        }

    else if (strlen(aux) > 11){ //Else if para validar se os digitos estão corretos
        printf("Erro quantidade de dígitos maior do que o esperado\n");
        printf("Digite novamente: ");
        goto cnh;
        }

    else{ //Else para validar se os digitos estão corretos, e se estiverem prossegue o cadastro
        strcpy(cliente.CNH,aux);//Strcpy transfere o valor de uma variável para outra(char)
        }
        printf("Informe o endereço do cliente: ");
        gets(cliente.Endereco);
        system("pause");//Faz o sistema esperar o usuário apertar uma tecla para voltar ao menu
        break;//´Para a execução do switch

    //Case 2 é para cadatrar os dados dos veículos
    case 2:
        le_um_carro(&info);//Chama a função para o cadastro dos veículos
        break;
        default: //Default é para, se alguma opção foi escolhida erroneamente, ele exibe uma mensagem
        printf("Opcao inesperada: %d\n", opcao);
        break;

     //Case 3 é para exibir o valor do estacionamento
    case 3:
    system("cls");//limpar a tela
int pagamento;//forma de pagamento
int tipo_serv;//tipo de serviço
  {
    printf("------------------------------------------\n");
    printf("\tTIPOS DE SERVICOS OFERECIDOS:\n");
    printf("------------------------------------------\n\n");
    printf("\n1- PLANO MENSAL =60R$ \n\n");
    printf("\n2- DIARIA =2,50R$ \n\n");
    printf("Escolha uma das duas opções para realizar o pagamento: ");
    scanf("%d", &tipo_serv);
switch(tipo_serv)
    {
case 1:
    system("cls");
    printf("SUA CONTA FICOU 60R$.\t");
    printf("Escolha o meio de pagamento: \n\n");
    printf("\n1- Credito\n");
    printf("\n2- Debito\n");
    printf("\n3- Em dinheiro\n\n");
    printf("Digite o numero equivalente a sua escolha: ");
    scanf("%d", &pagamento);
break;

case 2:
    system("cls");
    printf("SUA CONTA FICOU 2,50R$.\t");
    printf("Escolha o meio de pagamento: \n\n");
    printf("\n1- Credito\n");
    printf("\n2- Debito\n");
    printf("\n3- Em dinheiro\n\n");
    printf("Digite o numero equivalente a sua escolha: ");
    scanf("%d", &pagamento);
    }

}
    //Case 4 é para exibir o último carro cadastrado
    case 4:
        system("cls");
        mostra_um_carro(&info);
        system("pause");
        break;

    //Case 5 é para validar quantas vezes o cliente terá q usar o estacionamento para ter uma vinda de graça
    case 5:
        printf(" A cada 10 vindas ao estacionamento, você tem direito a vir 1 vez sem pagar.\n ");
        printf("Informe quantas vezes veio ao estacionamento:\n ");
        scanf("%d", &qntdvezes);
        if (qntdvezes < 10){
            virnovamente = 10 - qntdvezes;//Validar quantas vezes o cliente precisa vir para ter o estacionamento gratuito
            printf(" Você precisa vir mais %d vezes ao estacionamento.", virnovamente);
            }
        else {
            printf(" Parabéns, você tem uma ida ao estacionamento de graça.");
            }
        getch();
        break;
    //Case 6 é para o cliente sair do menu
    case 6:
        printf("Agradecemos a sua vinda e volte sempre!!");
        exit(1);//Sair do programa
        break;
        }
    }
}

    //le_um_carro serve para guardar as informações do case 2
    int le_um_carro(Carro* C)
    {
        system("cls");
        char aux[200];
        Carro info;
        printf("Informe o número da placa, como: xxx-xxxx [8 digitos]: ");
        placa:
        fflush(stdin);
        gets(aux);
        if (strlen(aux) < 8) {//If para validar se os digitos estão corretos
            printf("Erro quantidade de dígitos menor do que o correto\n");
            printf("Digite novamente: ");
            goto placa;
            }

        else if (strlen(aux) > 8) {//Else if para validar se os digitos estão corretos
            printf("Erro quantidade de dígitos maior do que o correto\n");
            printf("Digite novamente: ");
            goto placa;
            }

        else {//Else para validar se os digitos estão corretos, e se estiverem prossegue o cadastro
            strcpy(info.placa, aux);
            }
            printf("Informe a marca do veículo: ");
            gets(info.marca);
            printf("Informe o modelo do veículo: ");
            gets(info.modelo);
            printf("Informe a cor do veículo: ");
            gets(info.cor);
            printf("Informe o ano do veículo: ");
            gets(info.ano);
            *C = info;
        return 0;
};

    //mostra_um_carro serve para literalmente mostrar as informações do case 3
    int mostra_um_carro(Carro* c)
    {
        printf(" Marca/Modelo: %s %s\n Cor: %s\n Placa: %s\n Ano do Veículo: %s\n",
            c->marca,
            c->modelo,
            c->cor,
            c->placa,
            c->ano
            );
    return 0;
};

 

Postado
5 minutos atrás, herbertbahia disse:

é normal usar um switch dentro do outro, a questão é que você chamou a função getch da biblioteca conio veja

 


//Feito por Alex, Gabriel M e Pedro V.
//Feito por Alex, Gabriel M e Pedro V.

#define  _CRT_SECURE_NO_WARNINGS//Diz para o compilador que o programador não quer usar a versão segura das bibliotecas

#include <stdio.h>//Biblioteca padrão do C
#include <stdlib.h>//Biblioteca padrão do C
#include <string.h>//Possui comando para mehlor utilização de stirngs
#include <locale.h>//Biblioteca para reconhecer caracteres como "Ç"
#include <conio.h>//getch



    typedef struct //dados cadastrais do cliente
    {
        char nome[10];//Variável para nome
        int idade;//Variável para idade
        char CPF_CNPJ[20];//Variável para CPF/CNPJ
        char CNH[30];//Variável para CNH
        char Endereco[50];//Variável para endereço
    }   Cliente;//Atribui todas as variáveis para o Cliente

    typedef struct //dados cadastrais do veículo
{
        char placa[10];//Variável para placa do veículo
        char modelo[20];//Variável para modelo do veículo
        char marca[20];//Variável para marca do veículo
        char cor[20];//Variável para cor do veículo
        char ano[5];//Variável para ano do veículo
}       Carro;//Atribui todas as variáveis para o carro

    int le_um_carro(Carro*); //Informações do veículo
    int mostra_um_carro(Carro* c);//Informações do veículo para serem exibidas no programa

    int main(){
    char aux[200];
    Carro info;
    Cliente cliente;
    int opcao; //Variável para o Switch-Case
    int qntdvezes; //Variável que guardar quantas vezes o cliente veio ao estacionamento
    int virnovamente; //Variável que valida quantas vezes o cliente tem que vir para dar 10 idas ao estacionamento
    setlocale(LC_ALL, "Portuguese"); //Comando da biblioteca locale.h para reconhecer caracteres especiais

    while(1){
        //Menu para o cliente
        system("cls");
        printf("-----------------------------------------\n");
        printf("\tCONTROLE DE ESTACIONAMENTO\n");
        printf("-----------------------------------------\n\n");
        printf("1- Cadastrar Cliente\n");
        printf("\n2- Cadastrar Veículo\n");
        printf("\n3- Valor do estacionamento\n");
        printf("\n4- Listar  o último veículo cadastrado\n");
        printf("\n5- Créditos\n");
        printf("\n6- Sair\n");
        printf("\nOpcao: ");
        scanf("%d",&opcao);

    switch (opcao){//Switch para o cliente escolher

    //Case 1 é para guardar informações do cliente
    case 1:
        system("cls");//Limpa a tela
        printf("Informe o nome do cliente: ");//Printf para exibir uma mensagem na tela
        fflush(stdin);//Limpa o espaço de memória
        gets(cliente.nome);//Gets armazena TODOS os caracteres digitados
        printf("Informe a idade do cliente: ");
        scanf("%d", &cliente.idade);//Sacnf é para receber valores de váriaveis

        printf("Informe o CPF/CNPJ do cliente: ");
        cpf:
        fflush(stdin);
        gets(aux);
    if (strlen(aux) < 11){ //If para validar se os digitos estão corretos
        printf("Erro quantidade de dígitos menor do que o esperado\n");
        printf("Digite novamente: ");
        goto cpf;//O goto serve para tratar erros, se algum for indentificado, ele volta para o usuário digitar novamente
        }

    else if (strlen(aux) > 11){ //Else if para validar se os digitos estão corretos
        printf("Erro quantidade de dígitos maior do que o esperado\n");
        printf("Digite novamente: ");
        goto cpf;
        }

    else{ //Else para validar se os digitos estão corretos, e se estiverem prossegue o cadastro
        strcpy(cliente.CPF_CNPJ,aux);
        }
        printf("Informe o número do CNH do cliente: ");
        cnh:
        fflush(stdin);
        gets(aux);
    if (strlen(aux) < 11){ //If para validar se os digitos estão corretos
        printf("Erro quantidade de dígitos menor do que o esperado\n");
        printf("Digite novamente: ");
        goto cnh;
        }

    else if (strlen(aux) > 11){ //Else if para validar se os digitos estão corretos
        printf("Erro quantidade de dígitos maior do que o esperado\n");
        printf("Digite novamente: ");
        goto cnh;
        }

    else{ //Else para validar se os digitos estão corretos, e se estiverem prossegue o cadastro
        strcpy(cliente.CNH,aux);//Strcpy transfere o valor de uma variável para outra(char)
        }
        printf("Informe o endereço do cliente: ");
        gets(cliente.Endereco);
        system("pause");//Faz o sistema esperar o usuário apertar uma tecla para voltar ao menu
        break;//´Para a execução do switch

    //Case 2 é para cadatrar os dados dos veículos
    case 2:
        le_um_carro(&info);//Chama a função para o cadastro dos veículos
        break;
        default: //Default é para, se alguma opção foi escolhida erroneamente, ele exibe uma mensagem
        printf("Opcao inesperada: %d\n", opcao);
        break;

     //Case 3 é para exibir o valor do estacionamento
    case 3:
    system("cls");//limpar a tela
int pagamento;//forma de pagamento
int tipo_serv;//tipo de serviço
  {
    printf("------------------------------------------\n");
    printf("\tTIPOS DE SERVICOS OFERECIDOS:\n");
    printf("------------------------------------------\n\n");
    printf("\n1- PLANO MENSAL =60R$ \n\n");
    printf("\n2- DIARIA =2,50R$ \n\n");
    printf("Escolha uma das duas opções para realizar o pagamento: ");
    scanf("%d", &tipo_serv);
switch(tipo_serv)
    {
case 1:
    system("cls");
    printf("SUA CONTA FICOU 60R$.\t");
    printf("Escolha o meio de pagamento: \n\n");
    printf("\n1- Credito\n");
    printf("\n2- Debito\n");
    printf("\n3- Em dinheiro\n\n");
    printf("Digite o numero equivalente a sua escolha: ");
    scanf("%d", &pagamento);
break;

case 2:
    system("cls");
    printf("SUA CONTA FICOU 2,50R$.\t");
    printf("Escolha o meio de pagamento: \n\n");
    printf("\n1- Credito\n");
    printf("\n2- Debito\n");
    printf("\n3- Em dinheiro\n\n");
    printf("Digite o numero equivalente a sua escolha: ");
    scanf("%d", &pagamento);
    }

}
    //Case 4 é para exibir o último carro cadastrado
    case 4:
        system("cls");
        mostra_um_carro(&info);
        system("pause");
        break;

    //Case 5 é para validar quantas vezes o cliente terá q usar o estacionamento para ter uma vinda de graça
    case 5:
        printf(" A cada 10 vindas ao estacionamento, você tem direito a vir 1 vez sem pagar.\n ");
        printf("Informe quantas vezes veio ao estacionamento:\n ");
        scanf("%d", &qntdvezes);
        if (qntdvezes < 10){
            virnovamente = 10 - qntdvezes;//Validar quantas vezes o cliente precisa vir para ter o estacionamento gratuito
            printf(" Você precisa vir mais %d vezes ao estacionamento.", virnovamente);
            }
        else {
            printf(" Parabéns, você tem uma ida ao estacionamento de graça.");
            }
        getch();
        break;
    //Case 6 é para o cliente sair do menu
    case 6:
        printf("Agradecemos a sua vinda e volte sempre!!");
        exit(1);//Sair do programa
        break;
        }
    }
}

    //le_um_carro serve para guardar as informações do case 2
    int le_um_carro(Carro* C)
    {
        system("cls");
        char aux[200];
        Carro info;
        printf("Informe o número da placa, como: xxx-xxxx [8 digitos]: ");
        placa:
        fflush(stdin);
        gets(aux);
        if (strlen(aux) < 8) {//If para validar se os digitos estão corretos
            printf("Erro quantidade de dígitos menor do que o correto\n");
            printf("Digite novamente: ");
            goto placa;
            }

        else if (strlen(aux) > 8) {//Else if para validar se os digitos estão corretos
            printf("Erro quantidade de dígitos maior do que o correto\n");
            printf("Digite novamente: ");
            goto placa;
            }

        else {//Else para validar se os digitos estão corretos, e se estiverem prossegue o cadastro
            strcpy(info.placa, aux);
            }
            printf("Informe a marca do veículo: ");
            gets(info.marca);
            printf("Informe o modelo do veículo: ");
            gets(info.modelo);
            printf("Informe a cor do veículo: ");
            gets(info.cor);
            printf("Informe o ano do veículo: ");
            gets(info.ano);
            *C = info;
        return 0;
};

    //mostra_um_carro serve para literalmente mostrar as informações do case 3
    int mostra_um_carro(Carro* c)
    {
        printf(" Marca/Modelo: %s %s\n Cor: %s\n Placa: %s\n Ano do Veículo: %s\n",
            c->marca,
            c->modelo,
            c->cor,
            c->placa,
            c->ano
            );
    return 0;
};

 

Quando teclo pra sair da opção do valor do estacionamento ele já vai direto ao "Listar cliente" como faço pra voltar ao menu? Coloquei o system pause mas ainda não deu certo, ele já pulou direto pro listar cliente

 

  system("pause");//Faz o sistema esperar o usuário apertar uma tecla para voltar ao menu
        break;//´Para a execução do switch

Postado
6 minutos atrás, Def disse:

Quando teclo pra sair da opção do valor do estacionamento ele já vai direto ao "Listar cliente" como faço pra voltar ao menu? Coloquei o system pause mas ainda não deu certo, ele já pulou direto pro listar cliente

faltou um break;para o case 3 

uma linha antes do     case 4:

Postado
9 minutos atrás, herbertbahia disse:

faltou um break;para o case 3 

uma linha antes do     case 4:

Mas uma linha antes do case 4 é o 2, e eu coloquei o break; mas não deu

Postado
5 minutos atrás, Def disse:

Mas uma linha antes do case 4 é o 2, e eu coloquei o break; mas não deu

não, uma linha antes do break 4 é uma linha antes do brreak 4 ou famoso "final do break 3"

  • Amei 1
Postado
6 minutos atrás, herbertbahia disse:

não, uma linha antes do break 4 é uma linha antes do brreak 4 ou famoso "final do break 3"

Ahh entendi, deu certinho. Uma dúvida poderia me explicar como fez o "Listar cliente"? gostaria de adicionar a opção que o cliente digitou como forma de pagamento no listar o ultimo veiculo cadastrado pra informar o que tal pessoa escolheu como forma de pagamento

 

Postado
6 minutos atrás, Def disse:

Uma dúvida poderia me explicar como fez o "Listar cliente"?

eu não fiz.

 

9 minutos atrás, Def disse:

gostaria de adicionar a opção que o cliente digitou como forma de pagamento no listar o ultimo veiculo cadastrado pra informar o que tal pessoa escolheu como forma de pagamento

 a opção que você fez chamada  'Valor do estacionamento' é uma opção de pagamento  do cliente ? 

 

 

 

se voce vai cadastrar mais de um cliente vai precisar de um vetor..

 

olhe do ponto de vista do menu do software imagine que ele está sendo utilizado por uma grande empresa de segurança nesse momento, e isso não é uma piada.

 

 

 

Postado
4 minutos atrás, herbertbahia disse:

a opção que você fez chamada  'Valor do estacionamento' é uma opção de pagamento  do cliente ? 

 

 

 

se voce vai cadastrar mais de um cliente vai precisar de um vetor..

 

olhe do ponto de vista do menu do software imagine que ele está sendo utilizado por uma grande empresa de segurança nesse momento, e isso não é uma piada.

 

 

 

Isso seria uma opção de pagamento do cliente, mas acho que dava pra incluir na lista do ultimo veiculo cadastrado também, ou não? Ou será se deixo como está e finalizo o trabalho por aqui?

Postado
3 minutos atrás, Def disse:

Isso seria uma opção de pagamento do cliente, mas acho que dava pra incluir na lista do ultimo veiculo cadastrado também, ou não? Ou será se deixo como está e finalizo o trabalho por aqui?

cara se quer fazer isto você vai precisar mudar na estrututura,do cliente então voce pode simplesmente ter um cliente.formadepgmt

Postado
3 minutos atrás, herbertbahia disse:

cara se quer fazer isto você vai precisar mudar na estrututura,do cliente então voce pode simplesmente ter um cliente.formadepgmt

O que é isso?

Postado
19 horas atrás, arfneto disse:

Como te disse dias atrás, devia fazer o mais perto possível da realidade para ter mais facilidade e não tanto trabalho. 

Você apagou a estrutura que marcava o tempo ao invés de aumentar e colocar TAMBÉM a data de saída

 

é boa a ideia de colocar mais coisas da funcionalidade de um estacionamento no programa. Coisas tipo plano mensal, incentivo para usuário frequente e coisas assim. 👍

 

Mas perderam várias oportunidades de colocar recursos do mundo real dos estacionamentos:

  • criar uma estrutura para as vagas. É assim que funciona. O estacionamento tem  um número fixo de vagas. Criando uma estrutura, pode ser só um número,  você pode facinho criar um mapa de ocupação do lugar. trivial e mostra os carros que estão nas vagas e quando entraram. Pegaria bem pro seu sistema e é só uma lista
     
  • não ter a hora de saída e nem a de entrada (essa que você tirou) é fora da realidade. Estacionamento é isso: aluga espaço por períodos, e você não tem isso no seu modelo
     
  • criar uma estrutura de prisma. Mais realidade: o prisma é colocado no carro e associa o carro à vaga que você também não tem. Na hora de sair você gera uma ordem de saída com o prisma do carro e a vaga. E grita pro manobrista da vez:" prisma 34 na vaga 19B, vermelho"... Facinho de implementar
     
  • Gerar um recibo. Eu até te mostrei um modelo. De verdade. Basta copiar de algum estacionamento, como esse que mostrei
     
  • Implementar ler e salvar para arquivo a situação do lugar. Bem real. Porque pode ter carros que ficaram no pátio de um dia pro outro
     
  • Saldo instantâneo: quando tem pra receber dos carros que estão já no pátio
     
  • Relatórios financeiros: quando até hoje? Permanência média dos carros, índice de retorno, coisas assim. Trivial também

Mais notas :) 
 

O regime de mensalista é em geral um campo no cadastro de cliente

 

O acúmulo de bonus é um vetor no registro do carro ou do cliente e você só precisa marcar a presença. tipo 10 posições para o bonus a cada 10 estadias.

 

teria ganho muito escrevendo uma função de leitura, que você podia chamar para todas as leituras, deixando suas funções menores e sem tanto código duplicado que imagino que você tenha percebido...

	char* le_campo( char* campo, int tamanho, int opções);

E tire aqueles goto de lá. Muitos professores e empresas simplesmente não aceitam. Pode perder pontos

 

Postado
24 minutos atrás, Def disse:

O que é isso?

a estrtutura do cliente é esta


    typedef struct //dados cadastrais do cliente
    {
        char nome[10];//Variável para nome
        int idade;//Variável para idade
        char CPF_CNPJ[20];//Variável para CPF/CNPJ
        char CNH[30];//Variável para CNH
        char Endereco[50];//Variável para endereço
    }   Cliente;//Atribui todas as variáveis para o Cliente

 

adicionado 7 minutos depois

mas não vai ficar legal, o certo seria criar novas estrututuras, a ideia de @arfneto faria mais sentido, isso vai te da uma grande dor de cabeça

  • Obrigado 1
Postado

Ainda sobre isso, eu vou repetir o que eu disse acho que já no primeiro post sobre isso e em muitos outros nessa discussão: O sistema tem que refletir a realidade, ou na concepção inicial ou nos remendos a partir do início. 


Quanto melhor o modelo menos trabalho.

 

Carros tem donos e donos tem carros 

 

Vagas tem carros e carros tem vagas

 

Esse programa não tem os vínculos básicos. E mais cedo ou mais tarde eles vão faltar.

 

A estrutura de cliente deve ter um vetor para os carros do cliente

 

A estrutura do carro tem que ter um indicador para o dono do carro

 

O carro ao entrar ganha um prisma ou no minimo um numero de ticket

 

Em geral o carro na vaga tem um prisma associado

 

Em geral um campo int ID ou NSU já resolve. Hoje só se faz isso com bancos de dados, porque é mais fácil e barato (grátis)

 

 

  • Obrigado 1
Postado

@arfneto Eu já vou apresentar o trabalho então não dá mais tempo de alterar, mas agora vou buscar saber mais e treinar mais o codeblocks. Sabe algum pdf, ou algo bom que eu possa estudar? o @herbertbahia me mandou um e irei estudar por ele também, preciso aprender MUITA coisa ainda

adicionado 3 minutos depois

@arfneto vou estudar como se faz esse prismas e tudo o que eu não sei e tentarei fazer até ficar um projeto bem feito, queria agradecer muito a vocês @herbertbahia @arfneto @Mauro Britivaldo por ter se disponibilizado a me ajudar, sem vocês creio que isso não seria possível, me ajudaram com o trabalho e ainda me ensinaram. Muito obrigado, de verdade.

  • Obrigado 2
  • Amei 1
Postado
15 minutos atrás, Def disse:

como se faz esse prismas e tudo o que eu não sei

 

Prisma é aquele saco de areia com um número grande em cima e que tem um imã dentro. Ao chegar o carro num estacionamento que use isso o manobrista pega um desses e põe no teto do carro e sai com o carro pro pátio e estaciona. Aí vê a vaga em que deixou o carro -- em geral tem uma marca no chão e/ou na parede -- e marca no sistema vinculando prisma/vaga
 

No ticket do cliente tem o número do prisma e assim fica fácil ver de longe onde está o carro, já que o prisma fica no teto e a placa no chão :D Você pode comprar uns em https://prismaparaestacionamento.com.br/ 🤣 na minha cidade
 

prisma.png.4644da259e93da75268f310a861d442f.png

 

 

22 minutos atrás, Def disse:

agora vou buscar saber mais e treinar mais o codeblocks. Sabe algum pdf, ou algo bom que eu possa estudar

 

Não sou indicado para recomendar algo sobre o Code::Blocks ;) Apenas diria para desinstalar. É o IDE mais antigo e pobre que já tentei usar, isso apesar de que, depois de anos sem atualizações, ganhou uma versão nova esse ano. Problemático no mínimo.

 

Se posso ver alguma vantagem é a aparente simpatia que as escolas tem por esse troço. Nada mais.

 

"Follow the money" --- siga o dinheiro: em geral dá certo. Veja os produtos mais caros ou das companhias que tem mais dinheiro, como Oracle e Microsoft e JetBrains e provavelmente lá estarão os melhores produtos.

 

Para você ver a diferença: Com o Visual Studio da Microsoft eu, você, todos os caras de seu grupo,

@herbertbahia e @Mauro Britivaldo podíamos seguir o programa juntos, ao mesmo tempo, pela internet, seguindo até a navegação e o ponteiro do mouse enquanto quem estivesse controlando a sessão navegando pelo arquivos do programa.  Quem quisesse mostrar algo poderia pedir atenção. Com uma janela de chat ao lado. E a gente poderia propor e votar pelas alterações e incorporar ao programa quando você aceitasse. E você podia incluir até um total de 30 caras no grupo de revisão, todos vendo a mesma tela se fosse o caso. E salvando as versões e discutindo as alterações sem sair cada um de sua mesa.

 

Mecanismos de inteligência artificial incorporados automaticamente identificam padrões de código no projeto e propõe os ajustes, acrescentando uma estrelinha na opção que parece mais comum na lista de sugestões de parâmetros por exemplo

 

As versões vão automaticamente para o GitHub, que a empresa comprou também . O maior depósito de código do mundo, e agora de graça. Não dá pra competir.

 

Veja uma versão do seu programa mas algo que te mandei e um exemplo da saída, gravados lá com 1 clique, de graça, em https://github.com/ARFNeto-CH/ch-200623-estac

 

Eclipse é legal, Clion é legal. VS Code é muito bom. Dev-C++ é simples mas muito rápido. E tem editores que são muito muito bons, como Atom, Sublime Text e outros....

 

Bom que deu certo e que você não desistiu e deixou incompleto. Parabéns 🏆

 

 

 

 

  • Curtir 1
  • Obrigado 1
Postado

@arfneto uma ultima duvida que tava tendo aqui, para que usou esse *C no comando  "int mostra_um_carro(Carro* c)"

E para que usou esses %s %s em printf(" Marca/Modelo: %s %s\n Cor: %s\n Placa: %s\n Ano do Veículo: %s\n", ?

 

 

Postado
42 minutos atrás, arfneto disse:

Com o Visual Studio da Microsoft eu, você, todos os caras de seu grupo,

@herbertbahia e @Mauro Britivaldo podíamos seguir o programa juntos, ao mesmo tempo, pela internet, seguindo até a navegação e o ponteiro do mouse enquanto quem estivesse controlando a sessão navegando pelo arquivos do programa.  Quem quisesse mostrar algo poderia pedir atenção. Com uma janela de chat ao lado. E a gente poderia propor e votar pelas alterações e incorporar ao programa quando você aceitasse. E você podia incluir até um total de 30 caras no grupo de revisão, todos vendo a mesma tela se fosse o caso. E salvando as versões e discutindo as alterações sem sair cada um de sua mesa.

 

Mecanismos de inteligência artificial incorporados automaticamente identificam padrões de código no projeto e propõe os ajustes, acrescentando uma estrelinha na opção que parece mais comum na lista de sugestões de parâmetros por exemplo

😯

  • Curtir 1
Postado
19 minutos atrás, herbertbahia disse:

😯

image.png.624ae8d3867048fae5b97277380c715c.png

 

 

Esse link no canto superior direito funciona de certo modo como compartilhar o desktop no Skype, mas voltado ao projeto que está aberto. Um cara do grupo tem o controle de cada vez. Todos tem acesso ao chat e todos veem o cursor e o ponteiro do mouse e o que o controlador está fazendo. Mesmo quando ele muda de um arquivo para outro. Assim você pode pedir para alguém dar uma olhada no seu projeto e acompanhar o que ele está fazendo ao vivo. Até 30 pessoas, tipo uma sala de aula pequena. De graça.
 

adicionado 11 minutos depois
28 minutos atrás, Def disse:

uma ultima duvida que tava tendo aqui, para que usou esse *C no comando  "int mostra_um_carro(Carro* c)"

E para que usou esses %s %s em printf(" Marca/Modelo: %s %s\n Cor: %s\n Placa: %s\n Ano do Veículo: %s\n", ?

 

Colocar um nome de variável aí é opcional e não serve para nada. Mas iniciantes em geral ficam confusos quando não tem variáveis no protótipo e então eu quando me lembro coloco algo. c é o endereço de uma struct Carro e a função recebe isso e mostra na tela. Assim se sabe se sabe tudo que foi lido.


Pode e deve declarar 

int le_um_carro(Carro*);
int le_um_cliente(Cliente*);
int mostra_um_carro(Carro*);
int mostra_um_cliente(Cliente*);

Mas muitas vezes apenas por clareza se escreve algum valor ali, como:
 

int le_um_carro(Carro* UmCarro);
int le_um_cliente(Cliente* cliente);
int mostra_um_carro(Carro* x);
int mostra_um_cliente(Cliente* y);


Sobre os %s %s não entendi sua dúvida.


É um printf(). Cada %s é um parâmetro... Como usou em todo o seu programa...

 

Esse printf()

 

    printf("Marca/Modelo: %s %s Cor: %s Placa: %s Entrada: %s \n",
        c->marca,
        c->modelo,
        c->cor,
        c->placa,
        c->ano
    );

como te disse lá mostra

Marca/Modelo: Ford Taurus Cor: Azul Placa: ABC1212 Entrada: 2020

Se o cara digitou

Informe o numero da placa [7 digitos]: ABC1212
Informe a marca do veiculo: Ford
Informe o modelo do veiculo: Taurus
Informe a cor do veiculo: Azul
Informe o ano do veiculo: 2020

Naquele código de teste.

E assim você continua no programa seguro de que leu direito. E toda vez que quiser testar pode só chamar a função e não ficar repetindo código.

 

Postado

Melhor Editor do Mundo: Bloco de Notas

Inclusive para você @Def, é pouco produtivo para os profissionais, porém pra quem está aprendendo ou não é profissional é melhor do mundo

 

 

Faça login para comentar

Você vai ser capaz de deixar um comentário após fazer 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!