tutorfree

Soma e Conta elementos da Lista

Jun 28th, 2016
488
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.49 KB | None | 0 0
  1. /*********************************************************
  2.  *                                                       *
  3.  *         Isto é apenas um exercício de aluno           *
  4.  *         Não espere um conteúdo profissional            *
  5.  *                                                       *
  6.  *********************************************************/
  7. #include <stdio.h>
  8.  
  9. #ifdef WIN32
  10.     #include <conio.h>
  11.     #define LIMPA_TELA system("cls")
  12. #else
  13.     #include <ncurses.h>
  14.     #define LIMPA_TELA system("clear")
  15. #endif // WIN32
  16.  
  17. typedef struct lista
  18. {
  19.     //criação de uma estrutura lista contendo o a variavel tipo inteira "item" e uma estrutura tipo ponteiro "next"
  20.     int item;
  21.     struct lista *next;
  22. }Lista;
  23.  
  24.  
  25. //Como quesito do exercicio 7 item A, a função que conta os elementos da lista e retorna o valor a função principal
  26. int contar_lista(Lista *l)
  27. {
  28.     int cont = 0;
  29.     Lista *auxiliar = l;
  30.  
  31.     //criação de uma estrutura auxiliar tipo ponteiro, igualando com a estrutura recebida pela função
  32.     while(auxiliar != NULL)
  33.     {
  34.         // enquanto a estrutura auxiliar for diferente de nulo, ou seja, apresentar conteudo
  35.         cont++; //incrementa o contador
  36.         auxiliar = auxiliar -> next; //move a lista para a proxima estrutura
  37.     }
  38.     free(auxiliar);
  39.     return cont; //retorna o numero de elementos da lista
  40. }
  41.  
  42.  
  43. //função para inserir dados na lista
  44. Lista *insere_lista(Lista *l , int dado)
  45. {
  46.     Lista *novo = (Lista*)malloc (sizeof(Lista));   //alocação de memoria, cria estrutura nova
  47.     novo -> item = dado;                            //item digitado pelo usuario será incluido na lista
  48.     novo -> next = l;                               // lista enviada para função será igual a "next", estrutura tipo ponteiro, pertencente a lista "novo"
  49.     return novo;                                    //retorna a lista atualizada
  50. }
  51.  
  52.  
  53. //função que soma todos os elementos da lista
  54. //exercicio 7 item B
  55. int soma_elementos(Lista *l)
  56. {
  57.     int soma = 0;
  58.     Lista *auxiliar = l; //criação de lista auxiliar , igualando a lista l, a enviada para função
  59.  
  60.     while(auxiliar != NULL) //enquanto a lista auxiliar e diferente de nulo
  61.     {
  62.         soma += auxiliar -> item;   //soma o "item" da lista em análise a variável "soma"
  63.         auxiliar = auxiliar -> next;  //movimentação da lista para proxima
  64.     }
  65.     free(auxiliar);
  66.     return soma;   //retorna valor da soma
  67. }
  68.  
  69. //função para criar a lista em si
  70. Lista *cria_lista()
  71. {
  72.     return NULL;
  73. }
  74.  
  75. void menu()
  76. {
  77.     LIMPA_TELA;
  78.     printf("\n1 - Inserir ");
  79.     printf("\n2 - Exibir quantidade de elementos ");
  80.     printf("\n3 - Exibir soma dos elementos ");
  81.     printf("\n4 - Sair\n\n");
  82. }
  83.  
  84. //funcao principal
  85. int main()
  86. {
  87.     Lista *l = cria_lista();
  88.     int op, dado;
  89.  
  90.     //inicio do laco de repeticao
  91.     do
  92.     {
  93.         menu();
  94.         fflush(stdin);
  95.         scanf("%i",&op);
  96.         switch(op)
  97.         {
  98.             case 1:
  99.                 printf("\n\nDigite o valor:");
  100.                 fflush(stdin);
  101.                 scanf("%d",&dado);
  102.                 l = insere_lista( l , dado);
  103.                 break;
  104.             case 2:
  105.                 printf("\n\nNumero de elementos da lista: %d",contar_lista(l));
  106.                 getch();
  107.                 break;
  108.             case 3:
  109.                 printf("\n\nSoma dos elementos da lista: %d",soma_elementos(l));
  110.                 getch();
  111.                 break;
  112.         }
  113.     }
  114.     while(op != 4);
  115. }
Advertisement
Add Comment
Please, Sign In to add comment