Test Foro de elhacker.net SMF 2.1

Programación => Programación General => 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

#include <stdlib.h>
#include <stdio.h>

/*Ejercicio 107
Realizar un programa que solicite una cantidad entera.
Dada esa cantidad X debe solicitar X números y ordenarlos
de mayor a menor*/

int cantidad; //números a ordenar
int numero; //Cada uno de los números
int posicion=0; //Ubicación del array
int i,a,b,c,d; //varios enteros ja
int main()
{

    puts("ingresa la cantidad de numeros\n");
    scanf("%d",&cantidad); //Se ingresa la cantidad total de números a ordenar (obvio)

    int *numeros = (int*) malloc (cantidad*sizeof(int));
    int *resultado= (int*) malloc (cantidad*sizeof(int));

    for(i=0,d=0;i<cantidad;i++,d++)//Con este for se van guardando los números de a uno
    {
        printf("ingrese el numero %d\n",i+1);
        scanf("%d",&numero); //Se ingresa el número i del array
        numeros[d]=numero;//se guarda en la posición d del array números
    }

    printf("\n");

    for(c=0;c<cantidad;c++) //Ordena los números de menor a mayor
    {
        for(a=0;a<cantidad;a++)
    {
        if(numeros[c]<numeros[a])
        {
               posicion++;
        }
        }
        resultado[posicion]=numeros[c];
        posicion=0;
    }

    for (b=0;b<cantidad;b++) //Imprime el resultado
    {
         printf("%d\n",resultado[b]);
    }

    getchar();
    free(resultado);
    free(numeros);
    return EXIT_SUCCESS;
}

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
Cita de: XXX-ZERO-XXX 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 ;)

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 (cpp) [Seleccionar]
int numeros[cantidad]; //Aca se almacenan los numeros como se introducen
    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:
Cita de: [L]ord [R]NA en 15 Marzo 2011, 16:40 PM
Código (cpp) [Seleccionar]
int numeros[cantidad]; //Aca se almacenan los numeros como se introducen
   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
Cita de: [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.

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