Ir ao conteúdo

Posts recomendados

Postado

@arfneto Ok, me mostra estou com dificuldade para achar essas linhas. Sim kkk to tentando terminar o programa desde ontem, mas ainda falta algumas coisas como mostrar quanto fica a diaria e a mensalidade do veiculo dentro do estabelecimento

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


	//dados cadastrais do veiculo
    struct cad_veiculo{
    char placa[10];
    int modelo;
    char marca[20];
    char cor[30];
    char ano[50];
    };
    int main(void){
    char aux[200];
    struct cad_veiculo info;
    int opcao;
    switch(opcao){
    case 2:
        system("cls");
    printf("Informe o numero da placa: ");
    placa:
    fflush(stdin);
    gets(aux);
    if (strlen(aux) < 7){
    printf("erro quantidade de digitos menor do que o correto\n");
    printf("Digite novamente: ");
    goto placa;
    break;
    }
    else if (strlen(aux) > 7){
    printf("erro quantidade de digitos maior do que o correto\n");
    printf("Digite novamente: ");
    goto placa;
    break;
    }
    else{
    strcpy(info.placa,aux);
    }
    printf("Informe o modelo do veiculo: ");
    modelo:
    fflush(stdin);
    gets(aux);
    if (strlen(aux) < 17){
    printf("erro quantidade de digitos menor do que o correto\n");
    printf("digite novamente: ");
    goto modelo;
    break;
    }
    else if (strlen(aux) > 17){
    printf("erro quantidade de digitos maior do que o correto\n");
    printf("digite novamente: ");
    goto modelo;
    break;
    }
    else{
    scanf("%s",info.modelo);
    }
    printf("Informe a marca do veiculo: ");
    gets(info.marca);
    system("pause");
    printf("Informe a cor do veiculo: ");
    gets(info.cor);
    system("pause");
    printf("Informe o ano do veiculo: ");
    gets(info.ano);
    system("pause");
    break;
    }

 

Postado

Você precisa

  • dar algum valor para opcao antes de entrar no switch().  na linha 18 coloque algum valor ou vai entrar no loop sem nunca ter lido nada.
  • voce mudou o modelo para int. Se está certo então deve mudar a linha 58 de acordo porque no scanf() continua usando %s
  • coloque a chave que falta lá no fim na linha 71, "};"

 

Postado

@arfneto Essa parte de dar algum valor para opcao, deveria ser: scanf("%d", &opcao); ?! e se for isso eu devo colocar isso antes do switch(opcao) para imprimir o codigo int?

 

ou colocar: scanf("%s", &opcao); já que na linha 58 estou usando o "scanf("%s",info.modelo);"??

Postado

 

image.png.fb2aafb32db33bf0b28139f97bbbab3f.png

 

Você devia ter incorporado aquilo que te expliquei antes, e te mostrei um exemplo, e as outras coisas que te disse sobre o programa.

 

Aqui na linha 17 você declara opção e não dá nenhum valor. E logo em seguida entra no switch() tomando uma decisão a partir de um valor desconhecido. É claro que está errado. Pode ser inofensivo ou pode cancelar seu programa.

 

Usar um int para codificar o modelo de um carro só faz sentido se tiver uma tabela de modelos, o que eu acho que você não tem. De todo modo se for assim deve trocar o %s por %d no scanf() e passar o endereço de um int.

 

image.png.a7fbe176bc0d4424363732ce340e3cf7.png

 

Um loop via goto dentro de um switch é perfeitamente possível, mas é uma construção bem problemática. É uma ideia ruim e só vai te dar problemas. Isso se não perder pontos por isso.

 

Compare com a ideia que te expliquei e te dei um exemplo, de usar algo assim:

typedef struct cad_veiculo Carro; // pra nao ficar repetindo

Carro* le_um_carro();

// ou mesmo

int    le_um_carro(Carro* carro);

E aí no menu pra tratar a opção 2 você simplesmente chama a função:

    info = *le_um_carro();
// ou
    res = le_um_carro(&info);

 

Postado

Não. Nada a ver. Acho que não leu o que te expliquei antes afinal. Em 

Isso era uma alternativa à essa opção folclórica e complicada que usou em todo o programa. Leia o que eu expliquei lá.

Seu programa não está bom. E por isso tem tanto trabalho.

 

Agora apenas coloque a chave que faltava. Espero que tenha entendido onde. E arrume o scanf() ou a declaração de modelo.

 

Postado
#include <stdio.h>
#include <stdlib.h>
#include <string.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){
    char aux[200];
    struct cad_cliente info;
    int opcao1, opcao2;
    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:
        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: ");
    cpf:
    fflush(stdin);
    gets(aux);
    if (strlen(aux) < 11){
    printf("erro quantidade de digitos menor do que o correto\n");
    printf("Digite novamente: ");
    goto cpf;

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

    }
    else{
    strcpy(info.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: ");
    goto cnh;

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

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

    printf("Informe o endereco do cliente: ");
    gets(info.Endereco);
    system("pause");
    break;
    }
    }
	}
//dados cadastrais do veiculo
    struct cad_veiculo{
    char placa[10];
    int modelo;
    char marca[20];
    char cor[30];
    char ano[50];
    };

    main(void);{
    char aux[300];
    struct cad_veiculo info;
    int opcao1, opcao2;
    switch(opcao){
    case 2:
        system("cls");
    printf("Informe o numero da placa: ");
    placa:
    fflush(stdin);
    gets(aux);
    if (strlen(aux) < 7){
    printf("erro quantidade de digitos menor do que o correto\n");
    printf("Digite novamente: ");
    goto placa;
    break;
    }
    else if (strlen(aux) > 7){
    printf("erro quantidade de digitos maior do que o correto\n");
    printf("Digite novamente: ");
    goto placa;
    break;
    }
    else{
    strcpy(info.placa,aux);
    }
    printf("Informe o modelo do veiculo: ");
    modelo:
    fflush(stdin);
    gets(aux);
    if (strlen(aux) < 17){
    printf("erro quantidade de digitos menor do que o correto\n");
    printf("digite novamente: ");
    goto modelo;
    break;
    }
    else if (strlen(aux) > 17){
    printf("erro quantidade de digitos maior do que o correto\n");
    printf("digite novamente: ");
    goto modelo;
    break;
    }
    else{
    scanf("%d", &info.modelo);
    }
    printf("Informe a marca do veiculo: ");
    gets(info.marca);
    system("pause");
    printf("Informe a cor do veiculo: ");
    gets(info.cor);
    system("pause");
    printf("Informe o ano do veiculo: ");
    gets(info.ano);
    system("pause");
    break;
    }
    };

@herbertbahia e @arfneto sinto que estou indo para o caminho certo agora, dei uma lida aqui em algumas pesquisas e crie o main(void); e adicionei o int opcao1,opcao 2

Mas não está compilando, ainda continua dando um erro, como eu teria que fazer? alguém pode me mostrar

Postado
1 hora atrás, Def disse:

dei uma lida aqui em algumas pesquisas e crie o main(void); e adicionei o int opcao1,opcao 2

Mas não está compilando, ainda continua dando um erro, como eu teria que fazer?

 

pesquisas? apenas precisava alterar as duas linhas

 

Sério?
 

image.png.9e8c07741d1b5d4e9b89bf0737241975.png

 

Você criou DUAS variáveis novas e continuou lendo a antiga? O que pesquisou que te fez mudar isso?
 

image.png.687499da2162a7e2e466f777960a39cf.pngimage.png.602a7b602f90c0f0e8039ff69c99d550.png

 

Seu programa tem duas funções main()

 

Como o sistema vai saber qual das duas chamar para iniciar o programa?

 

 

1 hora atrás, Def disse:

sinto que estou indo para o caminho certo agora, dei uma lida aqui em algumas pesquisas e crie o main(void);

 

Seu sentido não está refletido em seu programa. Está bem pior agora. O que leu? O que pesquisou? Qual a razão de criar outra função main()?

 

 

 

 

adicionado 8 minutos depois

E porque modelo é um int?

 

E porque cor tem 50 letras? 

 

Corrigindo o mais óbvio, assim compila: 

#define _CRT_SECURE_NO_WARNINGS

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

struct cad_cliente {
    char nome[10];
    int idade;
    char CPF_CNPJ[20];
    char CNH[30];
    char Endereco[50];
};

struct cad_veiculo {
    char placa[10];
    int modelo;
    char marca[20];
    char cor[30];
    char ano[50];
};

int main(void)
{
    char aux[300];
    struct cad_veiculo info;
    int opcao = 400;
    switch (opcao)
    {
    case 2:
        system("cls");
        printf("Informe o numero da placa: ");
    placa:
        fflush(stdin);
        fgets(aux, 300, stdin);
        if (strlen(aux) < 7) {
            printf("erro quantidade de digitos menor do que o correto\n");
            printf("Digite novamente: ");
            goto placa;
            break;
        }
        else if (strlen(aux) > 7) {
            printf("erro quantidade de digitos maior do que o correto\n");
            printf("Digite novamente: ");
            goto placa;
            break;
        }
        else {
            strcpy(info.placa, aux);
        }
        printf("Informe o modelo do veiculo: ");
    modelo:
        fflush(stdin);
        fgets(aux, 300, stdin);
        if (strlen(aux) < 17) {
            printf("erro quantidade de digitos menor do que o correto\n");
            printf("digite novamente: ");
            goto modelo;
            break;
        }
        else if (strlen(aux) > 17) {
            printf("erro quantidade de digitos maior do que o correto\n");
            printf("digite novamente: ");
            goto modelo;
            break;
        }
        else {
            scanf("%d", &info.modelo);
        }
        printf("Informe a marca do veiculo: ");
        fgets(info.marca, 20, stdin);
        system("pause");
        printf("Informe a cor do veiculo: ");
        fgets(info.cor, 30, stdin);
        system("pause");
        printf("Informe o ano do veiculo: ");
        fgets(info.ano, 50, stdin);
        system("pause");
        break;
    default:
        break;
    };  // switch()
};

 

Assim compila ao menos

Postado
6 horas atrás, arfneto disse:

 

pesquisas? apenas precisava alterar as duas linhas

 

Sério?
 

image.png.9e8c07741d1b5d4e9b89bf0737241975.png

 

Você criou DUAS variáveis novas e continuou lendo a antiga? O que pesquisou que te fez mudar isso?
 

image.png.687499da2162a7e2e466f777960a39cf.pngimage.png.602a7b602f90c0f0e8039ff69c99d550.png

 

Seu programa tem duas funções main()

 

Como o sistema vai saber qual das duas chamar para iniciar o programa?

 

 

 

Seu sentido não está refletido em seu programa. Está bem pior agora. O que leu? O que pesquisou? Qual a razão de criar outra função main()?

 

 

 

 

adicionado 8 minutos depois

E porque modelo é um int?

 

E porque cor tem 50 letras? 

 

Corrigindo o mais óbvio, assim compila: 


#define _CRT_SECURE_NO_WARNINGS

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

struct cad_cliente {
    char nome[10];
    int idade;
    char CPF_CNPJ[20];
    char CNH[30];
    char Endereco[50];
};

struct cad_veiculo {
    char placa[10];
    int modelo;
    char marca[20];
    char cor[30];
    char ano[50];
};

int main(void)
{
    char aux[300];
    struct cad_veiculo info;
    int opcao = 400;
    switch (opcao)
    {
    case 2:
        system("cls");
        printf("Informe o numero da placa: ");
    placa:
        fflush(stdin);
        fgets(aux, 300, stdin);
        if (strlen(aux) < 7) {
            printf("erro quantidade de digitos menor do que o correto\n");
            printf("Digite novamente: ");
            goto placa;
            break;
        }
        else if (strlen(aux) > 7) {
            printf("erro quantidade de digitos maior do que o correto\n");
            printf("Digite novamente: ");
            goto placa;
            break;
        }
        else {
            strcpy(info.placa, aux);
        }
        printf("Informe o modelo do veiculo: ");
    modelo:
        fflush(stdin);
        fgets(aux, 300, stdin);
        if (strlen(aux) < 17) {
            printf("erro quantidade de digitos menor do que o correto\n");
            printf("digite novamente: ");
            goto modelo;
            break;
        }
        else if (strlen(aux) > 17) {
            printf("erro quantidade de digitos maior do que o correto\n");
            printf("digite novamente: ");
            goto modelo;
            break;
        }
        else {
            scanf("%d", &info.modelo);
        }
        printf("Informe a marca do veiculo: ");
        fgets(info.marca, 20, stdin);
        system("pause");
        printf("Informe a cor do veiculo: ");
        fgets(info.cor, 30, stdin);
        system("pause");
        printf("Informe o ano do veiculo: ");
        fgets(info.ano, 50, stdin);
        system("pause");
        break;
    default:
        break;
    };  // switch()
};

 

Assim compila ao menos

process.thumb.png.88233c6f027be9ed0dc05de8846a2172.png

