dguimaraes Posted August 1, 2013 at 12:01 AM Report #520564 Posted August 1, 2013 at 12:01 AM Boas pessoal..tou a comecar a programar a pouco tempo e iniciei pra ja em c. Recentemente tive a tentar fazer um mini jogo quem e quem e no qual eu tenho uma STRUCT o problema é...eu queria mostrar o conteudo mas apenas so consigo mostrar o primeiro campo por exemplo: struct Perfil { char name[20]; typeSex sex[20]; typeSkin skin; typeEyes eyes; typeHair hair; typeGlasses glasses; }; struct Perfil perfis[] = { { "Joao", male, skinWhite, eyesBrown, hairBrown, withoutGlasses }, { "Diogo", male, skinBrown, eyesBrown, hairBrown, withoutGlasses }, { "Miguel", male, skinWhite, eyesBlue, hairYellow, withoutGlasses }, { "Ana", female, skinWhite, eyesBrown, hairRed, withGlasses }, { "Joana", female, skinWhite, eyesGreen, hairBlack, withoutGlasses }, }; .................................................. void newGame() { int i=0; /*int perfil = random(4);*/ for (i=0; i<5; i++) printf("%s ", perfis[i].name); Nesta funcao era suposto eu mostrar o conteudo da struct tipo o seguinte: Joao Diogo Miguel Ana Joana male male male female female skinBrown skinWhite skinWhite skinWhite skinWhite e por ai fora os campos que descrevi em cima...como faco?
eatg75 Posted August 1, 2013 at 12:31 AM Report #520565 Posted August 1, 2013 at 12:31 AM (edited) Oi boa noite. Em primeiro lugar quando postares listagens de cogigo aqui no P@P deves utilizar a _tag_ para codigo que e '[ CODE=lang] [ /CODE]' onde lang e a linguagem de programacao a qual o codigo esta escrito, os valores para lang pode ser java, perl, c, cpp, lisp, etc... Em relacao ao teu problema penso que devias ter uma funcao para mostrar os campos que pretendes da estrutura. A listagem a seguir seria uma possivel solucao: void perfil_mostrar(Perfil perfil) { printf("Nome : %s\n", perfil.name); printf("Sex : %s\n", perfil.sex); printf("Eyes : %s\n", perfil.eyes); printf("Skin : %s\n", perfil.skin); printf("Hair : %s\n", perfil.eyes); printf("Glasses : %s\n", perfil.glasses); } Porque que nao apresentas a listagem completa da tua funcao newGame() assim os demais membros do P@P hao de realcar possiveis erros ao mas praticas de programacao, e podes ficar tranquilo que ninguem ira de copiar o teu codigo se este o teu receio. Em relacao ao nome que andas a escolher para os teus identificadores eu recomendaria escolhe-los numa linguagem e nao em multiplos, de forma a tornar o teu codigo consistente. Espero ter ajudado de alguma forma. EDIT: adicionei espacos na tag CODE de forma a retirar o seu valor semantico. Edited August 1, 2013 at 12:34 AM by eatg75 Victarion seized the dusky woman by the wrist and pulled her to him. Victarion - She will do it. Go pray to your red god. Light your fire, and tell me what you see. Moqorro's dark eyes seemed to shine. Moqorro - I see dragons.
HappyHippyHippo Posted August 1, 2013 at 02:26 AM Report #520569 Posted August 1, 2013 at 02:26 AM // definição dos tipos de dados // definição do tipo de dados Perfil struct Perfil { char name[20]; typeSex sex; typeSkin skin; typeEyes eyes; typeHair hair; typeGlasses glasses; }; // dados exemplo struct Perfil perfis[] = { { "Joao", male, skinWhite, eyesBrown, hairBrown, withoutGlasses }, { "Diogo", male, skinBrown, eyesBrown, hairBrown, withoutGlasses }, { "Miguel", male, skinWhite, eyesBlue, hairYellow, withoutGlasses }, { "Ana", female, skinWhite, eyesBrown, hairRed, withGlasses }, { "Joana", female, skinWhite, eyesGreen, hairBlack, withoutGlasses }, }; // protótipos de funções de conversão tipo de dados -> string representativa do valor // (implementa isto dependendo dos domínio dos tipos de dados) char* typeSex2String(typeSex type); char* typeSkin2String(typeSkin type); char* typeEyes2String(typeEyes type); char* typeHair2String(typeHair type); char* typeGlasses2String(typeGlasses type); // função de output de forma tabelar void output_perfis(struct Perfil * perfis, size_t count, int spacing) { int i = 0; char format[8]; sprintf(format, "%%%ds ", spacing); for (i = 0; i < count; i++) printf(format, perfis[i].name); printf("\n"); for (i = 0; i < count; i++) printf(format, typeSex2String(perfis[i].sex)); printf("\n"); // por ai a diante para todos os tipos de dados ... } // exemplo da chamada da função de output output_perfis(perfis, sizeof(perfis) / sizeof(struct Perfil), 19); IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now