Ir ao conteúdo
  • Cadastre-se

(Duvida Estruturas de Dados) Problema para somar todos valores de uma lista simplesmente encadeada


v1c2rr
Ir à solução Resolvido por atlos,

Posts recomendados

Boa noite a todos!

Tem um exercicio que estou tentando fazer, que é esse:

 

Escreva uma função que receba um ponteiro para o primeiro elemento de uma lista simplesmente encadeada.  A função deve retornar a soma dos saldos dos clientes do sexo feminino (sexo=’f’). Considere as definições abaixo:

typedef struct lista{      int cliente;  char sexo; float saldo;     struct lista *prox;     }Lista;//protótipo da função:  float totClientes (Lista* lst)

Dai então, resolvi fazer esse código:

#include <stdio.h>#include <stdlib.h>typedef struct lista{        int cliente;        char sexo;        float saldo;        struct lista *prox;}Lista;Lista *cria_lista(){      return NULL;}Lista *insere_lista(Lista *l, int cliente, char sexo, float saldo){      Lista *novo=(Lista*) malloc(sizeof(Lista));      novo->cliente=cliente;      novo->sexo=sexo;      novo->saldo=saldo;      novo->prox=l;      return novo;}void exibe_lista(Lista *l, int cliente, char sexo, float saldo){     Lista *aux;     for(aux=l;aux!=NULL; aux=aux->prox){       printf("%d\t",aux->cliente);       printf("%c\t",aux->sexo);       printf("%f\t",aux->saldo);     printf("\n");     }}float totClientes (Lista* lst){      float total=0,soma;      Lista *aux;      for(aux=lst;aux!=NULL; aux=aux->prox){        total+=aux->saldo;        soma=total;        }      return soma;}        void menu(){     system("cls");     printf("Menu Lista\n");     printf("1 - insere\n");     printf("2 - mostra\n");     printf("3 - soma\n");     printf("9 - fim\n");}int main(){    Lista *li;    li=cria_lista(); //inicializa a lista com NULL    int opmenu, cli;    char sex;    float sal;        do{        menu();        scanf("%d",&opmenu);        switch(opmenu){           case 1: //insere                  printf("Digite a id do cliente: ");                  scanf("%d",&cli);                  fflush(stdin);                  printf("Digite o sexo: ");                  scanf("%c",&sex);                  fflush(stdin);                  printf("Digite o saldo: ");                  scanf("%f",&sal);                  fflush(stdin);                  li=insere_lista(li,cli,sex,sal);                  break;           case 2://mostra                  exibe_lista(li,cli,sex,sal);                  break;           case 3://soma                  totClientes(li);                  break;        }        system("pause");    }while(opmenu!=9);}       

só que como retorno a inserção e exibição dos mesmos é feita normalmente sem problema algum, mas na hora de somar os saldos e exibir seu total não acontece nada... gostaria de saber se tem algo faltando, e onde eu preciso melhorar a função? desde já muito obrigado!! 

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

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