Mas desse jeito não compila, eu pesquisei porque tava dando um erro falando que eu precisava declarar a opcao, ai tentei colocar opcao1,opcao2 pra identificar mas desse jeito não deu certo. Quando não da erro nem chega a compilar fica desse jeito no compilador process returned 0

Postado
16 minutos atrás, Def disse:

Mas desse jeito não compila, eu pesquisei porque tava dando um erro falando que eu precisava declarar a opcao, ai tentei colocar opcao1,opcao2 pra identificar mas desse jeito não deu certo. Quando não da erro nem chega a compilar fica desse jeito no compilador process returned 0

 

Notou que ele rodou seu programa? Isso quer dizer que compilou, gerou um programa e mandou executar

Não respondeu a nada do que eu perguntei

adicionado 1 minuto depois
17 minutos atrás, Def disse:

eu pesquisei porque tava dando um erro

 

Que significa? Pesquisou o que? E o que achou? O que fez você declara opcao1 e opcao2 e continuar usando opcao para ler em scanf()?

Postado

conseguiu ler alguma coisa no pdf ?  pelo print parece que compilou, acho que nao entrou no switch, sobre adicionar outra variavel inteira talvez a sua intenção tenha sido adicionar uma variavel auxiliar inteira nao entendir bem.

Postado

@arfneto Ele compilou, mas não gerou nenhuma das informações que apliquei. Era pra ta aparecendo as 2 opção que fiz de cadastrar cliente e cadastrar veiculo, mas deu apenas Process Returned 0 

 

Lembra que tava dando erro na linha da opcao? eu fui pesquisar o que poderia ser, se faltava eu adicionar algo a mais e encontrei um site com um exemplo e então decidi testar, no exemplo estava

 

#include int main() { int n1, n2, n3; printf(‘‘Entre com um numero inteiro: ") e ai eu pensei que podia declarar int opções 

adicionado 1 minuto depois

