Ayuda: con sustitución de funciones

Iniciado por do-while1, 5 Marzo 2013, 17:53 PM

0 Miembros y 3 Visitantes están viendo este tema.

do-while1

Sí me sirvió, de hecho ya lo adapté a mi programa solo que ahora ya no sale o bien no imprime los números ordenados. Por ejemplo en el primer código que puse al ingresar, no sé: 1 65 87 4 98 5 me aparecían así: 1, 4, 5, 65, 87, 98 ahorita intenté hacercelo en el código ya mmodificado pero me ti ra varios errores en cuanto a declaración de variables

leosansan

Cita de: do-while1 en  5 Marzo 2013, 21:59 PM
Sí me sirvió, de hecho ya lo adapté a mi programa solo que ahora ya no sale o bien no imprime los números ordenados. Por ejemplo en el primer código que puse al ingresar, no sé: 1 65 87 4 98 5 me aparecían así: 1, 4, 5, 65, 87, 98 ahorita intenté hacercelo en el código ya mmodificado pero me ti ra varios errores en cuanto a declaración de variables

Pues a mí me va bien éste:

Código (cpp) [Seleccionar]
#include<stdio.h>

int main()
{
   int n,i;
   float ma=0;
   printf("Introduce total de numeros: ");
   scanf("%d",&n);
   float num[n];
   for(i=0;i<n;i++){
       printf("Digita el numero %d: ",i+1);
       scanf("%f",&num[i]);
       ma+=num[i];
   }
   printf("La media de: ");
   for(i=0;i<n;i++)
       printf("%g,",num[i]);
   printf("\b es: %g",ma/n);
getch();
return 0;
}



Saluditos!. ...

do-while1

Cita de: leosansan en  5 Marzo 2013, 22:04 PM
Pues a mí me va bien éste:

Código (cpp) [Seleccionar]
#include<stdio.h>

int main()
{
   int n,i;
   float ma=0;
   printf("Introduce total de numeros: ");
   scanf("%d",&n);
   float num[n];
   for(i=0;i<n;i++){
       printf("Digita el numero %d: ",i+1);
       scanf("%f",&num[i]);
       ma+=num[i];
   }
   printf("La media de: ");
   for(i=0;i<n;i++)
       printf("%g,",num[i]);
   printf("\b es: %g",ma/n);
getch();
return 0;
}



Saluditos!. ...

Sí funciona de maravilla. Lo que mencionaba es que los imprime en el orden que ingresaste el número y no de menor a mayor.
Ahorita le moveré un poco a ver que pasa xD

leosansan

Cita de: do-while1 en  5 Marzo 2013, 22:27 PM
Sí funciona de maravilla. Lo que mencionaba es que los imprime en el orden que ingresaste el número y no de menor a mayor.
Ahorita le moveré un poco a ver que pasa xD

Para eso está "San Burbuja":

Código (cpp) [Seleccionar]
#include<stdio.h>

int main(){
    int n,i,j,temp;
    float ma=0;
    printf("Introduce total de numeros: ");
    scanf("%d",&n);
    float num[n];
    for(i=0;i<n;i++){
        printf("Digita el numero %d: ",i+1);
        scanf("%f",&num[i]);
        ma+=num[i];
    }
    printf("La media de: ");
    for (j=1; j <= n; j++)
for (i=0; i< n-1; i++)
if (num[i] > num[i+1]){
temp = num[i];
num[i] = num[i+1];
num[i+1] = temp;
}
    for(i=0;i<n;i++)
        printf("%g,",num[i]);
    printf("\b es: %g",ma/n);
getch();
return 0;
}


Saluditos campeón!....

do-while1

Leosansan mi amigo, si estuvieras cerca te invitaría unas buenas cervezas o algo jajajaja. Consulté con el profesor a veeeer si podía usar ese proceso o tampoco, pero me dijo que sí.
Ahora solo queda estudiar el código para poder implementarlo a futuro.

Les agradezco a todos por su gran ayuda

0xDani

@amchacon, en tu codigo no te has acordado de que suele ser correcto liberar la memoria?  :silbar:
I keep searching for something that I never seem to find, but maybe I won't, because I left it all behind!

I code for $$$
Hago trabajos en C/C++
Contactar por PM

leosansan

Cita de: amchacon en  5 Marzo 2013, 20:59 PM
Otra forma de implementarlo sin vectores. Gracias a la magia de los punteros:

Bueno, bueno ahí podríamos hablar de arrays asignados estáticamente o dinámicamente. Si declaro un puntero como *enteros puedo luego acceder a sus posiciones como enteros[i], que es la forma clásica de un array. ;)

Por cierto, el valor cero para salir de la introducción de los datos impide que se pueda entrar ese valor.


Saluditos!. ... :rolleyes:

amchacon

Cita de: 0xDani en  6 Marzo 2013, 16:51 PM
@amchacon, en tu codigo no te has acordado de que suele ser correcto liberar la memoria?  :silbar:
Eeeeh...  ;D

Da igual, al finalizar el programa se liberara toda la memoria reservada :)

Cita de: leosansan en  6 Marzo 2013, 17:47 PM
Bueno, bueno ahí podríamos hablar de arrays asignados estáticamente o dinámicamente. Si declaro un puntero como *enteros puedo luego acceder a sus posiciones como enteros[i], que es la forma clásica de un array. ;)

Por cierto, el valor cero para salir de la introducción de los datos impide que se pueda entrar ese valor.


Saluditos!. ... :rolleyes:
Sí, el cero es un punto debil. Quizás se podría sustituir con una cadena de texto "Fin", pero entonces tendría que transformar cadenas a enteros... No useis ceros!  :xD

En el código que he puesto ahí no creo ningún array. Todos son elementos individuales y por ello no puedo acceder con el operador []. Me daría un error en ejecución.

En este caso podría haberse resuelto con un array estático pero no siempre es posible. Te aventuro a que intentes crear en C el siguiente programa:

- Dado una lista de numeros terminados con un cero, calcula el numero mayor.

No puedes determinar el tamaño del array hasta que hayas terminado de guardar todos los números. Con array estáticos no puedes y con array dinámicos da bastantes problemas.
Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar

0xDani

Cita de: amchacon en  6 Marzo 2013, 21:00 PM
Eeeeh...  ;D

Da igual, al finalizar el programa se liberara toda la memoria reservada :)

Eso es dependiente del sistema operativo, aunque lo normal en uno moderno es que se libere al final, lo conveniente es liberarla  ;)
I keep searching for something that I never seem to find, but maybe I won't, because I left it all behind!

I code for $$$
Hago trabajos en C/C++
Contactar por PM

leosansan

Cita de: amchacon en  6 Marzo 2013, 21:00 PM
......................................................................................
Te aventuro a que intentes crear en C el siguiente programa:

- Dado una lista de numeros terminados con un cero, calcula el numero mayor.


Pues así, por ejemplo:

Código (cpp) [Seleccionar]
#include <stdio.h>
#include <stdlib.h>
#include <float.h>

int main(void){
    int i=0;
    float num,mayor=-FLT_MAX ;
    do {
        printf ("Introduzca el numero %d : ",i+1);
        scanf("%f",&num);
        while (getchar()!='\n');
        if (num > mayor)
            mayor = num;
        i++;
    }while (num!=0);
    printf ("\n\nEl mayor es: %g",mayor);
return EXIT_SUCCESS;
}



Saluditos!. ...