Ir ao conteúdo

Eli Almeida

Membro Pleno
  • Posts

    166
  • Cadastrado em

  • Última visita

Tudo que Eli Almeida postou

  1. @arfneto , como grava em arquivo nesse caso?
  2. @arfneto , estou um pouco com dificuldade para entender o que você está falando porque não estudei bem vetores, matrizes ,ponteiro, estrutura de repetição e nem em como salvar em arquivo. Estava estudando portugol e nem terminei de concluir ainda . Se você pudesse explicar de uma maneira mais clara e fácil de entender. @arfneto , coloquei "FrotaLocador" porque a capacidade de veículos que podem ser alugados são vinte , então teria de ser vinte locadores também . Mas estou tentando achar a lógica aí.
  3. @arfneto , tô tentando fazer desse jeito seguindo o que você já estava fazendo, mas não sei se está correto e também tem a parte de locar veículo e os contratos ativos que não sei direito como criar. Como colocaria os preços da diária aqui? #include<stdio.h> #include<locale.h> typedef struct { char nome [50]; char endereco [100]; char cpf [15]; char telefone [15]; } Locador; typedef struct { char marca [100]; char modelo [50]; unsigned ano; char cor [50]; char placa [8]; } Veiculo; typedef struct { unsigned cap; // capacidade unsigned size; // o nome consagrado para o tamanho Veiculo v[20]; // tanto faz, mais de 2 } Frota; typedef struct { unsigned cap; // capacidade unsigned size; // o nome consagrado para o tamanho Locador v[20]; } Frotalocador; int lista_locador (Locador* l) { if (l == NULL) return -1; printf("%s %s %s %s\n ", l->nome, l->endereco, l->cpf, l->telefone ); return 0; } int lista_frotap (Frotalocador* p) { if (p == NULL) return -1; printf( "A frota tem %d de %d locadores\n", p->size, p->cap); for (int i = 0; i < p->size; i += 1) lista_locador(&p->v[i]); return 0; } void cadastrar_locador (Frotalocador*p ) { if (p == NULL) return; if (p->size >= p->cap) { printf("A frota está cheia, não é possível cadastrar mais locadores.\n"); return; } Locador novo_locador; printf("Informe o seu nome: "); fgets(novo_locador.nome, 50, stdin); printf("Informe o seu endereço: "); fgets(novo_locador.endereco, 100, stdin); printf("Informe o seu CPF: "); fgets(novo_locador.cpf, 15, stdin); printf("Informe o seu telefone: "); fgets(novo_locador.telefone, 15, stdin); p->v[p->size] = novo_locador; p->size += 1; printf("locador cadastrado com sucesso!\n"); } void cadastrar_veiculo(Frota* frota) { if (frota == NULL) return; if (frota->size >= frota->cap) { printf("A frota está cheia, não é possível cadastrar mais veículos.\n"); return; } Veiculo novo_veiculo; printf("Digite a marca do veículo: "); scanf("%s", novo_veiculo.marca); printf("Digite o modelo do veículo: "); scanf("%s", novo_veiculo.modelo); printf("Digite o ano do veículo: "); scanf("%u", &novo_veiculo.ano); printf("Digite a cor do veículo: "); scanf("%s", novo_veiculo.cor); printf("Digite a placa do veículo: "); scanf("%s", novo_veiculo.placa); frota->v[frota->size] = novo_veiculo; frota->size += 1; printf("Veículo cadastrado com sucesso!\n"); } int lista_carro(Veiculo* c) { if (c == NULL) return -1; printf("%s %s %d %s %s\n ", c->marca, c->modelo, c->ano, c->cor, c->placa ); return 0; } // lista_carro é uma função , essa função tem um ponteiro // que aponta para os elementos da struct Veiculos. // então essa função imprime as características de cada veiculo utilizando ponteiros. int lista_frota(Frota* frota) { if (frota == NULL) return -1; printf( "A frota tem %d de %d carros\n", frota->size, frota->cap); for (int i = 0; i < frota->size; i += 1) lista_carro(&frota->v[i]); return 0; // o "&" é usado para obter o endereço de memória do elemento "i" do vetor de veículos "v" da estrutura "frota" } // lista_frota é responsável por armazenar a capacidade de veiculos que a locadora pode alugar cap // e a quantidade de carros já cadastrados size. Ela também imprime as características de todos os veículos já cadastrados. int main(void) { setlocale (LC_ALL,"Portuguese") ; Frota frota = { .cap = 20, .size = 3, .v[0] = {" Ford", "Mustang", 2019, "Prata", "ABC4D01"}, .v[1] = {" Aston Martin", "DBS", 2017, "Prata", "ABC4D02"}, .v[2] = { " Cadillac", "Escalade ", 2023, "Vermelho", "ABC4D03"}, .v[3] = {" Ford", "Mustang", 2019, "Prata", "ABC4D06"}, }; Frotalocador locadorp = { .cap = 20, .size = 1, .v[0] = { "João", "Jj.seabra", "xxxxxxxx","075xxxx" }, // esse campo aqui coloquei "x" porque o cpf é um dado pessoal e o número também. }; int opcao = 0; while (opcao != 7) { printf("\n------- MENU --------\n"); printf("Escolha uma opção:\n"); printf("1 - Cadastrar Veículo\n"); printf("2 - Cadastrar Locador (Usuario)\n"); printf("3 - Listar Veículos\n"); printf("4 - Listar Locadores\n"); printf("5 - Contratos ativos\n"); printf("6 - Locar Veículo\n"); printf("7 - Sair\n"); scanf("%d", &opcao); switch (opcao) { case 1: cadastrar_veiculo(&frota); break; case 2: cadastrar_locador(&locadorp); break; case 3: lista_frota(&frota); break; case 4: lista_frotap(&locadorp); break; case 5: printf ("//cadastrar_veiculo(&frota"); break; case 6: break; case 7: printf("Saindo...\n"); break; default: printf("Opção inválida!\n"); break; } } return 0; }
  4. @arfneto , dá uma ajuda aí, o que tem fazer em seguida ? Criar um menu já e uma estrutura de repetição e logo em seguida uma estrutura condicional para esse menu?
  5. @arfneto , tem que criar uma frota separada para contratos também ? ainda não compreendi direito o que é frota e para que serve nesse programa. Também tem outra questão o que significa esses três carros que você colocou no programa que já vai cadastrado. O usuário novo pode escolher eles para alugar ?
  6. @arfneto , será que dessa forma está certo ? como colocar os "contratos ativos" e "locar" ? #include<locale.h> #include<stdio.h> typedef struct { char nome[50]; char endereco[100]; char cpf[12]; char telefone[12]; } Locador; typedef struct { char marca[50]; char modelo[50]; unsigned ano; char cor[50]; char placa[8]; float diaria; } Veiculo; typedef struct { unsigned cap; // capacidade unsigned size; // o nome consagrado para o tamanho Veiculo v[20]; // tanto faz, mais de 2 Locador loc[20]; } Frota; void cadastrar_locador(Frota* frota); void cadastrar_veiculo(Frota* frota); int lista_carro(Veiculo* carro); int lista_frota(Frota* frota); void lista_locadores(Frota* frota); int main(void) { Frota teste = { .cap = 20, .size = 3, .v[0] = {"Ford", "Mustang", 2019, "Prata", "ABC4D01",350}, .v[1] = {"Aston Martin", "DBS", 2017, "Prata", "ABC4D02",250}, .v[2] = {"Cadillac", "Escalade V ESV", 2023, "Vermelho", "ABC4D03",450}, }; //Menu de opções setlocale (LC_ALL,"Portuguese"); int opcao = 0; while (opcao != 7) { printf ("\n"); printf ("\n"); printf ("\t------- MENU --------\n") ; printf("Escolha uma opção:\n"); printf("1 - Cadastrar Veículo\n"); printf("2 - Cadastrar Locador (Usuario)\n"); printf("3 - Listar Veículos\n"); printf("4 - Listar Locadores\n"); printf("5 - Contratos ativos\n"); printf("6 - Locar Veículo \n"); printf("7 - Sair\n"); scanf("%d", &opcao); if (opcao == 1) { cadastrar_veiculo(&teste); } else if (opcao == 2) { cadastrar_locador(&teste); } else if (opcao == 3) { lista_frota(&teste); } else if (opcao == 4) { lista_locadores(&teste); } else if (opcao == 5) { printf("Co"); } else if (opcao == 6) { printf("Locar Veículo"); } else if (opcao == 7) { printf ("Encerrando."); } else { printf("Opção inválida.\n"); } } return 0; } void cadastrar_veiculo(Frota* frota) { if (frota == NULL) return; // verifica se o ponteiro "frota" é nulo. if (frota->size >= frota->cap) { printf("A frota está cheia.\n"); return; } Veiculo novo; printf("Marca: "); scanf("%s", novo.marca); printf("Modelo: "); scanf("%s", novo.modelo); printf("Ano: "); scanf("%u", &novo.ano); printf("Cor: "); scanf("%s", novo.cor); printf("Placa: "); scanf("%s", novo.placa); printf("Diária: "); scanf("%f", &novo.diaria); frota->v[frota->size] = novo; frota->size += 1; printf("Veículo cadastrado com sucesso.\n"); } void cadastrar_locador(Frota* frota) { if (frota == NULL) return -1 ; // verifica se o ponteiro "frota" é nulo. if (frota->size >= frota->cap) { printf("A frota está cheia.\n"); return; } Locador novo; printf("Nome:\n "); fflush(stdin); // limpa o buffer de entrada fgets(novo.nome, 50, stdin); printf("Endereco:\n "); fflush(stdin); // limpa o buffer de entrada fgets(novo.endereco, 100, stdin); printf("CPF: "); fflush(stdin); // limpa o buffer de entrada fgets(novo.cpf, 12, stdin); printf("Telefone:\n "); fflush(stdin); // limpa o buffer de entrada fgets(novo.telefone, 12, stdin); frota->loc[frota->size] = novo; frota->size += 1; printf("Locador cadastrado com sucesso.\n"); } void lista_locadores(Frota* frota) { if (frota == NULL) return -1; printf("Lista de locadores:\n"); for (int i = 0; i < frota->size; i++) { printf("Nome: %s\n", frota->loc[i].nome); printf("Endereco: %s\n", frota->loc[i].endereco); printf("CPF: %s\n", frota->loc[i].cpf); printf("Telefone: %s\n", frota->loc[i].telefone); printf("\n"); } } int lista_carro(Veiculo* c) { if (c == NULL) return -1; printf("\t%s %s\t%d\t%.2f\n", c->marca, c->modelo, c->ano,c->diaria); return 0; } int lista_frota(Frota* frota) { if (frota == NULL) return -1; printf( "A frota tem %d de %d carros\n", frota->size, frota->cap); for (int i = 0; i < frota->size; i += 1) lista_carro(&frota->v[i]); return 0; }
  7. @arfneto , agora eu conseguir compilar. No caso , eu preciso terminar de preencher os carros , colocando a marca, modelo, ano, cor e placa até 20 ? e as motos como fica ? Já que é uma locadora de carros e motos .
  8. @arfneto , ainda estou tentando entender o que você está explicando , não cheguei a estudar ponteiros ainda. Já vi matrizes, vetores, funções e outras coisas , mas não me aprofundei nem no que estudei ainda. Estava tentando compilar seu código para estudar e ver como funciona, mas não estou conseguindo. Se você puder montar ele para compilar, seria bom para eu ver na prática como funciona a execução. Só tenho hoje para terminar esse trabalho.
  9. @arfneto , o que significa isso int lista_carro(Veiculo* carro); int lista_frota(Frota* frota); ? É uma uma função com ponteiros ? Porque colocou "Veiculo*" e "carro" ?
  10. @arfneto , tentei compilar e executar o seu código, mas não compila. Está dando erro. Estou usando o Dev C++. Erros do tipo : In function 'main' , C:\Users\eliel\AppData\Local\Temp\cc2IFBK3.o orum.c:(.text+0x2d3): undefined reference to `lista_frota' etc. Você usou ponteiro? Para que precisa utilizar "frota"? #include <stdio.h> typedef struct { char marca[50]; char modelo[50]; unsigned ano; char cor[50]; char placa[8]; } Veiculo; typedef struct { unsigned cap; // capacidade unsigned size; // o nome consagrado para o tamanho Veiculo v[20]; // tanto faz, mais de 2 } Frota; int lista_carro(Veiculo* carro); int lista_frota(Frota* frota); int main(void) { Frota teste = { .cap = 20, .size = 3, .v[0] = {"Ford", "Mustang", "Prata", 2019, "ABC4D01"}, .v[1] = {"Aston Martin", "DBS", 2017, "Prata", "ABC4D02"}, .v[2] = {"Cadillac", "Escalade V ESV", 2023, "Vermelho", "ABC4D03"}, }; lista_frota(&teste); return 0; }
  11. @devair1010, dá uma ajuda aí, por favor.
  12. @arfneto , faz um modelo aí para eu ver como fica. Sou iniciante. Para listar não necessita usar vetor?
  13. @arfneto , coloquei " fflush" porque estava travando, falaram que ele limpa o teclado. Se você puder ajustrar esse programa aí, pode ser simples mesmo. Estou estudando aos poucos.
  14. @Simon Viegas , ok , obrigada.
  15. @arfneto , dá uma ajuda aí. Pode ser um programa simples mesmo, só para garantir a nota, estou estudando aos poucos a linguagem C.
  16. Preciso fazer um trabalho em C de uma locadora de veículos de carros e motos. Comecei fazendo , mas não sei se está correto assim, estou tentando fazer da forma mais simples possível porque acabei de começar a estudar a linguagem C. Mas preciso entregar esse trabalho quarta-feira. Alguém poderia ajudar por favor? Está certo dessa forma que estou fazendo? O que precisa colocar a mais nesse programa para melhorar ? Objetivo Crie um sistema em C de uma locadora de veículos. (Carro e Motos). O seu programa, deverá conter as seguintes opções: ∙ Cadastrar Veículo ∙ Cadastrar Locador (Usuário) ∙ Listar Veículos ∙ Listar Locadores ∙ Contratos Ativos ∙ Locar Veículo ∙ Sair Cadastrar Veículo Aqui deverão ser cadastradas todas as informações Básicas dos veículos. Cadastrar Locador Aqui deverão ser cadastradas todas as informações Básicas dos usuários que desejam locar os veículos. Listar Veículos Mostrar todos os veículos disponíveis e não disponíveis. Além das informações cadastradas. Listar Usuários Mostrar todas as informações dos usuários, já cadastrados no sistema. Além de todos os contratos existentes para aquele usuário. Contratos Ativos Exibir todos os contratos ativos e inativos, contendo todas as informações do locador e do veículo. Locar Veículo Aqui o sistema deverá criar todo processo de reserva do veículo escolhido pelo usuário. Verificando se existe disponibilidade de locação. Encerrar Contrato O sistema verifica se não multa a ser paga ou qualquer pendência. Se houver aplica a multa e o contrato fica pendente até a multa ser paga. Do contrário, encerrará o contrato, liberando o veículo para locação de outro usuário, bem como, deixando aquele usuário livre para alugar outro veículo. #include<stdio.h> #include<locale.h> struct veiculo { char marca [50]; char modelo [50]; char cor [50]; int ano; int dias; int cnh; }; struct dados_pessoais { char nome [100]; int nascimento; int cpf; int telefone; int cartao; int cnh; }; int main () { setlocale (LC_ALL,"Portuguese"); int opcao ; typedef struct veiculo dados; dados motos; typedef struct dados_pessoais pessoais; pessoais registro; printf ("\n "); printf ("-------- MENU--------\n\n "); printf ("1 - Cadastrar veículo\n "); printf ("2 - Cadastrar locador (Usuário)\n "); printf ("3 - Listar veículos\n "); printf ("4 - Listar locadores\n "); printf ("5 - Contratos ativos\n "); printf ("5 - locar veículo\n "); printf ("6 - Sair\n "); printf ("\n "); printf ("Escolha uma opção:\n "); scanf ("%d",&opcao); fflush(stdin); if (opcao == 1) { printf (" Qual veículo gostaria de cadastrar?\n "); printf ("1 - Moto\n "); printf ("2 - Carro\n "); printf (" Escolha uma opção:\n "); scanf ("%d",&opcao); fflush(stdin); if (opcao==1) { printf (" Motos disponíveis\n "); printf ("\n"); printf (" \tMarca -- Modelo ----- Cor ----- Ano ----- Diária\n "); printf (" \tHonda -- CB 500X -- Vermelha - 2023 ----- R$ 331\n "); printf (" \tHonda -- CB 500F -- Prata ---- 2023 ----- R$ 331\n "); printf (" \tYamaha - Factor -- Preta ---- 2019 ----- R$ 100\n "); printf (" \tTriumph - Tiger -- vermelha - 2023 ----- R$ 523\n "); printf (" \tDafra - RIVA 150 - Branca -- 2015 ----- R$ 60\n "); printf (" \tKasinski- Comet 150 - Vermelha -2011 ---- R$ 50\n "); printf (" \tHonda - Pop 101i - preta - 2016 ----- R$ 29\n "); printf ("\n "); printf (" Escolha uma marca:\n "); scanf ("%49[^\n]s", &motos.marca); fflush(stdin); printf (" Escolha um modelo:\n "); scanf ("%49[^\n]s", &motos.modelo); fflush(stdin); printf (" Escolha uma cor:\n "); scanf ("%49[^\n]s", &motos.modelo); fflush(stdin); printf (" Escolha um ano:\n "); scanf ("%d",&motos.ano); fflush(stdin); printf ("Quantos dias ficará com o veículo?\n "); scanf ("%d",&motos.dias); fflush(stdin); } else if (opcao== 2) { printf (" Carros disponíveis\n "); printf ("\n"); printf (" \tMarca -- Modelo --- Cor - Ano ----- Diária\n "); printf (" \tFiat - Mobi -- branco - 2021 ----- R$ 125\n "); printf (" \tToyota - Corolla -- cinza -2020 ----- R$ 228\n "); printf (" \tPeugeot Hatch cinza - 2022 ---- R$ 183\n "); printf (" \tHyundai Hb20s cinza - 2016 ----- R$ 151\n "); printf (" \tNissan Kickss cinza - 2017 ----- R$ 202\n "); printf (" \tJeep Renegade cinza - 2021 ----- R$ 199\n "); printf (" \tkia Rio cinza - 2020 ----- R$ 92\n "); } } else if (opcao== 2) { printf ("Informe o seu nome completo:\n "); scanf ("%99[^\n]s", &registro.nome); fflush(stdin); printf ("Informe a data do seu nascimento:\n "); scanf("%d",&registro.nascimento); fflush(stdin); printf ("Informe o seu cpf:\n "); scanf("%d",&registro.cpf); fflush(stdin); printf ("Informe o número de seu telefone:\n "); scanf("%d",&registro.telefone); fflush(stdin); printf ("Informe o número de seu cartão de crédito:\n "); scanf("%d",&registro.cartao); fflush(stdin); printf ("Informe o número da sua carteira Nacional de Habilitação:\n"); scanf ("%d",&registro.cnh); fflush(stdin); } }
  17. @kgin , estou iniciando em C agora,não entendi como consertar o til .
  18. Estou tentando digitar a palavra "carrão", porém não consigo imprimir com o til, mesmo já tendo colocado a biblioteca "locale.h". Alguém sabe o por quê? #include<stdio.h> #include<locale.h> #include<stdlib.h> int main (){ setlocale(LC_ALL,"Portuguese"); char nome [20] ; printf ("Digite o seu nome:\n"); scanf ("%19[^\n]s", nome); printf("O nome digitado é: %s\n\n", nome); system("pause"); return 0; }
  19. @Simon Viegas , usa a tecla tab ou espaço?
  20. @Simon Viegas , se você puder tirar uma dúvida, estou tentando aprender a forma que o control+g indenta o código no visualg, será que estaria certo dessa forma? Vi um professor falando que indentava usando a tecla tab ,porém eu testei e vi que ela deixa ás vezes, mais espaço do que a indentação feita automática pelo control+g no visualg. Será que aprendendo a forma que o control+g indenta o código e usando a tecla "espaço" ao invés da tab, estaria certo assim? E depois poderia utilizar esse aprendizado da indentação do visualg para indentar um código de uma linguagem de programação verdadeira?
  21. @Simon Viegas, havia passado despercebido essa parte do "ano de nascimento" com a "data de nascimento", é verdade.Outra coisa,modifiquei seu código tirei o ":1" que estava colado com "idade" e para o espaço não ficar muito grande, nessa parte, recuei as "aspas" para perto do "é". Será que estaria correto dessa forma também? Var // Seção de Declarações das variáveis ano_atual, ano_nasc, idade : inteiro Inicio // Seção de Comandos, procedimento, funções, operadores, etc... escreval(" Informe o ano atual") leia(ano_atual) escreval(" Informe o teu ano de nascimento") leia(ano_nasc) idade <- ano_atual-ano_nasc escreval(" A sua idade é", idade, " anos")
  22. @Simon Viegas, nesse caso,então, já que as variáveis numéricas no VisualG meio que são impressas com um espaço à esquerda. 1º)Então, não precisa dá espaço após "ano" na frase " Estamos no ano", porque as variáveis númericas já vão dá esse espaço? 2º)Utilizar esse ":" é obrigatório? Porque notei que se não utilizar o ":" e não dê espaço após "ano", os espaços para os números ficam bons. Mas não sei , se puder tirar essas dúvidas aí
  23. @Simon Viegas, 1°) usar esse camelCase é obrigatório? 2º) notei que você deixa um espaço entre as variáveis, exemplo: Tem que deixar esse espaço? 3) como fazer para aprender a indentar por conta própria sem utilizar o control+g? Fiz esse código aqui no VisualG, e notei que se dê espaço três vezes para à direita o código fica indentado igual a se você tivesse utilizado control+g. Você acha que estaria correto dessa forma utilizando espaço três vezes para à direita? Código: Var // Seção de Declarações das variáveis ano_atual,ano_nasc,anodenascimento:inteiro Inicio // Seção de Comandos, procedimento, funções, operadores, etc... escreval (" Informe o ano atual ") leia(ano_atual) escreval (" Informe a sua data de nascimento ") leia(ano_nasc) anodenascimento <- ano_atual-ano_nasc escreval (" A sua idade é:",anodenascimento," anos") Fimalgoritmo
  24. @Midori ,obrigada, funcionou 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...