@Mauro Britivaldo esse aqui 

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


	//dados cadastrais do veiculo
    struct cad_veiculo{
    char placa[10];
    int modelo;
    char marca[20];
    char cor[30];
    char ano[50];
    };
    int main(void){
    char aux[200];
    struct cad_veiculo info;
    int opcao;
    switch(opcao){
    case 2:
        system("cls");
    printf("Informe o numero da placa: ");
    placa:
    fflush(stdin);
    gets(aux);
    if (strlen(aux) < 7){
    printf("erro quantidade de digitos menor do que o correto\n");
    printf("Digite novamente: ");
    goto placa;
    break;
    }
    else if (strlen(aux) > 7){
    printf("erro quantidade de digitos maior do que o correto\n");
    printf("Digite novamente: ");
    goto placa;
    break;
    }
    else{
    strcpy(info.placa,aux);
    }
    printf("Informe o modelo do veiculo: ");
    modelo:
    fflush(stdin);
    gets(aux);
    if (strlen(aux) < 17){
    printf("erro quantidade de digitos menor do que o correto\n");
    printf("digite novamente: ");
    goto modelo;
    break;
    }
    else if (strlen(aux) > 17){
    printf("erro quantidade de digitos maior do que o correto\n");
    printf("digite novamente: ");
    goto modelo;
    break;
    }
    else{
    scanf("%s",info.modelo);
    }
    printf("Informe a marca do veiculo: ");
    gets(info.marca);
    system("pause");
    printf("Informe a cor do veiculo: ");
    gets(info.cor);
    system("pause");
    printf("Informe o ano do veiculo: ");
    gets(info.ano);
    system("pause");
    break;
    }
 

 

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

Ele compilou, mas não gerou nenhuma das informações que apliquei. Era pra ta aparecendo as 2 opção que fiz de cadastrar cliente e cadastrar veiculo, mas deu apenas Process Returned 0 

 

Lembra que tava dando erro na linha da opcao? eu fui pesquisar o que poderia ser, se faltava eu adicionar algo a mais e encontrei um site com um exemplo e então decidi testar, no exemplo estava

 

#include int main() { int n1, n2, n3; printf(‘‘Entre com um numero inteiro: ") e ai eu pensei que podia declarar int opções

 

O programa SEMPRE compila.

 

Você quer dizer que ele, o IDE, gerou um programa e executou e retornou sem fazer nada aparente.

 

Não entendo a lógica do que fez. Que argumento usou pra pesquisar? Já tinha até uma nota com os números das linhas e o que precisava alterar no código. Para compilar. E uma noção do que estava errado.... Tentando usar uma variável não inicializada como argumento em um switch().

 

Você continua usando modelo como int e lendo com %s? Até quando? E porque acha que modelo de um carro num programa de estacionamento pode ser um int? Porque não fez como recomendado em relação a isso?

Postado

@herbertbahia ontem dei algumas lidas mas vou me aprofundar mais no pdf quando acabar esse trabalho pois preciso entregar ele amanhã então fica meio complicado de ver tudo agora porque estou na correria, mas pode ter certeza que vou estudar ele, preciso muito disso.

 

Ele até compilou mas não gerou nada do que fiz em C, pois não apareceu o menu e nem as opções 1 e 2. Acho que vou tentar dessa forma que aparentemente está mais certo só que ainda está faltando algumas coisas só não to sabendo o que falta direitinho tipo, a  chave que vou usar sabe

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


	//dados cadastrais do veiculo
    struct cad_veiculo{
    char placa[10];
    int modelo;
    char marca[20];
    char cor[30];
    char ano[50];
    };
    int main(void){
    char aux[200];
    struct cad_veiculo info;
    int opcao;
    switch(opcao){
    case 2:
        system("cls");
    printf("Informe o numero da placa: ");
    placa:
    fflush(stdin);
    gets(aux);
    if (strlen(aux) < 7){
    printf("erro quantidade de digitos menor do que o correto\n");
    printf("Digite novamente: ");
    goto placa;
    break;
    }
    else if (strlen(aux) > 7){
    printf("erro quantidade de digitos maior do que o correto\n");
    printf("Digite novamente: ");
    goto placa;
    break;
    }
    else{
    strcpy(info.placa,aux);
    }
    printf("Informe o modelo do veiculo: ");
    modelo:
    fflush(stdin);
    gets(aux);
    if (strlen(aux) < 17){
    printf("erro quantidade de digitos menor do que o correto\n");
    printf("digite novamente: ");
    goto modelo;
    break;
    }
    else if (strlen(aux) > 17){
    printf("erro quantidade de digitos maior do que o correto\n");
    printf("digite novamente: ");
    goto modelo;
    break;
    }
    else{
    scanf("%d", &info.modelo);
    }
    printf("Informe a marca do veiculo: ");
    gets(info.marca);
    system("pause");
    printf("Informe a cor do veiculo: ");
    gets(info.cor);
    system("pause");
    printf("Informe o ano do veiculo: ");
    gets(info.ano);
    system("pause");
    break;
    }
 

Esse segue a mesma estrutura do cadastro do cliente, só muda algumas coisas. Porém como deu super certo com o cadastro do cliente achei que daria com o do veiculo também

adicionado 3 minutos depois

@arfneto vou tentar fazer como tinha te mandado da primeira vez, você disse que tava indo certo só que faltava colocar algumas chaves em algumas linhas né? 

Então eu não coloquei essas chaves porque não soube identificar quais chaves eu tinha que colocar em tal linha

@arfneto você também disse que eu tinha que dar um valor a opção, mas como eu faço isso? 

Achei que seria como:

int opcao1,opcao 2

scanf(%d, opcao)

switch(opcao){
    case 2:

 

 

Quanto o int modelo, acha que eu deveria mudar? eu não sei muito bem onde usar int, usei int em modelo porque foi onde achei mais adequado, e lá embaixo deixei "scanf("%d", &info.modelo);"

Postado
5 minutos atrás, Def disse:

vou tentar fazer como tinha te mandado da primeira vez, você disse que tava indo certo só que faltava colocar algumas chaves em algumas linhas né? 

 

Eu te disse exatamente onde estava faltando, com o número da linha e tudo. E depois postei até o programa corrigido...

 

6 minutos atrás, Def disse:

Então eu não coloquei essas chaves porque não soube identificar quais chaves eu tinha que colocar em tal linha

 

Eu te disse como identificar e te mostrei 3 desenhos com a sequência do que tinha que fazer

 

7 minutos atrás, Def disse:

Quanto o int modelo, acha que eu deveria mudar? eu não sei muito bem onde usar int, usei int em modelo porque foi onde achei mais adequado, e lá embaixo deixei "scanf("%d", &info.modelo);"

 

A noção de adequação vem da sua lógica.

Mas um modelo de carro geralmente é algo assim: "Corolla", "Camry", "Tundra", "Yaris" só pra ficar na mesma marca.

 

Modelo em geral não é 1245, 12, 128, -234...

 

Eu te disse dias atrás como fazer isso e te mostrei um exemplo rodando, naquela função mostra_um_carro(). Aquele é o caminho.

 

Como eu antecipei na ocasião, está tendo muito trabalho por seguir esse outro caminho com tantas pesquisas...

 

 

Postado

@arfneto mas ai eu teria que colocar modelos?

eu queria que tipo:

A pessoa quando chegasse na opção "informe o modelo do veiculo: ") ela pudesse informar qualquer modelo que ela quisesse, como você disse se eu for colocar nome de modelos já pronto ficará na mesma marca, e eu só poderei informar esses modelos que eu coloquei no programador certo?

 

Ok vou tentar fazer do seu jeito, espero que dê certo, eu uso aquele modelo que você me enviou que você disse que corrigiu ou eu começo pelo que já havia te mandado?  

 

Postado
15 minutos atrás, Def disse:

char cor[30];
char ano[50];

 

Já te falei sobre isso, mas a menos que pretenda descrever a cor em detalhes e o ano por extenso pra que a cor tem 30 letras e o ano 50? O ano bem que podia esse sim ser int não acha? Escrever info.ano = 2019; é mais normal que info.modelo = 32;

 

 

Postado

@arfneto vou ser bem sincero, não sei bem onde coloca int ou quando coloco char porque sou iniciante no curso de programação e não tive muitas aulas devido a pandemia, isso do int e char realmente me deixa confuso quando usar e com o que usar. Poderia me explicar? se puder dar algum exemplo já me ajudaria muito

Postado
18 minutos atrás, Def disse:

int opcao;
switch(opcao)
{
case 2:
 

...

 

E você de novo está entrando no tal switch() para testar o valor de opcao sem ter lido ou ter colocado algum valor conhecido lá...

 

O único valor de opcao que você trata é 2.
 

E acha estranho que seu programa passe reto pelo código? Sério?

Experimente ao menos colocar

int opcao=2; 

Seu programa está muito ruim. E esse erro aí está de volta por não sei quantas vezes. 

 

Existe uma razão para cada linha de código. Uma sequência. Você declara a tal opção. Aí o cara digita um valor depois de ler um menu que oferece as opções. E aí o programa age de acordo com a opção.

 

Você sabia que o switch() tem uma opção "default" que você sempre deve declarar, e é pra onde o programa vai quando não tem um case: para o valor da variável?

Tipo a sua opcao? 

 

Interessante que eu coloquei isso no seu programa e você apagou...

 

Direto do tópico #86:

 

image.png.49f0970a3db061d7f821727b10abe594.png

 

Se não tivesse tirado aquilo...

Postado
15 minutos atrás, arfneto disse:

Mas um modelo de carro geralmente é algo assim: "Corolla", "Camry", "Tundra", "Yaris" só pra ficar na mesma marca.

 

Modelo em geral não é 1245, 12, 128, -234...

 

Eu te disse dias atrás como fazer isso e te mostrei um exemplo rodando, naquela função mostra_um_carro(). Aquele é o caminho.

 

3 minutos atrás, Def disse:

se puder dar algum exemplo já me ajudaria muito

 

Aquilo acima era um exemplo.

 

E o programa que te mandei dias atras tinha tudo isso explicado. Era um exemplo e rodava... Que fez com aquilo? 

const Carro carro2 = {
    "azul",
    "12:11:10",
    "DBS",
    "Aston Martin",
    "ABC-4325",
    2
};

Era um exemplo disso


typedef struct
{
    char    cor[10];
    struct Tempo entrada;
    char    modelo[20];
    char    marca[20];
    char    placa[10];
    int     status;
}   Carro;

Chegou a ler?

E o program que vinha junto? 

Postado

@arfneto aquele programa do topico que havia mandado aqui era de um colega do meu grupo, ele fez aquilo tudo ou simplesmente pegou da internet e me enviou pra eu colocar meu codigo de cadastrar o cliente, ai eu adicionei mas ficou tão bagunçado aquilo que eu decidi fazer tudo do zero. Por isso nem utilizei nada daquilo

  • Curtir 1
Postado
agora, Def disse:

aquele programa do topico que havia mandado aqui era de um colega do meu grupo, ele fez aquilo tudo ou simplesmente pegou da internet e me enviou pra eu colocar meu codigo de cadastrar o cliente, ai eu adicionei mas ficou tão bagunçado aquilo que eu decidi fazer tudo do zero. Por isso nem utilizei nada daquilo

 

Naturalmente estou falando do programa que EU escrevi e mandei pra você. E cujos trechos estão aí acima.

 

Você entendeu isso?

Não deve prosseguir sem entender as cosias. Eu te mandei uma programa que funcionava e uma série de recomendações.

Postado

@arfneto  Aquilo que você escreveu vou tentar complementar dentro disso daqui a pouco porque preciso que apareça primeiro as opções no compilador. Acho que já sei mais uma coisa que estou fazendo de errado, eu criei o cadastro do cliente e fechei o programa pra fazer separado pra ver se facilitaria e então abri outro arquivo main pra começar o do veiculo mas ai está sem o menu: ou seja, tenho que continuar o cad_veiculo em seguida do cad_cliente

 

adicionado 1 minuto depois
4 minutos atrás, Def disse:

@arfneto  Aquilo que você escreveu vou tentar complementar dentro disso daqui a pouco porque preciso que apareça primeiro as opções no compilador. Acho que já sei mais uma coisa que estou fazendo de errado, eu criei o cadastro do cliente e fechei o programa pra fazer separado pra ver se facilitaria e então abri outro arquivo main pra começar o do veiculo mas ai está sem o menu: ou seja, tenho que continuar o cad_veiculo em seguida do cad_cliente

 

Sei que ainda falta algumas mas so quero te mostrar como fica junto com o menu do cad_cliente

#include <stdio.h>
#include <stdlib.h>
#include <string.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){
    char aux[200];
    struct cad_cliente info;
    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:
        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: ");
    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(info.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(info.CNH,aux);
    }

    printf("Informe o endereco do cliente: ");
    gets(info.Endereco);
    system("pause");
    break;
    }
    }
	}

