Solución ejercicio C 107

Iniciado por mauriciodelos, 8 Marzo 2011, 05:43 AM

0 Miembros y 1 Visitante están viendo este tema.

mauriciodelos


#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;
}

El fanatismo es la máxima estupidez humana.

Edu

Mmm me parece q podrias hacerlo distinto, usando while talvez porq no la piensas de esa forma y ves si te queda mejor ;)

mauriciodelos

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.
El fanatismo es la máxima estupidez humana.

Edu

Jejeje q loco viste? las cosas del while.. es un loco

[L]ord [R]NA

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.

mauriciodelos

#5

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.
El fanatismo es la máxima estupidez humana.

mauriciodelos

El fanatismo es la máxima estupidez humana.

[L]ord [R]NA

... 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.

mauriciodelos

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.
El fanatismo es la máxima estupidez humana.