Exemple #1
0
static int spec_enhance_SHS (double a[], long n) {
	if (n < 2) {
		return 0;
	}
	autoNUMvector<long> posmax (1, (n + 1) / 2);
	long nmax = 0;
	if (a[1] > a[2]) {
		posmax[++nmax] = 1;
	}
	for (long i = 2; i <= n - 1; i++) if (a[i] > a[i - 1] && a[i] >= a[i + 1]) {
			posmax[++nmax] = i;
		}
	if (a[n] > a[n - 1]) {
		posmax[++nmax] = n;
	}
	if (nmax == 1) {
		for (long j = 1; j <= posmax[1] - 3; j++) {
			a[j] = 0;
		}
		for (long j = posmax[1] + 3; j <= n; j++) {
			a[j] = 0;
		}
	} else {
		for (long i = 2; i <= nmax; i++) {
			for (long j = posmax[i - 1] + 3; j <= posmax[i] - 3; j++) {
				a[j] = 0;
			}
		}
	}
	return 1;
}
Exemple #2
0
void ordenar2(int value, int data[])
{

  int temp, maximo, minimo, valin, valfn, posmx, posmn;

  //guardamos los valores del maximo y minimo
  maximo = max(value, data);
  minimo = min(value, data);

 //guardamos las posiciones en las que se encuentran el max y min
 posmx = posmax(maximo, value, data);
 posmn = posmin(minimo, value, data);

 //guardamos los valores que se encuentran en
 //la 1era y ultima posicion actualmente para
 //situarlos en las posiciones de las que van
 //a salir el min y max, siempre que el min
 //o max no esten ya situados alli
 if(data[0] != minimo)
 {
   valin = data[0];
   //posicionamos el valor del [inicio]
   data[posmn] = valin;
 }

 if(data[value-1] != maximo)
 {
   valfn = data[value - 1];
   //posicionamos el valor del [final]
   data[posmx] = valfn;
 }

 //posicionamos al max y min
 data[value - 1] = maximo;
 data[0] = minimo;

  //i va de 1 al numero de elementos del arreglo
  for(int i = 1; i < value; i++)

      //j va de 1 al numero de elementos del arreglo menos i
      for(int j = 1; j < (value-1) - i; j++)//definicion de n y n + 1

	//si el valor mayor esta a la izquierda este cambia de posicion,
       //y tomara la posicion del valor con el que se lo comparo
      //previamente y es la unica condicion para que se ejecute

	if(data[j] > data[j + 1])
	{
	  //utilizamos una variable auxiliar para realizar
	 //el cambio de posiciones

	  temp = data[j];         // t = d
	  data[j] = data[j + 1];  // d = d1  //los valores se intercambian
	  data[j + 1] = temp;     // d1 = t
	}

}//void ordenar2(int, int[])