[ create a new paste ] login | about

Link: http://codepad.org/EPHStTNb    [ raw code | output | fork ]

hmurcia - C++, pasted on Jun 22:
#include <iostream>
#include <cstring>
using namespace std;

class Carro {
  char placas[7];
  char marca[15];
  unsigned short modelo;
  unsigned short cilindraje;
 public:
  Carro(const char pl[], const char mrk[], unsigned short year, unsigned short cc) {
      strcpy(placas, pl);
      strcpy(marca, mrk);
      modelo = year;
      cilindraje = cc;
  }
  Carro() {
    strcpy(placas, ""); strcpy(marca, ""); modelo = cilindraje = 0; 
  }
  unsigned short getCilindraje() {
      return cilindraje;
  }
  void show() {
    if (strcmp(placas,""))
      cout << placas << " - " << marca << " - Modelo:" << modelo
           << ", " << cilindraje << " cc\n";
  }
};

void shellsort(unsigned short [][2], unsigned short);
void show(Carro [], unsigned short);
void show(Carro [], unsigned short [][2], unsigned short);
void tomarCilindraje(unsigned short [][2], Carro [], const int);

int main() {
    const int N = 10;
    Carro vehiculo[N] = {
       Carro("ARH210", "Mercedes Benz", 2007, 2500),
       Carro("YDE210", "Fiat", 2004, 2500),
       Carro("DEF210", "Renault", 2003, 2300),
       Carro("QRC210", "Dacia", 2008, 2100),
       Carro("JUA210", "Mercedes Benz", 2011, 3500),
       Carro("SOQ210", "Renault", 2000, 2000),
       Carro("CSZ210", "Fiatz", 1995, 1200),
       Carro("AFC210", "Renault", 1999, 1500)
    };

    show(vehiculo, N);

    // Almacena los cilinrajes en un arreglo unsigned short
    unsigned short cilind[N][2];
    tomarCilindraje(cilind, vehiculo, N);

    shellsort(cilind, N);

    cout << "\n\n\nAhora, los carros ordenados por cilindraje:\n\n";
    show(vehiculo, cilind, N);
    
    return 0;
}

void show(Carro car[], unsigned short n) {
  for (int k=0; k<n; k++)
    car[k].show();
}

void show(Carro car[], unsigned short v[][2], unsigned short n) {
  for (int k=0; k<n; k++)
    car[v[k][0]].show();
}

void tomarCilindraje(unsigned short dat[][2], Carro car[], const int P) {
  for (unsigned short i=0; i<P; i++) {
    dat[i][0] = i;
    dat[i][1] = car[i].getCilindraje();
  }
}

void shellsort(unsigned short a[][2], unsigned short n)
{
  unsigned short d, temp[2], i;
  d=n/2;
  while (d>=1)
  {
    for (i=0;i<n-d;i++)
    {
      if (a[i][1]>a[i+d][1])
      {
        temp[0]=a[i][0];
        temp[1]=a[i][1];
        a[i][0]=a[i+d][0];
        a[i][1]=a[i+d][1];
        a[i+d][0]=temp[0];
        a[i+d][1]=temp[1];
      }
    }
    if(d==1)
      return;
    d= (unsigned short)(d/2.0+0.5);
  }
}


Output:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
ARH210 - Mercedes Benz - Modelo:2007, 2500 cc
YDE210 - Fiat - Modelo:2004, 2500 cc
DEF210 - Renault - Modelo:2003, 2300 cc
QRC210 - Dacia - Modelo:2008, 2100 cc
JUA210 - Mercedes Benz - Modelo:2011, 3500 cc
SOQ210 - Renault - Modelo:2000, 2000 cc
CSZ210 - Fiatz - Modelo:1995, 1200 cc
AFC210 - Renault - Modelo:1999, 1500 cc



Ahora, los carros ordenados por cilindraje:

CSZ210 - Fiatz - Modelo:1995, 1200 cc
AFC210 - Renault - Modelo:1999, 1500 cc
SOQ210 - Renault - Modelo:2000, 2000 cc
QRC210 - Dacia - Modelo:2008, 2100 cc
DEF210 - Renault - Modelo:2003, 2300 cc
YDE210 - Fiat - Modelo:2004, 2500 cc
ARH210 - Mercedes Benz - Modelo:2007, 2500 cc
JUA210 - Mercedes Benz - Modelo:2011, 3500 cc


Create a new paste based on this one


Comments: