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> 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 Con el VLA seria asi: Código
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
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 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
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 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
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
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
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] 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... ;DDa 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 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! :xDCódigo: enteros[i] Por cierto, el valor cero para salir de la introducción de los datos impide que se pueda entrar ese valor. Saluditos!. ... :rolleyes: 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
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: Debo ser el rey de las cosas complicadas, eso no se me había ocurrido xD.Código
Saluditos!. ...(http://st.forocoches.com/foro/images/smilies/dancer2.gif) 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 esa linea un ejercicio mencionado ocasionalmente es el calculo de la mediana: para encontrar al elemento central primero se debe ordenar la lista.En su lugar tendría que haber dicho que ordenases esos numeros... Así no te ahorrarias de almacenarlos 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. Siguiendo esa linea un ejercicio seria el calculo de la mediana: para encontrar el elemento al centro primero debe ordenar la lista.En su lugar tendría que haber dicho que ordenases esos numeros... Así no te ahorrarias de almacenarlos ---- en varios lugares le dicen función :o 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).http://www.it.uc3m.es/labas/course_notes/dynamic_memory_sizeof_es.html será porque se usa como una función? 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
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
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
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) |