Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: do-while1 en 5 Marzo 2013, 17:53 pm



Título: Ayuda: con sustitución de funciones
Publicado por: do-while1 en 5 Marzo 2013, 17:53 pm
Buen día, tengo una duda. En el instituto nos han pedido un programa que nos de la media aritmética de varios valores. Hice el siguiente código:

Código:
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<math.h>
main()
{
    int n,i;
    float c,ma,*a;
     
 
    printf("Introduce n\n");
    scanf("%d",&n);
    a=(float*)malloc(sizeof(float)*n);
    printf("Digita los %d numeros\n",n);
    for(i=0;i<n;i++){
                     scanf("%f",&a[i]);
                     }
    printf("Los %d numeros que ingresaste son:\n",n);
    for(i=0;i<n;i++){
                     printf("%f\n",a[i]);
                     }
    c=0;
    for(i=0;i<n;i++){
                       c+=a[i];
                       }
    ma=c/n;
    printf("La media es: %f\n",ma);
                                                       
 getch();
}

El programa ya está funcionando como el profesor quería, excepto por una cosa, a pesar de que me aplaudió el uso del arreglo de números no me ha permitido usar la función sizeof así como tampoco  la función malloc dentro del programa pues dice "aun no las hemos implementado junto al resto de la clase" ^^ y me ha obligado a cambiar el código con funciones que ya he usado en clase, pero,  el problema es que no encuentro función alguna que le pueda quedar al programa.
Se podría usar algo más básico y que no genere muchos cambios en el código?


Título: Re: Ayuda: con sustitución de funciones
Publicado por: 0xDani en 5 Marzo 2013, 19:11 pm
Usa un array estatico, o un VLA (Variable Length Array) y le dices a tu profesor que estas compilando en C99!

Personalmente yo le diria que le den por culo que no me corte las alas y me deje usar cosas mas avanzadas si tengo mas nivel. Vamos que pasaria de el, basicamente.

Con el VLA seria asi:

Código
  1. printf("Introduce n\n");
  2.    scanf("%d",&n);
  3.    float a[n]; /* Recuerda que la primera declaracion de "a" debe ser esta,
  4.                        quita la de mas arriba */

Cualquier compilador estandar en modo C99 te lo debe aceptar.

Saludos.

PD: De verdad estudiais C en el instituto? Vives en España?


Título: Re: Ayuda: con sustitución de funciones
Publicado por: leosansan en 5 Marzo 2013, 19:11 pm

Buen día, tengo una duda. En el instituto nos han pedido un programa que nos de la media aritmética de varios valores.....................


Pues a lo simple:

Código
  1. #include<stdio.h>
  2.  
  3. int main()
  4. {
  5.    int n,i;
  6.    float num,ma=0;
  7.    printf("Introduce total de numeros: ");
  8.    scanf("%d",&n);
  9.    for(i=0;i<n;i++){
  10.        printf("Digita el numero %d: ",i+1);
  11.        scanf("%f",&num);
  12.        ma+=num;
  13.    }
  14.    printf("La media es: %g\n",ma/n);
  15. getch();
  16. return 0;
  17. }
  18.  
  19.  


Pero se me hace algo "elemental" para tu nivel.

Saluditos!. ...(http://st.forocoches.com/foro/images/smilies/aaaaa.gif)


Título: Re: Ayuda: con sustitución de funciones
Publicado por: do-while1 en 5 Marzo 2013, 19:48 pm
Personalmente yo le diria que le den por culo que no me corte las alas y me deje usar cosas mas avanzadas si tengo mas nivel. Vamos que pasaria de el.

PD: De verdad estudiais C en el instituto? Vives en España?

jajajaja ganas no me faltan de decirselo, en grados anteriores un maestro que originalmente nos inculcaba taller de programación nos enseñó C++ y claro el nos decía las funciones más básicas pero también nos mostraba como un plus funciones para alguien más  avanzado, no digo que yo lo sea haha pero pues no cae nada mal querer ver más allá aunque apenas seas un estuidiante.

Y por lo otro, no vivo en España :D  Soy de México y ya sea escuela pública o privada en el plan de estudio se exige ver aunque sea por mínimo C, pero aquí en mi instituto ya han abusado en cuanto a ver este lenguaje, yo hubiera preferido cuando menos ver Basic o C# jajaja

Muchas Gracias


Título: Re: Ayuda: con sustitución de funciones
Publicado por: do-while1 en 5 Marzo 2013, 19:53 pm

Pero se me hace algo "elemental" para tu nivel.

jajaja creo que anteriormente me habías ayudado igual con algo muy elemental pero es que muchas veces me pasa que al estár tan "concentrado" jaja se me pasan esos detalles. xD
Y bueno espero en verdad tener un buen nivel en C al menos tener una satisfacción personal jajaja

Muchas gracias


Título: Re: Ayuda: con sustitución de funciones
Publicado por: amchacon en 5 Marzo 2013, 20:59 pm
Otra forma de implementarlo sin vectores. Gracias a la magia de los punteros:

Código
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #include<math.h>
  4.  
  5. struct Eslabon
  6. {
  7.    int N;
  8.    Eslabon* Anterior;
  9. };
  10. int main()
  11. {
  12.    Eslabon* Numero = (Eslabon*)malloc(sizeof(Eslabon));
  13.    Eslabon* Buffer;
  14.  
  15.    int Cantidad;
  16.    int Total = 0;
  17.  
  18.    Numero->Anterior = NULL;
  19.  
  20.    do
  21.    {
  22.        printf("Inserta numeros, introduce 0 para finalizar: ");
  23.        scanf("%d",&Numero->N);
  24.  
  25.        if (Numero->N != 0)
  26.        {
  27.            Buffer = Numero;
  28.            Numero = (Eslabon*)malloc(sizeof(Eslabon));
  29.            Numero->Anterior = Buffer;
  30.        }
  31.    }while(Numero->N != 0);
  32.  
  33.    // Desliamos la cadena
  34.  
  35.    Cantidad = Numero->N;
  36.  
  37.    while (Numero->Anterior != NULL)
  38.    {
  39.        Numero = Numero-> Anterior;
  40.        Cantidad += Numero->N;
  41.        Total++;
  42.    }
  43.  
  44.    printf("La media es %d ",Cantidad/Total);
  45.    getchar();
  46.  
  47. return 0;
  48. }


Título: Re: Ayuda: con sustitución de funciones
Publicado por: leosansan en 5 Marzo 2013, 21:12 pm
Una forma de implementarlo sin vectores. Gracias a la magia de los punteros:

.....................................

¡La de dios!, que pasada. ¿Pero no has leído que no le dejan usa " ni " malloc?. . Creo que se trataba de hacerlo "tipo" principiantes, ya que sólo pedía calcular la media, para nada se hablaba de "guardar" los datos entrantes.

Eso si amchacon, pedazo de código ´pa matar moscas a cañonazos .......

Saluditos!. ...
(http://st.forocoches.com/foro/images/smilies/applaudit.gif)


Título: Re: Ayuda: con sustitución de funciones
Publicado por: amchacon en 5 Marzo 2013, 21:20 pm
Para esta situación no era lo más adecuado, pero ya que todos ponían su código yo también quería xDDD

Esta bien para las situaciones en las cuales, no puedas saber cuantos numeros vas a guardar.


Título: Re: Ayuda: con sustitución de funciones
Publicado por: do-while1 en 5 Marzo 2013, 21:34 pm
Pues resulta, chicos, que el "profe" me ha rechazado una vez más el código por que le faltó el arreglo jajajaja.


Título: Re: Ayuda: con sustitución de funciones
Publicado por: amchacon en 5 Marzo 2013, 21:52 pm
Código
  1. printf("Introduce n\n");
  2.    scanf("%d",&n);
  3.    float a[n]; /* Recuerda que la primera declaracion de "a" debe ser esta,
  4.                        quita la de mas arriba */
No te sirve esto?. Solo te falta llenar los datos y calcular la media.


Título: Re: Ayuda: con sustitución de funciones
Publicado por: 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


Título: Re: Ayuda: con sustitución de funciones
Publicado por: leosansan en 5 Marzo 2013, 22:04 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
  1. #include<stdio.h>
  2.  
  3. int main()
  4. {
  5.    int n,i;
  6.    float ma=0;
  7.    printf("Introduce total de numeros: ");
  8.    scanf("%d",&n);
  9.    float num[n];
  10.    for(i=0;i<n;i++){
  11.        printf("Digita el numero %d: ",i+1);
  12.        scanf("%f",&num[i]);
  13.        ma+=num[i];
  14.    }
  15.    printf("La media de: ");
  16.    for(i=0;i<n;i++)
  17.        printf("%g,",num[i]);
  18.    printf("\b es: %g",ma/n);
  19. getch();
  20. return 0;
  21. }
  22.  
  23.  

Saluditos!. ...(http://st.forocoches.com/foro/images/smilies/simba1.gif)


Título: Re: Ayuda: con sustitución de funciones
Publicado por: do-while1 en 5 Marzo 2013, 22:27 pm
Pues a mí me va bien éste:

Código
  1. #include<stdio.h>
  2.  
  3. int main()
  4. {
  5.    int n,i;
  6.    float ma=0;
  7.    printf("Introduce total de numeros: ");
  8.    scanf("%d",&n);
  9.    float num[n];
  10.    for(i=0;i<n;i++){
  11.        printf("Digita el numero %d: ",i+1);
  12.        scanf("%f",&num[i]);
  13.        ma+=num[i];
  14.    }
  15.    printf("La media de: ");
  16.    for(i=0;i<n;i++)
  17.        printf("%g,",num[i]);
  18.    printf("\b es: %g",ma/n);
  19. getch();
  20. return 0;
  21. }
  22.  
  23.  

Saluditos!. ...(http://st.forocoches.com/foro/images/smilies/simba1.gif)

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


Título: Re: Ayuda: con sustitución de funciones
Publicado por: leosansan en 5 Marzo 2013, 22:53 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
  1. #include<stdio.h>
  2.  
  3. int main(){
  4.    int n,i,j,temp;
  5.    float ma=0;
  6.    printf("Introduce total de numeros: ");
  7.    scanf("%d",&n);
  8.    float num[n];
  9.    for(i=0;i<n;i++){
  10.        printf("Digita el numero %d: ",i+1);
  11.        scanf("%f",&num[i]);
  12.        ma+=num[i];
  13.    }
  14.    printf("La media de: ");
  15.    for (j=1; j <= n; j++)
  16. for (i=0; i< n-1; i++)
  17. if (num[i] > num[i+1]){
  18. temp = num[i];
  19. num[i] = num[i+1];
  20. num[i+1] = temp;
  21. }
  22.    for(i=0;i<n;i++)
  23.        printf("%g,",num[i]);
  24.    printf("\b es: %g",ma/n);
  25. getch();
  26. return 0;
  27. }
  28.  

Saluditos campeón!....(http://st.forocoches.com/foro/images/smilies/simba2.gif)


Título: Re: Ayuda: con sustitución de funciones
Publicado por: do-while1 en 5 Marzo 2013, 23:03 pm
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


Título: Re: Ayuda: con sustitución de funciones
Publicado por: 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:


Título: Re: Ayuda: con sustitución de funciones
Publicado por: leosansan en 6 Marzo 2013, 17:47 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
Código:
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:


Título: Re: Ayuda: con sustitución de funciones
Publicado por: amchacon en 6 Marzo 2013, 21:00 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 :)

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
Código:
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.


Título: Re: Ayuda: con sustitución de funciones
Publicado por: 0xDani en 6 Marzo 2013, 21:33 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  ;)


Título: Re: Ayuda: con sustitución de funciones
Publicado por: leosansan en 6 Marzo 2013, 22:35 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
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <float.h>
  4.  
  5. int main(void){
  6.    int i=0;
  7.    float num,mayor=-FLT_MAX ;
  8.    do {
  9.        printf ("Introduzca el numero %d : ",i+1);
  10.        scanf("%f",&num);
  11.        while (getchar()!='\n');
  12.        if (num > mayor)
  13.            mayor = num;
  14.        i++;
  15.    }while (num!=0);
  16.    printf ("\n\nEl mayor es: %g",mayor);
  17. return EXIT_SUCCESS;
  18. }
  19.  
  20.  

Saluditos!. ...(http://st.forocoches.com/foro/images/smilies/dancer2.gif)


Título: Re: Ayuda: con sustitución de funciones
Publicado por: amchacon en 6 Marzo 2013, 23:06 pm
Pues así, por ejemplo:

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <float.h>
  4.  
  5. int main(void){
  6.    int i=0;
  7.    float num,mayor=-FLT_MAX ;
  8.    do {
  9.        printf ("Introduzca el numero %d : ",i+1);
  10.        scanf("%f",&num);
  11.        while (getchar()!='\n');
  12.        if (num > mayor)
  13.            mayor = num;
  14.        i++;
  15.    }while (num!=0);
  16.    printf ("\n\nEl mayor es: %g",mayor);
  17. return EXIT_SUCCESS;
  18. }
  19.  
  20.  

Saluditos!. ...(http://st.forocoches.com/foro/images/smilies/dancer2.gif)
Debo ser el rey de las cosas complicadas, eso no se me había ocurrido xD.

En su lugar tendría que haber dicho que ordenases esos numeros... Así no te ahorrarias de almacenarlos  ;D


Título: Re: Ayuda: con sustitución de funciones
Publicado por: 85 en 7 Marzo 2013, 03:10 am
sizeof es un operador
http://msdn.microsoft.com/es-es/library/0w557fh7.aspx

por qué una función?

en varios lugares le dicen función  :o
http://www.it.uc3m.es/labas/course_notes/dynamic_memory_sizeof_es.html

será porque se usa como una función?



Título: Re: Ayuda: con sustitución de funciones
Publicado por: rir3760 en 7 Marzo 2013, 03:23 am
Debo ser el rey de las cosas complicadas, eso no se me había ocurrido xD.

En su lugar tendría que haber dicho que ordenases esos numeros... Así no te ahorrarias de almacenarlos
En esa linea un ejercicio mencionado ocasionalmente es el calculo de la mediana: para encontrar al elemento central primero se debe ordenar la lista.

Un saludo


Título: Re: Ayuda: con sustitución de funciones
Publicado por: rir3760 en 7 Marzo 2013, 03:41 am
Debo ser el rey de las cosas complicadas, eso no se me había ocurrido xD.

En su lugar tendría que haber dicho que ordenases esos numeros... Así no te ahorrarias de almacenarlos
Siguiendo esa linea un ejercicio seria el calculo de la mediana: para encontrar el elemento al centro primero debe ordenar la lista.

----

en varios lugares le dicen función  :o
http://www.it.uc3m.es/labas/course_notes/dynamic_memory_sizeof_es.html

será porque se usa como una función?
Considerando que para obtener el tamaño de un tipo los paréntesis son obligatorios (con las expresiones no) me parece un error un tanto extraño (en algunos tutoriales).

Caso similar con las sentencias de retorno, frecuentemente se publican programas en estos foros utilizando paréntesis en la forma "return(N);". No se necesitan pero por alguna (extraña) razón los ponen.

Un saludo


Título: Re: Ayuda: con sustitución de funciones
Publicado por: 85 en 7 Marzo 2013, 05:01 am
Siguiendo esa linea un ejercicio seria el calculo de la mediana: para encontrar el elemento al centro primero debe ordenar la lista.

----
Considerando que para obtener el tamaño de un tipo los paréntesis son obligatorios (con las expresiones no) me parece un error un tanto extraño (en algunos tutoriales).

Caso similar con las sentencias de retorno, frecuentemente se publican programas en estos foros utilizando paréntesis en la forma "return(N);". No se necesitan pero por alguna (extraña) razón los ponen.

Un saludo


AHAHAHAHAHAHA si RIR eso hace al codestyle de cada uno XD, ya se que lo decís por mi  ;-)



Título: Re: Ayuda: con sustitución de funciones
Publicado por: rir3760 en 7 Marzo 2013, 05:53 am
Honestamente (y sin mala intención) no lo decía como una critica hacia ti.

Es un estilo relativamente usual, revisando mis mensajes el mas viejo es del 2011: Problemas con una funcion en c (http://foro.elhacker.net/programacion_cc/problemas_con_una_funcion_en_c-t339346.0.html).

Un saludo


Título: Re: Ayuda: con sustitución de funciones
Publicado por: leosansan en 7 Marzo 2013, 07:28 am
Otra forma de implementarlo sin vectores. Gracias a la magia de los punteros:

Código
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #include<math.h>
  4.  
  5. struct Eslabon
  6. {
  7.    int N;
  8.    Eslabon* Anterior;
  9. };
  10. int main()
  11. {
  12.    Eslabon* Numero = (Eslabon*)malloc(sizeof(Eslabon));
  13.    ...........................................................
  14. [/quote]

amchacon ¿has usado algún modo especial al compilar. porque me saltan múltiples errores y en modo no pedantic?:

|8|error: expected specifier-qualifier-list before 'Eslabon'|
||In function 'main':|ntitled38.
|12|error: 'Eslabon' undeclared (first use in this function)|
12|error: (Each undeclared identifier is reported only once|
|12|error: for each function it appears in.)|
|12|error: 'Numero' undeclared (first use in this function)|
|12|error: expected expression before ')' token|
|13|error: 'Buffer' undeclared (first use in this function)|
|28|error: expected expression before ')' token|
||=== Build finished: 8 errors, 0 warnings (0 minutes, 0 seconds) ===|

Y rn PellesC:

Building 0.obj.
\0.c(8): error #2001: Syntax error: expected '}' but found 'Eslabon'.
\0.c(9): error #2156: Unrecognized declaration.
\0.c(12): error #2048: Undeclared identifier 'Eslabon'.
0.c(12): error #2048: Undeclared identifier 'Numero'.
\0.c(12): error #2039: Illegal expression.
\0.c(12): error #2001: Syntax error: expected ')' but found 'malloc'.
\0.c(12): error #2088: Lvalue required.
\0.c(12): error #2001: Syntax error: expected ';' but found 'malloc'.
\0.c(13): error #2048: Undeclared identifier 'Buffer'.
\0.c(18): error #2112: Left operand of '->' has incompatible type 'int'.
\0.c(18): error #2168: Operands of '=' have incompatible types 'int' and 'void *'.
0.c(23): error #2112: Left operand of '->' has incompatible type 'int'.
\0.c(25): error #2112: Left operand of '->' has incompatible type 'int'.
\0.c(28): error #2039: Illegal expression.
C\0.c(28): error #2001: Syntax error: expected ')' but found 'malloc'.
\0.c(28): error #2001: Syntax error: expected ';' but found 'malloc'.
\0.c(29): error #2112: Left operand of '->' has incompatible type 'int'.
\0.c(31): error #2112: Left operand of '->' has incompatible type 'int'.
\0.c(35): error #2112: Left operand of '->' has incompatible type 'int'.
\0.c(37): error #2112: Left operand of '->' has incompatible type 'int'.
\0.c(37): error #2168: Operands of '!=' have incompatible types 'int' and 'void *'.
0.c(39): error #2112: Left operand of '->' has incompatible type 'int'.
\0.c(40): error #2112: Left operand of '->' has incompatible type 'int'.
*** Error code: 1 ***
Done.

Saluditos".


Título: Re: Ayuda: con sustitución de funciones
Publicado por: amchacon en 7 Marzo 2013, 13:20 pm
Pues lo debi hacer con el compilador de C++ sin darme cuenta.

Supongo que para que te corra en C tendras que poner la estructura al estilo C (con el typedef y tal).

Cuando éste en casa te confirmo.


Título: Re: Ayuda: con sustitución de funciones
Publicado por: amchacon en 7 Marzo 2013, 17:14 pm
En efecto, para que compile en C solo había que cambiar la declaración de la estructura eslabón:
Código
  1. typedef struct cadena
  2. {
  3.    int N;
  4.    struct cadena* Anterior;
  5. }Eslabon;


Título: Re: Ayuda: con sustitución de funciones
Publicado por: leosansan en 7 Marzo 2013, 19:29 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.

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.


Aunque para calcular el mayor no hace falta punteros o arrays, para que no se diga que con arrays dinámicos hay grandes problemas:

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <float.h>
  4.  
  5. int main(void){
  6.    int i=0,n=1;
  7.    float *num,mayor=-FLT_MAX ;
  8.    num = (float *) malloc (10*sizeof(float));
  9.    while (1) {
  10.        printf ("Introduzca el numero %d : ",i+1);
  11.        scanf("%f",&num[i]);
  12.        if (num[i]==0)
  13.            break;
  14.        if (i>= 9*n){
  15.            num = (float *) realloc (num,sizeof(float)*(i+10));
  16.            n++;
  17.            if ( num == NULL )  {
  18.                            printf("\nOut of memory!\n");
  19.                            return -1;
  20.            }
  21.        }
  22.        if (num [i]> mayor)
  23.            mayor = num[i];
  24.        i++;
  25.    }
  26.    printf ("\n\nEl mayor es: %g",mayor);
  27. return EXIT_SUCCESS;
  28. }
  29.  
  30.  

Saluditos!. .... (http://st.forocoches.com/foro/images/smilies/dancer2.gif)

P.D: Pongo 10 para que se pueda "ver" que el realloc funciona.


Título: Re: Ayuda: con sustitución de funciones
Publicado por: amchacon en 7 Marzo 2013, 20:00 pm
Mmm, de acuerdo tu ganas :)

Desde el punto de vista de la memoria, creo que es más fácil situar un elemento nuevo que situar un array. Por eso lo decía.

Ahora, queda muy bonito ^^


Título: Re: Ayuda: con sustitución de funciones
Publicado por: leosansan en 7 Marzo 2013, 20:13 pm
Mmm, de acuerdo tu ganas :)

Desde el punto de vista de la memoria, creo que es más fácil situar un elemento nuevo que situar un array. Por eso lo decía.

Ahora, queda muy bonito ^^


El problema es que con tu código no se pordría ordenar, igual que con mi primer código. Pero como dijiste lo de lo complicado que sería crear un array de manera dinámica y sin tener de antemano la dimensión es por lo que he puesto este segundo código. Vamos que me "picastes", :laugh:

Saluditos campeón"!.
...(http://st.forocoches.com/foro/images/smilies/aaaaa.gif)