Brenda Nunes Postado Maio 5, 2022 em 11:24 Compartilhar Postado Maio 5, 2022 em 11:24 #include <stdio.h> #include <stdlib.h> #define limparTela system("cls") typedef struct { int codigo; char nome [100]; char ingrediente[100]; double valor; } Bolo_t; typedef struct { int codigo; int codigoBolos[100]; double valorTotal; } Pedido_t; int main() { const int quantidadeMaximaBolo = 100; int posicaoBolo = 0; int posicaoBoloPedido = 0; int codigoBolo = 0; char nomedobolo [100] ; Bolo_t bolos[quantidadeMaximaBolo]; Pedido_t pedido; char opcao = ' '; do { limparTela; printf("MENU \n"); printf("[ 1 ] - Cadastrar Bolo \n"); printf("[ 2 ] - Fazer pedido \n"); printf("[ 0 ] - Sair \n"); printf("> "); scanf(" %c", &opcao); switch (opcao) { case '1': limparTela; printf("NOVO BOLO \n"); printf("Nome do bolo: "); scanf(" %[^\n]s", nomedobolo); printf("digite o codigo do bolo: "); scanf(" %[^\n]s", bolos[posicaoBolo].nome); printf("Valor: R$ "); scanf(" %lf", &bolos[posicaoBolo].valor); bolos[posicaoBolo].codigo = posicaoBolo + 1; posicaoBolo += 1; break; case '2': limparTela; if (posicaoBolo == 0) { printf("Nao tem bolo cadastrado \n"); if (getchar() == '\n') { getchar(); } break; } do { printf("Digite o nome/codigo do bolo %s caso nao queira mais bolos digite 0", nomedobolo, bolos[posicaoBolo].nome ); scanf(" %i", &codigoBolo); if (codigoBolo > 0 && codigoBolo <= posicaoBolo) { pedido.codigoBolos[posicaoBoloPedido] = codigoBolo; pedido.valorTotal += bolos[codigoBolo - 1].valor; posicaoBoloPedido += 1; } } while (codigoBolo != 0 && posicaoBoloPedido < 100); pedido.codigo = 1; break; } } while (opcao != '0'); limparTela; printf("--------------------------------------------- \n"); printf("PEDIDO \n"); printf("Codigo: %i \n", pedido.codigo); printf(" Valor: R$ %.2f \n", pedido.valorTotal); printf("--------------------------------------------- \n"); return 0; } Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pimptech Postado Maio 10, 2022 em 22:52 Compartilhar Postado Maio 10, 2022 em 22:52 (editado) Olá, Brenda. Tudo bem ? Bom, pelo que eu entendi, você quer pesquisar seu bolo pelo código, certo ? Como não especificou qual tipo de código então entendo que ele é somente string, ainda mais pelo tipo que você colocou na struct. Portanto só tem uma maneira de fazer isso que é iterar pelo seu vetor de bolos. Bolo_t bolos[quantidadeMaximaBolo]; Tem várias maneiras de fazer isso. Eu faria uma inicialização do vetor de Bolo_t. Assim vc poderia iterar e checar essa opção. Ou você pode manter desse jeito ai mesmo e só checar se o .nome é vazio. E para isso você pode adicionar a header. <string.h>, fica mais fácil de mexer nas strings com as funções respectivas. Eu fiz algumas modificações no seu código. mas no geral seria isso. Primeiro limpo o nomebolo para buscar por ele, depois comparo com as funções de string para ver se não tá vazio ou é 0. Depois faço um loop-for para iterar pelo seu vector de Bolo_t. O nome sendo igual ao digitado eu paro o loop-for e mostro o resultado. //cleaning nomedobolo nomedobolo[0] = '\0'; do { // bolos[posicaoBolo].nome printf("Digite o nome/codigo do bolo %s caso nao queira mais bolos digite 0: ", nomedobolo); scanf(" %s[^\n]", nomedobolo); if(strcmp(nomedobolo, "0") == 0 || strlen(nomedobolo) <= 0){ printf("skipping. %s", nomedobolo); break; } for(int o=0;o<quantidadeMaximaBolo;o++){ if(strcmp(bolos[o].nome, nomedobolo)){ printf("\n-------Encontrado-------\nSeu bolo.. foi encontrado. posição %i. %s \n\n", o, bolos[o].nome); //bolos[0].nome e etc... break; } } } while (1); Caso alguma coisa não tenha ficado clara só falar. Abs! Editado Maio 10, 2022 em 23:01 por Pimptech Citar Link para o comentário Compartilhar em outros sites More sharing options...
Brenda Nunes Postado Maio 17, 2022 em 16:36 Autor Compartilhar Postado Maio 17, 2022 em 16:36 Oi eu precisava mostrar os nomes dos bolos pedidos no final sabe como posso fazer isso ? Obrigado pela ajuda Citar Link para o comentário Compartilhar em outros sites More sharing options...
Brenda Nunes Postado Maio 17, 2022 em 16:58 Autor Compartilhar Postado Maio 17, 2022 em 16:58 Em 10/05/2022 em 19:52, Pimptech disse: Olá, Brenda. Tudo bem ? Bom, pelo que eu entendi, você quer pesquisar seu bolo pelo código, certo ? Como não especificou qual tipo de código então entendo que ele é somente string, ainda mais pelo tipo que você colocou na struct. Portanto só tem uma maneira de fazer isso que é iterar pelo seu vetor de bolos. Bolo_t bolos[quantidadeMaximaBolo]; Tem várias maneiras de fazer isso. Eu faria uma inicialização do vetor de Bolo_t. Assim vc poderia iterar e checar essa opção. Ou você pode manter desse jeito ai mesmo e só checar se o .nome é vazio. E para isso você pode adicionar a header. <string.h>, fica mais fácil de mexer nas strings com as funções respectivas. Eu fiz algumas modificações no seu código. mas no geral seria isso. Primeiro limpo o nomebolo para buscar por ele, depois comparo com as funções de string para ver se não tá vazio ou é 0. Depois faço um loop-for para iterar pelo seu vector de Bolo_t. O nome sendo igual ao digitado eu paro o loop-for e mostro o resultado. //cleaning nomedobolo nomedobolo[0] = '\0'; do { // bolos[posicaoBolo].nome printf("Digite o nome/codigo do bolo %s caso nao queira mais bolos digite 0: ", nomedobolo); scanf(" %s[^\n]", nomedobolo); if(strcmp(nomedobolo, "0") == 0 || strlen(nomedobolo) <= 0){ printf("skipping. %s", nomedobolo); break; } for(int o=0;o<quantidadeMaximaBolo;o++){ if(strcmp(bolos[o].nome, nomedobolo)){ printf("\n-------Encontrado-------\nSeu bolo.. foi encontrado. posição %i. %s \n\n", o, bolos[o].nome); //bolos[0].nome e etc... break; } } } while (1); Caso alguma coisa não tenha ficado clara só falar. Abs! ola eu ainda estou confuso com o que você disse comecei a mexer com c++ agora e estou fazendo este código oq tenho que fazer é no final onde diz "digite o codigo do bolo" tenha que realmente digitar o código dito na primeira parte e não seja em ordem igual esta agora outra coisa eu não consigo fazer com que apareça os nomes dos bolos selecionados no final do código como exemplo "pedido codigo:1 valor: 20 bolos pedidos : laranja, chocolate, cafe " Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pimptech Postado Maio 19, 2022 em 21:29 Compartilhar Postado Maio 19, 2022 em 21:29 On 5/17/2022 at 1:58 PM, Brenda Nunes said: ola eu ainda estou confuso com o que você disse comecei a mexer com c++ agora e estou fazendo este código oq tenho que fazer é no final onde diz "digite o codigo do bolo" tenha que realmente digitar o código dito na primeira parte e não seja em ordem igual esta agora outra coisa eu não consigo fazer com que apareça os nomes dos bolos selecionados no final do código como exemplo "pedido codigo:1 valor: 20 bolos pedidos : laranja, chocolate, cafe " Olá, Brenda. Td bem ? Você chegou a rodar o código que eu enviei no post anterior ? Esse trecho aqui: for(int o=0;o<quantidadeMaximaBolo;o++){ if(strcmp(bolos[o].nome, nomedobolo)){ printf("\n-------Encontrado-------\nSeu bolo.. foi encontrado. posição %i. %s \n\n", o, bolos[o].nome); //bolos[0].nome e etc... break; } } Faz uma iteração pelo vector de bolos. Se você remover o if você vai conseguir iterar por todos os bolos cadastrados. E para receber código é a mesma coisa. Acertar os lugares que você grava isso na estrutura e depois alterar essa parte. // bolos[posicaoBolo].nome printf("Digite o nome/codigo do bolo %s caso nao queira mais bolos digite 0: ", nomedobolo); scanf(" %s[^\n]", nomedobolo); Essa parte recebe o código.. e pode usar o if de cima para compara com o código e não com o nome. Eu acho que esse exemplo que eu te enviei tem a maneira como você pode fazer tudo. ? 1 Citar Link para o comentário Compartilhar em outros sites More sharing options...
Posts Recomendados
Participe da conversa
Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.