• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

suzy

problema com estruturas

7 mensagens neste tópico

:eek: 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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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á :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

:) 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  :):cheesygrin: :cheesygrin: como faço para isto dar certo, tou farta de bater  :wallbash: :cheesygrin::)

obrigada

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

:) desculpa la!  :-[

foi erro meu  :-[ sim!!!!!!!!1 o programa funciona  :D Muito Obrigada falkon  :thumbsup: :thumbsup:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora