Ir ao conteúdo

arfneto

Membro Pleno
  • Posts

    6.526
  • Cadastrado em

  • Última visita

Tudo que arfneto postou

  1. Antes de continuar, leia um pouco. Compre um livro. Tente um download de algum ligar, sei lá. E leia as coisas de que te falei. Uma tarde e não vai se arrepender. Esses valores item já são os preços. A quantidade você vai ler a cada vez do usuário então você só vai multiplicando e somando... printf("Qual item voce deseja:\n"); // Codigo do Item Desejado scanf_s("%d", &i); printf("Qual a quantidade desejada? \n");//Quantidade Desejada scanf_s("%d", &q); Certo? E como te disse, mostre a tabela pro cara antes. Nem todo mundo vai ter o cardápio na mão...
  2. IMPASSE Mas o que seria? Apenas some as parcelas dos itens * quantidade em uma nova variável...
  3. Existem razões bem objetivas para usar typedef. Vou explicar 3: Primeira struct st_carro { char placa[10]; char modelo[20]; char marca[20]; char cor[20]; char ano[5]; }; typedef struct st_carro Carro; Declarando a estrutura assim com um alias via typedef ela passa a ter um nome, Carro, como uma classe em C++ ou java etc. Esse trecho struct st_carro* junta(struct st_carro* A, struct st_carro* B); struct st_carro outro; struct st_carro* um_novo = (struct st_carro*)malloc(sizeof(struct st_carro)); É funcionalmente idêntico a esse Carro* junta2(Carro* A, Carro* B); Carro um; Carro* novo = (Carro*)malloc(sizeof(Carro)); Num programa complexo você pode ter dezenas de vezes que repetir essa coisa de struct st_carro... Claro que usar um alias resolve bem para deixar tudo mais claro e produtivo. Segunda Para se proteger de mudanças internas em seu código quando você distribui pode preferir usar nomes locais porque assim se precisar mudar a implementação não precisa mudar a interface e assim não precisa avisar ninguém... Terceira Se você precisa garantir portabilidade pode usar algo como em stdint.h que define tipos como #if _VCRT_COMPILER_PREPROCESSOR #pragma warning(push) #pragma warning(disable: _VCRUNTIME_DISABLED_WARNINGS) typedef signed char int8_t; typedef short int16_t; typedef int int32_t; typedef long long int64_t; typedef unsigned char uint8_t; typedef unsigned short uint16_t; typedef unsigned int uint32_t; typedef unsigned long long uint64_t; E assim quando você precisa de um int de 32bits fica seguro em usar int32_t sem ter que pensar se o cara compilou seu programa em uma máquina onde os int tem 64, 24 ou 16 bits... Nada de sizeof() toda hora. adicionado 5 minutos depois "Não dá certo" é algo muito vago. Você deve explicar melhor as coisas. Se você planejar bem ao separar o código não vai ter problemas ao juntar. Se tem problemas algo falhou no início. Como te disse, isso tudo é simétrico e muito simples, então deve fazer igual. Quando testa o cliente em separado força opcao = 1 , quando testa carro usa opcao = 2 e assim por diante. No programa principal você lê a opção então não precisa mudar nada exceto colocar as rotinas novas lá. Como você está começando e está testando deve, desde o início, já criar uma função que mostra o que tem na estrutura e chamar assim que leu, como te mostrei.
  4. Não consegui entender No geral vai fazer a mesma coisa para todos os cadastros para não perder tempo. Uma rotina lê outra mostra para tirar qualquer dúvida. Depois que estiver tudo pronta você tira o excesso.
  5. Arrume um livro. Já. Precisa ler sobre os tipos de variáveis, como declarar, inicializar e tal. Atribuição, testes e loops. O mínimo. Não respondeu se tem acesso a uma biblioteca. Você entende inglês? É mais fácil achar serviços de biblioteca eletrônica nessa língua... Sua escola de fato não tem nada? Seu curso não tem um livro texto? Seu professor não adota um?
  6. Que função? qsort() ?
  7. typedef cria um sinonimo, um alias. Útil para deixar a coisa mais legível e evitar ter que digitar, e acabar esquecendo, struct isso ou aquilo em todo lugar. Não há qualquer limite para isso. É só um alias.
  8. Consiga um livro. Acho muito importante. Sua escola não tem uma biblioteca? Um serviço digital tipo esse que acho que é o melhor que existe? Muitas escolas assinam esse tipo de serviço para os alunos. Você pode se inscrever de graça nesse acima por 30 dias eu acho. Seu curso não tem um livro-texto? Muitos professores adotam um livro-texto... Eu disse para você mostrar a tabela no programa,. não aqui. Aqui está legível. Quando você rodar o programa deve imaginar que faz sentido mostrar a tabela antes pro cara saber o que pedir...
  9. O sort não faz diferença. Apenas entenda que tem separar e isolar a parte de comparação e inversão dos valores em algo bem separado, uma função talvez, como é feito no sort() da biblioteca adicionado 4 minutos depois Como muitos iniciantes tem dificuldade em receber e enviar funções como argumento de funções, achei que você poderia trocar pelo qsort(). Mas dá na mesma.
  10. acho que tem razão hein?
  11. Se você mantiver a disciplina nisso e apenas deixar de fixar a opção no menu ao incorporar os outros trechos tudo vai rodar sem mudar uma linha. Sistemas enormes são escritos assim.
  12. Como eu te mandei, isso quer dizer como eu te mandei. Logo acima. Recorte e cole... Só isso.
  13. Você podia ao menos mostrar a tabela na tela pro cara saber o que pedir... Você tem um Livro? Uma apostila ao menos? É o seu primeiro programa?
  14. Não, o ano não precisa de 50 letras a menos que queira escrever por extenso o ano... Não, a cor não precisa de 30 letras a menos que vá trazer um arquiteto para explicar os tons e nuances e reflexos de cada pintura Não, o modelo não é um número: é uma coisa tipo "3.0 Turbo".... Use como eu te mandei adicionado 0 minutos depois Apenas use o que te mandei. Pare de dar voltas ou não vai terminar nunca adicionado 3 minutos depois Vá exatamente ao ponto. Use algo simples como isso, que já te mostrei #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #include <string.h> typedef struct { char placa[10]; char modelo[20]; char marca[20]; char cor[20]; char ano[5]; } Carro; int le_um_carro(Carro*); int mostra_um_carro(Carro* c); int main(void) { Carro info; int opcao = 2; switch (opcao) { case 2: le_um_carro(&info); mostra_um_carro(&info); break; default: printf("Opcao inesperada: %d\n", opcao); break; }; // switch() }; // main() int le_um_carro(Carro* C) { char aux[200]; Carro info; printf("Informe o numero da placa [7 digitos]: "); 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; } else if (strlen(aux) > 7) { 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; };
  15. Meu pessoal diz que eu tenho muita paciência e que não desisto . Mas há desafios... Eu vou passar o dia e parte da noite nos computadores mesmo, então posso ir te ajudando. Mas tem que ter algum progresso.... você voltou a usar um int para modêlo e está usando o código que eu te mostrei? Sério? Você leu o que te expliquei várias vezes e vai insistir com o modelo int? Leu mesmo? Leu o exemplo que te mandei dias atrás? E a discussão sobre o que iria acontecer --- e está acontecendo --- se insistisse nesse caminho? Você percebeu que eu te mandei um programa há pouco que lê e mostra essa estrutura? Viu o resultado lá?
  16. Eu te mostrei há pouco uma função que roda e até o resultado.... Como está o código agora?
  17. Como eu já te disse, sempre compila. Você quer dizer que rodou o programa e até mostrou algo dessa vez... Espero que esteja lendo de fato o que eu te escrevo.
  18. Não. Já te expliquei porque deu erro e mais de uma vez. Também te expliquei como corrigir. E te mostrei outro programa há pouco. E te expliquei que para fazer isso simples e rápido como devia fazer, e isso incluia uma estrutura para os carros, uma para as vagas e uma para os clientes e uma maneira de vincular essas coisas. E como seria melhor ter seu programa perto da realidade: carros tem donos, donos tem carros, carros tem "prismas" numerados, Carros ficam em vagas e a vida segue... Não faz diferença. Faça o simples como está descrito acima. E aqui: entendeu isso ai abaixo? É o que escreveu, mas de uma maneira que consegue tratar melhor... Carro info; int opcao = 2; switch (opcao) { case 2: le_um_carro(&info); mostra_um_carro(&info); break; default: printf("Opcao inesperada: %d\n", opcao); break; }; // switch() }; // main() A função que mostra um carro te mostrei um exemplo há dias. A que lê pode ser muito simples como int le_um_carro(Carro* C) { char aux[200]; Carro info; printf("Informe o numero da placa [7 digitos]: "); 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; } else if (strlen(aux) > 7) { 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() Que é o seu código!!!!! E mostra por exemplo 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 Marca/Modelo: Ford Taurus Cor: Azul Placa: ABC1212 Entrada: 2020 Você está perdendo muito tempo. Procure ler e resolver os problemas antes de seguir e não ficar dando voltas em torno do problema. adicionado 2 minutos depois Já que foi por esse caminho não mexa nos números do case ou em nada. Assim ao juntar as partes não precisa mudar nada. Se não entendeu ainda vou repetir: apenas coloque a opção igual a que est;a tratando em cada parte e quando vocês juntarem as partes o programa funciona direitinho... Pare de mexer e criar coisas. Como uma leitura de opção e um case 1.... adicionado 11 minutos depois Seu programa está fundamentalmente errado. Devia seguir o modelo que te expliquei, em torno dos dados. Isso não quer dizer que não vai funcionar ou que você não vai conseguir. Só quer dizer que vai ter trabalho muito maior e resultado muito menor. E isso você está vendo desde o início. Quando resolveu fazer o programa de novo deveria ter feito da maneira que te expliquei, um modelo da realidade. E já teria terminado. Entidades: carro, vaga, cliente, prisma. As relações que existem no estacionamento. E os eventos: chegada e saída de carros. Preço da estadia. É isso. Nada mais. As funções de que não precisa não implementa. Mas cria uma abstração da realidade. Esse é o objetivo de um programa como esse. Veja isso: Comece por algo assim. É o simples. Esse não usa prisma...
  19. printf("\nOpcao: "); scanf("%d",&opcao); switch(opcao){ case 1: struct cad_cliente info; ... Faça o que eu te disse. Não invente. Seu programa só tratava a opção 2. Então você vai lá depois de ver o erro tantas vezes e afinal escreve int opcao = 2; E não fique mudando as coisas. Provavelmente essa opcao 2 era a do menu original e quando incorporar esse trecho ao programa vai ter que mudar de novo. Para que? Agora você mudou para um e colocou a opção para ler a opção. Pra que, se está testando uma única opção e não faz diferença alguma? A primeira coisa que eu te disse foi para não usar menu e te mostrei como iria prosseguir mais rápido sem isso. Veja como pode ser mais simples, fizesse você como eu te expliquei: Carro info; int opcao = 2; switch (opcao) { case 2: le_um_carro(&info); mostra_um_carro(&info); break; default: printf("Opcao inesperada: %d\n", opcao); break; }; // switch() }; // main() E pronto. Lê a estrutura em outra função. Ao ler mostra o que leu e pronto. Quando estiver certo você junta ao menu do programa completo e pronto...
  20. Não, não precisa. basta colocar 2 em opcao. Pense bem no que está fazendo. Eu acabei de te explicar...
  21. parece que você misturou os exemplos... Se as etapas em main() vão de 1 a 5 não deve somar 1 no prompt de leitura Esse exemplo de fase só retornava quando o cara acertava. Um usuário perguntou se tinha como voltar pro início se o cara errasse uma das 5 senhas e aí tem outro exemplo. E nesse caso fase retornava zero ou um conforme a senha estivesse certa... Acompanhe o tópico desde o início e acho que vai entender Cada exemplo um tem uma função fase uma função main() de acordo
  22. 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.
  23. 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?
  24. 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: Se não tivesse tirado aquilo...
  25. 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;

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!