Ir ao conteúdo
  • Cadastre-se

xandin_silva

Membro Júnior
  • Posts

    3
  • Cadastrado em

  • Última visita

Tudo que xandin_silva postou

  1. Muito obrigado Mauro! Estive em dúvida quanto a isso, mas achava que com o uso de structs poderia dar uma "roubada" nessas horas. Vou implementar normal criando uma função de comparação, até para continuar o treino! Abraço!!!!
  2. Boa tarde GuiL4zz, tudo bem? Eu sinceramente acho que não vale a pena essa troca. O preço de um processador i3 atualmente gira em torno de 450 a 600 reais. Com 600 a 800 reais você encontra um note usado que valha mais a pena comprar, com uma nova tecnologia e um HD em melhores condições.
  3. Boa tarde, Estou aprendendo a programar C. No momento estou praticando structs. Fiz o programa de uma lista encadeada de restaurantes que guarde os seguintes dados : -Nome -Endereço -Tipo de comida -Nota do restaurante Todo o programa tem funcionamento satisfatório dentro do planejado, porém uma função, a qual separaria os restaurantes pelo tipo de comida que cada um tem não funciona. Já tentei de várias formas e realmente não encontrei o problema. Se alguém pudesse me ajudar ficaria grato. Também acrescento que sou novo ao forum, é meu primeiro tópico criado, então peço desculpas se fiz algo errado e fico grato por orientações. Abaixo o código de meu programa: /* Struct descreve restaurantes. Campos armazenam o nome do restaurante, o endereço, o tipo de comida (brasileira, japonesa ou mexicana) e uma nota para a cozinha (entre 0 e 5). Struct inserida em lista encadeada que: a) Insire um novo restaurante na lista; b ) Lista todos os restaurantes na tela; c) Lista os restaurantes separados por nota d) Lista os restaurantes separados por tipo de comida */ //Atualmente 1 falhas - nao exibe separacao por comidas #include <stdio.h> #include <stdlib.h> typedef struct Tipo_Restaurante { char nome[50]; char end[70]; char comida[50]; int nota; struct Tipo_Restaurante *proximo; } TRestaurante; void inserir(TRestaurante **cabeca); void listar(TRestaurante *cabeca); void listar_comida(TRestaurante *cabeca); void listar_nota(TRestaurante *cabeca); void exibe_menu(); int main() { TRestaurante *cabeca=NULL; //ponteiro para a cabeca TRestaurante *noatual; //ponteiro para percorrer lista char q; //caractere de selecao de acao do { exibe_menu(); scanf(" %c",&q); //captacao de escolha do usuario printf("\n"); switch(q) { case 'i': case 'I': inserir(&cabeca); break; case 'l': case 'L': listar(cabeca); break; case 'c': case 'C': listar_comida(cabeca); break; case 'n': case 'N': listar_nota(cabeca); break; case 't': case 'T': break; default: printf("\nOpcao invalida!\n\n"); } }while(q!='T'&&q!='t'); noatual=cabeca; //desaloca memoria alocada para lista while(noatual!=NULL) { cabeca=noatual->proximo; //aponta cabeca para proximo elemento free(noatual); //libera memoria de elemento anterior noatual=cabeca; //aponta noatual para endereco do proximo } return 0; } void exibe_menu() { printf("\n Digite I para inserir um restaurante\n"); //menu de escolhas printf(" Digite L para listar restaurantes\n"); printf(" Digite G para gravar restaurantes em arquivo\n"); printf(" Digite E para exibir restaurantes de arquivo\n"); printf(" Digite C para listar restaurantes por tipo de comida\n(Mexicana, Japonesa, Brasileira)\n"); printf(" Digite N para listar restaurantes por nota\n(Notas de 1 a 5)\n"); printf(" Digite T para terminar programa\n"); } void inserir(TRestaurante **cabeca) { TRestaurante *noatual, *novono; char nome[50]; char end[70]; char comida[50]; int nota; printf("Por favor, digite o nome do restaurante: "); gets(nome); gets(nome); printf("Por favor digite o endereco do restaurante: "); gets(end); printf("Por favor digite o tipo de comida servida no restaurante(Mexicana, Japonesa, Brasileira): "); gets(comida); printf("Por favor digite a nota que voce atribui a este restaurante(1 a 5): "); scanf("%d", &nota); printf("\n\n"); //Caso nao exista nenhum item na lista, cria o no cabeca if(*cabeca==NULL) { *cabeca=(TRestaurante*)malloc(sizeof(TRestaurante)); strcpy((*cabeca)->nome,nome); strcpy((*cabeca)->end,end); strcpy((*cabeca)->comida,comida); (*cabeca)->nota=nota; (*cabeca)->proximo=NULL; } //Caso ja existam itens na lista, busca o ultimo e acrescenta no ao final else { noatual=*cabeca; while(noatual->proximo!=NULL) //loop que percorre lista noatual=noatual->proximo; novono=(TRestaurante*)malloc(sizeof(TRestaurante)); //aloca memoria para novo no strcpy(novono->nome,nome); //atribui valores strcpy(novono->end,end); strcpy(novono->comida,comida); novono->nota=nota; novono->proximo=NULL; noatual->proximo=novono; //aponta para novono ao final } } void listar(TRestaurante *noatual) { if(noatual==NULL) { printf("\nLista vazia!\n\n"); } else { while(noatual!=NULL) { printf("\nNome do restaurante: %s\n", noatual->nome); //exibe valores printf("Endereco do restaurante: %s\n", noatual->end); printf("Tipo de comida do restaurante: %s\n", noatual->comida); printf("Nota do restaurante: %d\n\n", noatual->nota); noatual=noatual->proximo; //passa para o proximo no } } } void listar_comida(TRestaurante *noatual) //FUNCAO NAO FUNCIONA!!!!!!!!!!! { TRestaurante *aux; aux=noatual; if(noatual==NULL) //confere se lista esta vazia printf("\nLista vazia!\n\n"); printf("\nRestaurantes de comida Mexicana:\n"); while(noatual!=NULL) //imprime todos os restaurantes mexicanos { if(((noatual->comida)=="mexicana")||((noatual->comida)=="Mexicana")) { printf("%s\n", noatual->nome); } noatual=noatual->proximo; } noatual=aux; printf("\nRestaurantes de comida Japonesa:\n"); while(noatual!=NULL) //imprime todos os restaurantes mexicanos { if((noatual->comida=="Japonesa")||(noatual->comida=="japonesa")) { printf("%s\n", noatual->nome); } noatual=noatual->proximo; } noatual=aux; printf("\nRestaurantes de comida Brasileira:\n"); while(noatual!=NULL) //imprime todos os restaurantes mexicanos { if((noatual->comida=="Brasileira")||(noatual->comida=="brasileira")) { printf("%s\n", noatual->nome); } noatual=noatual->proximo; } } void listar_nota(TRestaurante *noatual) { TRestaurante *aux; //variavel auxiliar que aponta para inicio da lista aux=noatual; if(noatual==NULL) //confere se lista esta vazia printf("\nLista vazia!\n"); printf("\nRestaurantes nota 1:\n"); while(noatual!=NULL) //imprime todos os restaurantes de nota 1 { if((noatual->nota==1)) { printf(" %s\n", noatual->nome); } noatual=noatual->proximo; } printf("\nRestaurantes nota 2:\n"); noatual=aux; //noatual aponta novamente para inicio da lista while(noatual!=NULL) //imprime todos os restaurantes de nota 2 { if((noatual->nota==2)) { printf(" %s\n", noatual->nome); } noatual=noatual->proximo; } printf("\nRestaurantes nota 3:\n"); noatual=aux; //noatual aponta novamente para inicio da lista while(noatual!=NULL) //imprime todos os restaurantes de nota 3 { if((noatual->nota==3)) { printf(" %s\n", noatual->nome); } noatual=noatual->proximo; } printf("\nRestaurantes nota 4:\n"); noatual=aux; //noatual aponta novamente para inicio da lista while(noatual!=NULL) //imprime todos os restaurantes de nota 4 { if((noatual->nota==4)) { printf(" %s\n", noatual->nome); } noatual=noatual->proximo; } printf("\nRestaurantes nota 5:\n"); noatual=aux; //noatual aponta novamente para inicio da lista while(noatual!=NULL) //imprime todos os restaurantes de nota 5 { if((noatual->nota==5)) { printf(" %s\n", noatual->nome); } noatual=noatual->proximo; } }

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...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!