jueves, 2 de julio de 2015

Suma y promedio de una lista

20.8 Escriba un programa para insertar 25 enteros aleatorios de 0 a 100 en orden, en un objeto lista enlazada. El programa deberá calcular la suma de los elementos y el promedio de punto f lotante de los elementos.
 

/*
* C++ Suma y promedio de una lista simple
*
*/
 
#include <iostream>
#include <cstdlib>
 
using namespace std;
 
struct nodo{
       int nro;        // en este caso es un numero entero
       struct nodo *sgte;
};
 
typedef struct nodo *Tlista,*Tlista2;
 
Tlista inicio, fin;
Tlista2 inicio2,fin2;
 
void generarLista( Tlista &inicio, Tlista &fin, int n ) 
{
     Tlista q, t;
     Tlista r, s;
     
     for(int i=0; i<n; i++)
     {
         q = new(struct nodo);
         q->nro = rand()%100;
         
         r = new(struct nodo);
         r->nro = q->nro;
         
         if(inicio==NULL)
         {
              q->sgte = inicio;
              inicio  = q;
              fin     = q; 
         }
         else
         {
              q->sgte   = fin->sgte;
              fin->sgte = q;
              fin       = q;
         }
     }
     
     cout<<"\n\n\tLista de numeros generados... "<<endl;
}
  
 
void reportarLista(Tlista inicio)
{
     
     while(inicio != NULL)
     {
          cout << inicio->nro<<"  " ;
          inicio = inicio->sgte;
     }
 
}
 
void ordenarLista(Tlista lista)
{
     Tlista actual , siguiente;
     int t;
     
     actual = lista;
     while(actual->sgte != NULL)
     {
          siguiente = actual->sgte;
          
          while(siguiente!=NULL)
          {
               if(actual->nro > siguiente->nro)
               {
                    t = siguiente->nro;
                    siguiente->nro = actual->nro;
                    actual->nro = t;          
               }
               siguiente = siguiente->sgte;                    
          }    
          actual = actual->sgte;
          siguiente = actual->sgte;
           
     }
}
 
int suma( Tlista inicio )
{
    int suma = 0;
    while( inicio )
    {
        suma = suma + inicio->nro;
        inicio = inicio->sgte;
    }
    return suma;
}

/*                        Funcion Principal
------------------------------------------------------------------*/
 
int main()
{
    inicio = NULL;
    fin    = NULL;
    float sumar;
 
    system("color 0b");
    
    generarLista( inicio, fin, 25 );
    ordenarLista( inicio );
    cout<<"\n\n LISTA:\n\n";
    reportarLista( inicio );  
    sumar = suma( inicio ); 
    cout<<"\n\nsuma= "<<sumar<<"  promedio= "<<sumar/25<<"\n\n\n";      
    
 
   system("pause");
   
   return 0;
}

No hay comentarios.:

Publicar un comentario