gonzalob

Untitled

Apr 9th, 2020
401
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.14 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int main()
  5. {
  6.     printf("Hello world!\n");
  7.     int arreglo[100]; // <-- capacidad fisica el arreglo
  8.     int validos = 0; // <-- cantidad de elementos cargados
  9.     char mander = 's';
  10.  
  11.     while ((validos<100) && (mander == 's'))
  12.     {
  13.         printf("ingrese un numero\n");
  14.         scanf("%d",&arreglo[validos]);
  15.         validos++;
  16.         printf("ingrese s para seguir \n");
  17.         fflush(stdin);
  18.         scanf("%c",&mander);
  19.     }
  20.  
  21.     int indice = 0;
  22.     while (indice < validos)
  23.     {
  24.         printf("%d\n",arreglo[indice]);
  25.         indice++;
  26.     }
  27.  
  28.     ordenacionSeleccion(arreglo,validos);
  29.  
  30.     indice = 0;
  31.     printf("ordenado!\n");
  32.     while (indice < validos)
  33.     {
  34.         printf("%d\n",arreglo[indice]);
  35.         indice++;
  36.     }
  37.  
  38.     return 0;
  39. }
  40.  
  41. void ordenacionSeleccion(int arreglo[], int validos)
  42. {
  43.     int posMenor = 0;
  44.     int aux = 0;
  45.     int indice = 0;
  46.     while (indice<validos)
  47.     {
  48.         posMenor = posmenor(arreglo,indice,validos);
  49.         //aca tengo la pos del menor
  50.         //intercambio
  51.        
  52.         aux = arreglo[posMenor]; //DONDE esta el menor
  53.         //aux ahora es el menor
  54.         arreglo[posMenor] = arreglo[indice]; //me llevo el actual hacia la posMenor
  55.         //me llevo el "más" grande (actual) hacia donde estaba el menor
  56.         arreglo[indice] = aux; //el menor viene a la pos actual
  57.         //actual > menor
  58.         indice++; //avanzo para buscar otro menor
  59.         //los menores sobre el lado izquierdo "ordenados"
  60.     }
  61. }
  62. //busco el menor pero a partir de una pos que es posInicial
  63. int posmenor(int arreglo[], int posInicial, int validos)
  64. {
  65.     int menor = arreglo[posInicial];//asumo que esta ahi
  66.     int posMenor = posInicial; //me guardo la pos
  67.     int indice = posInicial + 1; //busco en esa pos + 1
  68.     while (indice < validos) //hasta el fin del arreglo
  69.     {
  70.         if (menor > arreglo[indice]) //menor me mintio! :(
  71.         {
  72.             //reemplazos
  73.             menor = arreglo[indice];  //para comparar
  74.             posMenor = indice; //para retornar
  75.         }
  76.         indice++;
  77.     }
  78.     return posMenor;
  79. }
Advertisement
Add Comment
Please, Sign In to add comment