yala neb 0 Denunciar post Postado Outubro 13, 2012 #include <stdio.h> #include <stdlib.h> #include <ctype.h> #include <string.h> #include <conio.h> typedef struct{ char nomerestau[]= "boaviagem"; char endereco[]="recife"; char tipocomida[]="brasileira"; float nota[]={4}; }Restaurante1; typedef struct{ char nomerestau[]= "sempremais"; char endereco[]="olinda"; char tipocomida[]="italiana"; float nota={3}; }Restaurante2; typedef struct{ char nomerestau[]= "yoki"; char endereco[]="ceara"; char tipocomida[]="chinesa"; float nota[]={4.5}; }Restaurante3; int main() { /** Crie uma struct para descrever restaurantes. Os campos devem armazenar o nome do restaurante, o endereço, o tipo de comida (brasileira, chinesa, francesa, italiana, japonesa, etc.) e uma nota para a cozinha (entre 0 e 5). Crie uma aplicação que posso desempenhar as seguintes funções: a. Insira um novo restaurante; b. Liste todos os restaurantes na tela; c. Liste os restaurantes com cozinha com nota superior a um determinado valor, determinado pelo usuário; d. Liste todos os restaurantes com determinado tipo de comida, determinado pelo usuário. */ char novorestau[25]; Restaurante1 r1; Restaurante2 r2; Restaurante3 r3; float superior; int comida; printf("\ninsira um novo restaurante:\n"); gets(novorestau); printf("\n***restaurantes armazenados***\n"); printf("\nRESTAURANTE 1::\n%s\n\n%s\n\n%s\n%f\n",r1.nomerestau,r1.endereco,r1.tipocomida,r1.nota); printf("\nRESTAURANTE 2::\n%s\n\n%s\n\n%s\n%f\n",r2.nomerestau,r2.endereco,r2.tipocomida,r2.nota); printf("\nRESTAURANTE 3::\n%s\n\n%s\n\n%s\n%f\n",r3.nomerestau,r3.endereco,r3.tipocomida,r3.nota); printf("\ndeseja conferir restaurante com nota superior a que nota?\n"); scanf("%f",&superior); if(superior>0 && superior<3.0) { printf("\nRESTAURANTE 1::\n%s\n\n%s\n\n%s\n%f\n",r1.nomerestau,r1.endereco,r1.tipocomida,r1.nota); printf("\nRESTAURANTE 2::\n%s\n\n%s\n\n%s\n%f\n",r2.nomerestau,r2.endereco,r2.tipocomida,r2.nota); printf("\nRESTAURANTE 3::\n%s\n\n%s\n\n%s\n%f\n",r3.nomerestau,r3.endereco,r3.tipocomida,r3.nota); } if(superior>3.0) { printf("\nRESTAURANTE 1::\n%s\n\n%s\n\n%s\n%f\n",r1.nomerestau,r1.endereco,r1.tipocomida,r1.nota); printf("\nRESTAURANTE 3::\n%s\n\n%s\n\n%s\n%f\n",r3.nomerestau,r3.endereco,r3.tipocomida,r3.nota); } if(superior>4.0) { printf("\nRESTAURANTE 3::\n%s\n\n%s\n\n%s\n%f\n",r3.nomerestau,r3.endereco,r3.tipocomida,r3.nota); } printf("\n[1] COMIDA BRASILEIRA \n"); printf("\n[2] COMIDA ITALIANA \n"); printf("\n[3] COMIDA CHINESA \n"); scanf("%d",&comida); switch (comida){ case 1: printf("\nRESTAURANTE 1::\n%s\n\n%s\n\n%s\n%f\n",r1.nomerestau,r1.endereco,r1.tipocomida,r1.nota); break; case 2: printf("\nRESTAURANTE 2::\n%s\n\n%s\n\n%s\n%f\n",r2.nomerestau,r2.endereco,r2.tipocomida,r2.nota); default: printf("\nRESTAURANTE 3::\n%s\n\n%s\n\n%s\n%f\n",r3.nomerestau,r3.endereco,r3.tipocomida,r3.nota); } return 0; } Compartilhar este post Link para o post Compartilhar em outros sites
_Isis_ 202 Denunciar post Postado Outubro 13, 2012 Qual é a dúvida? Compartilhar este post Link para o post Compartilhar em outros sites
yala neb 0 Denunciar post Postado Outubro 13, 2012 Qual é a dúvida? TIPO, NÃO SEI PORQUE NÃO COMPILA(NÃO VEJO O ERRO), QUERIA UMA AJUDA Compartilhar este post Link para o post Compartilhar em outros sites
Giovanne Afonso 0 Denunciar post Postado Outubro 15, 2012 Eu também estou aprendendo C/C++ e acho que posso te ajudar um pouco... Veja o código abaixo: typedef struct{ char nomerestau[]= "boaviagem"; char endereco[]="recife"; char tipocomida[]="brasileira"; float nota[]={4}; }Restaurante1; Se não estou enganado, o "typedef" atribui um novo nome para o anterior, como: typedef int INTEIRO; <- precisa de um outro nome Você não especificou um nome novo pra sua estrutura, o certo seria: typedef struct res1{ char nomerestau[]= "boaviagem"; char endereco[]="recife"; char tipocomida[]="brasileira"; float nota[]={4}; /* OBS... FLOAT COM COLCHETES? Isso existe? .__. não sei não, mas acho que também tá errado */ }Restaurante1; Mais uma coisa, você criou 3 estruturas diferentes e atribuiu valores padrão pra cada uma, não sei se isso é certo e nem sei se é um código válido, acho que você deveria criar apenas uma estrutura e usá-la para armazenar os dados diferentes, exemplo: typedef struct ress{ char nomerestau[],endereco[],tipocomida[]; float nota; }Restaurante; Restaurante res1; strcpy(res1.nomerestau,"boaviagem"); strcpy(res1.endereco,"recife"); strcpy(res1.tipocomida,"brasileira"); res1.nota = 4.0; Restaurante res2; strcpy(res1.nomerestau,"sempremais"); strcpy(res1.endereco,"olinda"); strcpy(res1.tipocomida,"italiana"); res1.nota = 3.0; /* E assim vai =D */ Bom, é isso! Espero que dê certo, mas se não der me desculpa, também estou aprendendo e só quero ajudar... Sucesso pra nós :D Compartilhar este post Link para o post Compartilhar em outros sites
_Isis_ 202 Denunciar post Postado Outubro 17, 2012 Não importa se os nomes são repetidos dentro de typedefs diferentes. O escopo deles é diferente. Isso não causa nenhum erro de compilação. O que está dando erro são as atribuições dentro dos typedefs. Float é um tipo de dados primitivo. Quando você declara float nota[] você está declarando um array de floats e não uma variável do tipo float. E quanto às strings, é necessário declarar a quantidade de caracteres que o array suporta dentro dos colchetes, senão o programa não compila. A dica vale p/ os dois: acostumem-se a usar as opções do compilador p/ ver os erros. A julgar pelo conio.h, vcs estão programando no Windows. Minha sugestão é que baixem um Virtualbox e instalem um Linux (Ubuntu, Opensuse) porque o acesso às ferramentas necessárias p/ compilar um programa em C é muito mais fácil que se virar com as configurações de uma IDE, mesmo que seja por linha de comando. Outra coisa: evitem a conio se possível. Compartilhar este post Link para o post Compartilhar em outros sites
Giovanne Afonso 0 Denunciar post Postado Outubro 17, 2012 _Isis_, É verdade, precisa declarar o tamanho das strings, pensei que colocando apenas os colchetes ficaria com tamanho indefinido... Ainda não sei ver os erros pelas opções do compilador e não sou muito acostumado com linux (tenho o Fedora instalado). Mas sei que vou ter que aprender essas coisas, o que você falou apenas reforçou essa ideia. Obrigado pelas dicas. Compartilhar este post Link para o post Compartilhar em outros sites
_Isis_ 202 Denunciar post Postado Outubro 18, 2012 Posso marcar o tópico como resolvido? Compartilhar este post Link para o post Compartilhar em outros sites
yala neb 0 Denunciar post Postado Novembro 4, 2012 pode sim! Compartilhar este post Link para o post Compartilhar em outros sites