Foro de elhacker.net

Programación => Ejercicios => Mensaje iniciado por: mauriciodelos en 8 Marzo 2011, 05:43 am



Título: Solución ejercicio C 107
Publicado por: mauriciodelos en 8 Marzo 2011, 05:43 am
Código
  1. #include <stdlib.h>
  2. #include <stdio.h>
  3.  
  4. /*Ejercicio 107
  5. Realizar un programa que solicite una cantidad entera.
  6. Dada esa cantidad X debe solicitar X números y ordenarlos
  7. de mayor a menor*/
  8.  
  9. int cantidad; //números a ordenar
  10. int numero; //Cada uno de los números
  11. int posicion=0; //Ubicación del array
  12. int i,a,b,c,d; //varios enteros ja
  13. int main()
  14. {
  15.  
  16.    puts("ingresa la cantidad de numeros\n");
  17.    scanf("%d",&cantidad); //Se ingresa la cantidad total de números a ordenar (obvio)
  18.  
  19.    int *numeros = (int*) malloc (cantidad*sizeof(int));
  20.    int *resultado= (int*) malloc (cantidad*sizeof(int));
  21.  
  22.    for(i=0,d=0;i<cantidad;i++,d++)//Con este for se van guardando los números de a uno
  23.    {
  24.        printf("ingrese el numero %d\n",i+1);
  25.        scanf("%d",&numero); //Se ingresa el número i del array
  26.        numeros[d]=numero;//se guarda en la posición d del array números
  27.    }
  28.  
  29.    printf("\n");
  30.  
  31.    for(c=0;c<cantidad;c++) //Ordena los números de menor a mayor
  32.    {
  33.        for(a=0;a<cantidad;a++)
  34.    {
  35.        if(numeros[c]<numeros[a])
  36.        {
  37.               posicion++;
  38.        }
  39.        }
  40.        resultado[posicion]=numeros[c];
  41.        posicion=0;
  42.    }
  43.  
  44.    for (b=0;b<cantidad;b++) //Imprime el resultado
  45.    {
  46.         printf("%d\n",resultado[b]);
  47.    }
  48.  
  49.    getchar();
  50.    free(resultado);
  51.    free(numeros);
  52.    return EXIT_SUCCESS;
  53. }
  54.  
  55.  


Título: Re: Solución ejercicio C 107
Publicado por: Edu en 8 Marzo 2011, 14:21 pm
Mmm me parece q podrias hacerlo distinto, usando while talvez porq no la piensas de esa forma y ves si te queda mejor ;)


Título: Re: Solución ejercicio C 107
Publicado por: mauriciodelos en 14 Marzo 2011, 23:22 pm
Mmm me parece q podrias hacerlo distinto, usando while talvez porq no la piensas de esa forma y ves si te queda mejor ;)

For por While? me gusta mas el for  ;D, es mas compacto, ademas el ciclo se repite un número finito de veces.


Título: Re: Solución ejercicio C 107
Publicado por: Edu en 14 Marzo 2011, 23:40 pm
Jejeje q loco viste? las cosas del while.. es un loco


Título: Re: Solución ejercicio C 107
Publicado por: [L]ord [R]NA en 15 Marzo 2011, 16:40 pm
Código
  1. int numeros[cantidad]; //Aca se almacenan los numeros como se introducen
  2.    int resultado[cantidad]; //Aca es donde se ordenan

Estas lineas solo son validas en C++, aparte estas utilizando cstdlib y cstdio por lo tanto estas atacando el problema desde C++ y no desde C.


Título: Re: Solución ejercicio C 107
Publicado por: mauriciodelos en 16 Marzo 2011, 16:35 pm

Con toda seguridad, es que estoy acostumbrado a c++, ahí están los cambios en las librerías.


Lo que no entiendo es esto:
Código
  1. int numeros[cantidad]; //Aca se almacenan los numeros como se introducen
  2.    int resultado[cantidad]; //Aca es donde se ordenan

Estas lineas solo son validas en C++...

¿por los comentarios será? ya está modificado, si es algo mas decime por favor.


Título: Re: Solución ejercicio C 107
Publicado por: mauriciodelos en 16 Marzo 2011, 16:36 pm
 ;D


Título: Re: Solución ejercicio C 107
Publicado por: [L]ord [R]NA en 18 Marzo 2011, 03:51 am
... al parecer no me entendiste, en C se necesita utilizar Malloc para crear Arrays dinamicos, en C++ los puedes crear simplemente asignando un valor a una variable X y luego declarando un array al cual le pasas la variable como cantidad de elementos... lo ultimo es lo que estas haciendo en el codigo.


Título: Re: Solución ejercicio C 107
Publicado por: mauriciodelos en 18 Marzo 2011, 05:05 am
... al parecer no me entendiste, en C se necesita utilizar Malloc para crear Arrays dinamicos, en C++ los puedes crear simplemente asignando un valor a una variable X y luego declarando un array al cual le pasas la variable como cantidad de elementos... lo ultimo es lo que estas haciendo en el codigo.

Por supuesto, no me acordaba, en realidad si, pero como el compilador no me dio errores creí que era válido.