struct cad_veiculo {
    char placa[10];
    int modelo;
    char marca[20];
    char cor[30];
    char ano[50];
};

{
    char aux[300];
    struct cad_veiculo info;
    int opcao = 400;
    switch (opcao)
    {
    case 2:
        system("cls");
        printf("Informe o numero da placa: ");
    placa:
        fflush(stdin);
        fgets(aux, 300, stdin);
        if (strlen(aux) < 7) {
            printf("erro quantidade de digitos menor do que o correto\n");
            printf("Digite novamente: ");
            goto placa;
            break;
        }
        else if (strlen(aux) > 7) {
            printf("erro quantidade de digitos maior do que o correto\n");
            printf("Digite novamente: ");
            goto placa;
            break;
        }
        else {
            strcpy(info.placa, aux);
        }
        printf("Informe o modelo do veiculo: ");
    modelo:
        fflush(stdin);
        fgets(aux, 300, stdin);
        if (strlen(aux) < 17) {
            printf("erro quantidade de digitos menor do que o correto\n");
            printf("digite novamente: ");
            goto modelo;
            break;
        }
        else if (strlen(aux) > 17) {
            printf("erro quantidade de digitos maior do que o correto\n");
            printf("digite novamente: ");
            goto modelo;
            break;
        }
        else {
            scanf("%d", &info.modelo);
        }
        printf("Informe a marca do veiculo: ");
        fgets(info.marca, 20, stdin);
        system("pause");
        printf("Informe a cor do veiculo: ");
        fgets(info.cor, 30, stdin);
        system("pause");
        printf("Informe o ano do veiculo: ");
        fgets(info.ano, 50, stdin);
        system("pause");
        break;
    default:
        break;
    };  // switch()
};

 

adicionado 2 minutos depois
4 minutos atrás, Def disse:

@arfneto  Aquilo que você escreveu vou tentar complementar dentro disso daqui a pouco porque preciso que apareça primeiro as opções no compilador. Acho que já sei mais uma coisa que estou fazendo de errado, eu criei o cadastro do cliente e fechei o programa pra fazer separado pra ver se facilitaria e então abri outro arquivo main pra começar o do veiculo mas ai está sem o menu: ou seja, tenho que continuar o cad_veiculo em seguida do cad_cliente

 

Sei que ainda falta algumas mas so quero te mostrar como fica junto com o menu do cad_cliente

 

Vou falar o que acho que está errado nisso e você diz se estou errado ou não ok?

Acho que esse switch case 2 deveria estar junto com a switch case inicial lá do inicio certo?

@arfneto @herbertbahia

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