Advertisement
juanjo12x

LP_P5_2013_1

Sep 22nd, 2014
220
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.34 KB | None | 0 0
  1. /*
  2.  * File:   funciones.h
  3.  * Author: Juanjose Tenorio
  4.  *
  5.  * Created on 22 de septiembre de 2014, 18:47
  6.  */
  7.  
  8. #ifndef FUNCIONES_H
  9. #define FUNCIONES_H
  10.  
  11. void cuentas_insertion_sort(int*, double*, int*&, double*&, int);
  12. void ordenar_arreglo(int *,double *,int ,int);
  13. void imprimir_cuentas(int*, double*, int);
  14. #endif  /* FUNCIONES_H */
  15.  
  16. #include <cstdlib>
  17. #include <cstdio>
  18. #include "funciones.h"
  19. using namespace std;
  20. void cuentas_insertion_sort(int *cuenta,double*saldo, int*& ptrcuenta,double*& ptrsaldo,int longitud){
  21.     int grouth;
  22.     //para esta parte voy a verificar si se logro obtener 5 datos o no
  23.     if(longitud%5==0) grouth=5;
  24.     else grouth=longitud%5;
  25.     //procedo a ordenar el arreglo por el metodo de insecion
  26.     ordenar_arreglo(cuenta,saldo,0,grouth-1);
  27.     if(ptrcuenta==NULL){//nueva cuenta
  28.         //guardo en el heap
  29.         ptrcuenta=new int[grouth];ptrsaldo=new double[grouth];
  30.         printf("Inicio\n");
  31.         for(int i=0;i<grouth;i++){
  32.             ptrcuenta[i]=cuenta[i];ptrsaldo[i]=saldo[i];
  33.         }//cargo valores        
  34.     }else{//procedere a mover los punteros
  35.         int *ptrnuevacuenta=NULL;double *ptrnuevosaldo=NULL;
  36.         int actual=0,crecimiento=0,nuevo=0;
  37.         ptrnuevacuenta=new int [longitud];
  38.         ptrnuevosaldo=new double [longitud];
  39.         while(true){//procedo a insertar
  40.             if(ptrcuenta[actual]>cuenta[crecimiento]){
  41.                 ptrnuevacuenta[nuevo]=cuenta[crecimiento];
  42.                 ptrnuevosaldo[nuevo]=saldo[crecimiento];
  43.                 nuevo++;crecimiento++;
  44.             }else{
  45.                 ptrnuevacuenta[nuevo]=ptrcuenta[actual];
  46.                 ptrnuevosaldo[nuevo]=ptrsaldo[actual];
  47.                 actual++;nuevo++;
  48.             }
  49.             if(crecimiento==grouth){
  50.                 //acabe de revisar las cuentas y las inserte correctamente
  51.                 break;
  52.             }
  53.         }
  54.         while(longitud!=nuevo){//lleno lo que me falta
  55.             ptrnuevacuenta[nuevo]=ptrcuenta[actual];
  56.             ptrnuevosaldo[nuevo]=ptrsaldo[actual];
  57.             actual++;nuevo++;
  58.         }
  59.         delete[] ptrcuenta;
  60.         delete[] ptrsaldo;
  61.  
  62.         ptrcuenta = ptrnuevacuenta;
  63.         ptrsaldo = ptrnuevosaldo;
  64.     }
  65. }
  66. void ordenar_arreglo(int *cuenta,double* saldo,int inicio,int growth){
  67.     int i = inicio, j = growth, tmp_c;
  68.     double tem_s;
  69.     int pivot = cuenta[(inicio + growth) / 2];
  70.     while (i <= j) {
  71.         while (cuenta[i] < pivot)
  72.             i++;
  73.         while (cuenta[j] > pivot)
  74.             j--;
  75.         if (i <= j) {
  76.             tmp_c = cuenta[i];
  77.             tem_s = saldo[i];
  78.             cuenta[i] = cuenta[j];
  79.             cuenta[j] = tmp_c;
  80.             saldo[i] = saldo[j];
  81.             saldo[j] = tem_s;
  82.             i++;
  83.             j--;
  84.         }
  85.     }
  86.  
  87.     if (inicio < j)
  88.         ordenar_arreglo(cuenta, saldo, inicio, j);
  89.     if (i < growth)
  90.         ordenar_arreglo(cuenta, saldo, i, growth);
  91. }
  92. void imprimir_cuentas(int*ptrCuentas, double*ptrSaldos, int len) {
  93.     printf("--------------------Saldos Iniciales de las cuentas-------------------------\n");
  94.     for (int i = 0; i < len; i++)
  95.         printf("Nro. Cuenta: %d   Saldo($): %10.2lf\n", ptrCuentas[i], ptrSaldos[i]);
  96.     printf("----------------------------------------------------------------------------\n");
  97. }
  98. /*
  99.  * File:   main.cpp
  100.  * Author: Juanjose
  101.  *
  102.  * Created on 22 de septiembre de 2014, 18:26
  103.  */
  104.  
  105. #include <cstdlib>
  106. #include <cstdio>
  107. #include "funciones.h"
  108. using namespace std;
  109. #define grouth 5
  110. int main(int argc, char** argv) {
  111.     int cuentas[grouth]={0};double saldo[grouth]={0};
  112.     int * ptrcuenta;double * ptrsaldo;
  113.     ptrcuenta=NULL;ptrsaldo=NULL;//condicion de NULL
  114.     int t,cont,longitud;
  115.     bool nosale=true;
  116.    
  117.     while (nosale) {//habria encontrado el primer caracter el de los movimientos
  118.         cont = 0;
  119.         while ((nosale = scanf("%d", &cuentas[cont])) == 1) {
  120.             scanf("%lf", &saldo[cont]);
  121.             cont++;
  122.             if (cont == 5)break;//ya lo hice crecer de 5 en 5
  123.         }
  124.         if (cont == 5) longitud += 5;
  125.         else longitud += cont;
  126.         cuentas_insertion_sort(cuentas,saldo, ptrcuenta,ptrsaldo,longitud);
  127.        
  128.     }
  129.     imprimir_cuentas(ptrcuenta, ptrsaldo, longitud);
  130.  
  131.     delete [] ptrcuenta;
  132.     delete [] ptrsaldo;
  133.     return 0;
  134.     return 0;
  135. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement