Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- * File: funciones.h
- * Author: Juanjose Tenorio
- *
- * Created on 22 de septiembre de 2014, 18:47
- */
- #ifndef FUNCIONES_H
- #define FUNCIONES_H
- void cuentas_insertion_sort(int*, double*, int*&, double*&, int);
- void ordenar_arreglo(int *,double *,int ,int);
- void imprimir_cuentas(int*, double*, int);
- #endif /* FUNCIONES_H */
- #include <cstdlib>
- #include <cstdio>
- #include "funciones.h"
- using namespace std;
- void cuentas_insertion_sort(int *cuenta,double*saldo, int*& ptrcuenta,double*& ptrsaldo,int longitud){
- int grouth;
- //para esta parte voy a verificar si se logro obtener 5 datos o no
- if(longitud%5==0) grouth=5;
- else grouth=longitud%5;
- //procedo a ordenar el arreglo por el metodo de insecion
- ordenar_arreglo(cuenta,saldo,0,grouth-1);
- if(ptrcuenta==NULL){//nueva cuenta
- //guardo en el heap
- ptrcuenta=new int[grouth];ptrsaldo=new double[grouth];
- printf("Inicio\n");
- for(int i=0;i<grouth;i++){
- ptrcuenta[i]=cuenta[i];ptrsaldo[i]=saldo[i];
- }//cargo valores
- }else{//procedere a mover los punteros
- int *ptrnuevacuenta=NULL;double *ptrnuevosaldo=NULL;
- int actual=0,crecimiento=0,nuevo=0;
- ptrnuevacuenta=new int [longitud];
- ptrnuevosaldo=new double [longitud];
- while(true){//procedo a insertar
- if(ptrcuenta[actual]>cuenta[crecimiento]){
- ptrnuevacuenta[nuevo]=cuenta[crecimiento];
- ptrnuevosaldo[nuevo]=saldo[crecimiento];
- nuevo++;crecimiento++;
- }else{
- ptrnuevacuenta[nuevo]=ptrcuenta[actual];
- ptrnuevosaldo[nuevo]=ptrsaldo[actual];
- actual++;nuevo++;
- }
- if(crecimiento==grouth){
- //acabe de revisar las cuentas y las inserte correctamente
- break;
- }
- }
- while(longitud!=nuevo){//lleno lo que me falta
- ptrnuevacuenta[nuevo]=ptrcuenta[actual];
- ptrnuevosaldo[nuevo]=ptrsaldo[actual];
- actual++;nuevo++;
- }
- delete[] ptrcuenta;
- delete[] ptrsaldo;
- ptrcuenta = ptrnuevacuenta;
- ptrsaldo = ptrnuevosaldo;
- }
- }
- void ordenar_arreglo(int *cuenta,double* saldo,int inicio,int growth){
- int i = inicio, j = growth, tmp_c;
- double tem_s;
- int pivot = cuenta[(inicio + growth) / 2];
- while (i <= j) {
- while (cuenta[i] < pivot)
- i++;
- while (cuenta[j] > pivot)
- j--;
- if (i <= j) {
- tmp_c = cuenta[i];
- tem_s = saldo[i];
- cuenta[i] = cuenta[j];
- cuenta[j] = tmp_c;
- saldo[i] = saldo[j];
- saldo[j] = tem_s;
- i++;
- j--;
- }
- }
- if (inicio < j)
- ordenar_arreglo(cuenta, saldo, inicio, j);
- if (i < growth)
- ordenar_arreglo(cuenta, saldo, i, growth);
- }
- void imprimir_cuentas(int*ptrCuentas, double*ptrSaldos, int len) {
- printf("--------------------Saldos Iniciales de las cuentas-------------------------\n");
- for (int i = 0; i < len; i++)
- printf("Nro. Cuenta: %d Saldo($): %10.2lf\n", ptrCuentas[i], ptrSaldos[i]);
- printf("----------------------------------------------------------------------------\n");
- }
- /*
- * File: main.cpp
- * Author: Juanjose
- *
- * Created on 22 de septiembre de 2014, 18:26
- */
- #include <cstdlib>
- #include <cstdio>
- #include "funciones.h"
- using namespace std;
- #define grouth 5
- int main(int argc, char** argv) {
- int cuentas[grouth]={0};double saldo[grouth]={0};
- int * ptrcuenta;double * ptrsaldo;
- ptrcuenta=NULL;ptrsaldo=NULL;//condicion de NULL
- int t,cont,longitud;
- bool nosale=true;
- while (nosale) {//habria encontrado el primer caracter el de los movimientos
- cont = 0;
- while ((nosale = scanf("%d", &cuentas[cont])) == 1) {
- scanf("%lf", &saldo[cont]);
- cont++;
- if (cont == 5)break;//ya lo hice crecer de 5 en 5
- }
- if (cont == 5) longitud += 5;
- else longitud += cont;
- cuentas_insertion_sort(cuentas,saldo, ptrcuenta,ptrsaldo,longitud);
- }
- imprimir_cuentas(ptrcuenta, ptrsaldo, longitud);
- delete [] ptrcuenta;
- delete [] ptrsaldo;
- return 0;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement