suzy Posted December 6, 2007 at 11:18 PM Report Share #152796 Posted December 6, 2007 at 11:18 PM ? tenho o seguinte problema 🙂 Faça uma função que receba um vector de telemóveis com toda a informação preenchida, excepto o total facturado com as vendas no final do ano. A função recebe também o número de telemóveis que se encontra no vector. A função deve preencher o campo relativo ao total facturado de todos os telemóveis do vector. fiz assim. #include<stdio.h> #include<string.h> struct telemovel{ char modelo[20]; float preco; int unidade[4]; float total; }; void funcao( struct telemovel ptr[],int numerotelemoveis){ int i,soma=0,j; float preco; for(i=0;i<numerotelemoveis;i++){ for(j=0;j<4;j++){ soma=soma+ ptr[i].unidade[j]; preco=soma*(ptr[i].preco);//soma do 1 vector ptr[i].total=preco; } } for(i=0;i<numerotelemoveis;i++){ printf(" o modelo %s\n",ptr[i].modelo); printf(" o preco e %f\n", ptr[i].preco); printf(" o total facturado e %f\n",ptr[i].total); } } main(){ struct telemovel vet[2]={{"motorola",15.0,{10,10,10,10}},{"nokia",15.0,{10,10,10,10}}}; funcao(vet,2); fflush(stdin); getchar(); } acontece que no 2 estrutura com o modelo nokia a soma vem errada. como faço isto? de forma a obter o total de cada estrutura??? obrigada Link to comment Share on other sites More sharing options...
falk0n Posted December 6, 2007 at 11:45 PM Report Share #152806 Posted December 6, 2007 at 11:45 PM #include<stdio.h> #include<string.h> struct telemovel{ char modelo[20]; float preco; int unidade[4]; float total; }; void funcao( struct telemovel ptr[],int numerotelemoveis){ int i,soma=0,j; float preco; for(i=0;i<numerotelemoveis;i++){ soma=0; preco=0.0; for(j=0;j<4;j++){ soma=soma+ ptr[i].unidade[j]; preco=soma*(ptr[i].preco);//soma do 1 vector ptr[i].total=preco; } } for(i=0;i<numerotelemoveis;i++){ printf(" o modelo %s\n",ptr[i].modelo); printf(" o preco e %f\n", ptr[i].preco); printf(" o total facturado e %f\n",ptr[i].total); } } main(){ struct telemovel vet[2]={{"motorola",15.0,{10,10,10,10}},{"nokia",15.0,{10,10,10,10}}}; funcao(vet,2); fflush(stdin); getchar(); } experimenta assim a ver se e isto que tu queres e porque nao fazer isso com apontadores para nao teres que estar sempre a dizer qual e a dimensao maxima do array. Link to comment Share on other sites More sharing options...
TheDark Posted December 7, 2007 at 01:55 AM Report Share #152819 Posted December 7, 2007 at 01:55 AM Mais uma vez... ajudem, mas não dêem a papinha toda feita. Alguém disse há muito tempo: "Se alguém tem fome e lhe deres de comer, ficará agradecido até ter fome de novo; se o ensinares a caçar, não voltará a ter fome..." Ok ok, foi um bocado inventado, mas a ideia fundamental está lá 🙂 Desaparecido. Link to comment Share on other sites More sharing options...
falk0n Posted December 7, 2007 at 02:14 AM Report Share #152822 Posted December 7, 2007 at 02:14 AM Mais uma vez... ajudem, mas não dêem a papinha toda feita. Alguém disse há muito tempo: "Se alguém tem fome e lhe deres de comer, ficará agradecido até ter fome de novo; se o ensinares a caçar, não voltará a ter fome..." Ok ok, foi um bocado inventado, mas a ideia fundamental está lá 🙂 tb sou dessa opiniao mas se reparares ela ja tinha o codigo quase todo, a unica coisa que nao reparou foi que nao estava a fazer um reset dos valores a zero a quando da nova iteracao. foi a unica coisa que eu eu mostrei ja que toda a ideia esta la ... Link to comment Share on other sites More sharing options...
suzy Posted December 7, 2007 at 09:41 AM Author Report Share #152828 Posted December 7, 2007 at 09:41 AM 🙂 pois! , mas ainda nao esta correcto o programa, pois se repararem as duas estruturas (motorola e nokia tem valores iguais), logo tem de dar o mesmo resultado. neste codigo a 1 estrutura da 300 e a 2 estrutura da 600 isto tem a haver com a variavel soma, acho que como esta feita vai somar todas as estruturas 🙂😁 😁 como faço para isto dar certo, tou farta de bater 😁🙂 obrigada Link to comment Share on other sites More sharing options...
falk0n Posted December 7, 2007 at 10:00 AM Report Share #152831 Posted December 7, 2007 at 10:00 AM pois e que eu assim nao sei eu atraves de calculo o resultado a que cheguei foi 600 ou seja 10+10+10+10=40 40*15=600 se fizeres o que eu disse ambos telemoveis irao ter o valor total de 600. boas programacoes. Link to comment Share on other sites More sharing options...
suzy Posted December 7, 2007 at 10:05 AM Author Report Share #152833 Posted December 7, 2007 at 10:05 AM 🙂 desculpa la! ? foi erro meu ? sim!!!!!!!!1 o programa funciona 😄 Muito Obrigada falkon 👍 :thumbsup: Link to comment Share on other sites More sharing options...
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