[C con Clase] Estatuto FOR

Salvador Pozo salvador en conclase.net
Vie Ago 14 09:15:46 CEST 2009


El pasado 2009-08-14 06:36:35, Sandra Zuluaga escribió:
 
SZ> Hola Vidal,
SZ> Es un grupo de ejercicios q estoy haciendo en base a una guia de un curso q
SZ> ya paso.... Esta guia da un ejemplo y luego ponene ejercicios. A veces creo
SZ> q la redaccion esta muy mala.
SZ> SI lo se...estoy muy verde,,,,
SZ> PD, Como te comento mis intensiones son de aprender de vosotros y de ser
SZ> buena programadora...
SZ> No entinedo a que te refieres con trampa. Aca os paso la guia de donde estoy
SZ> sacando los ejercicios.

Hola, Sandra:

¡Que sorpresa! :-D

Esa guía me recuerda mucho, pero mucho, al curso de nuestra página:
http://c.conclase.net/curso/index.php?cap=800#Ejemplo1

Vamos, que es casi lo mismo. :-D

Espero que con con lo de la "redacción muy mala" te refieras a los problemas propuestos ;-)

Bueno, aprovecho para hacer algunos comentarios.

En cuanto al ejercicio anterior, el del do..while, me temo que el problema propuesto no se ajusta a un bucle de ese tipo, al menos no es el problema que yo habría planteado para ese tipo de bucles.

Por supuesto, cualquier problema que requiera un bucle se puede solucionar aplicando cualquiera de los tipos de bucles que existe, pero digamos que algunos resultan más "naturales" que otros.

Forzando un poco la imaginación, sospecho que la persona que redacto el ejercicio quería que el programa pidiera datos mientras el usuario siga queriendo introducirlos, y que al menos proporcione uno. Eso es.... "un bucle do...while".

Que se pida al menos un dato es imprescindible, ya que el promedio general se calculará dividiendo la suma de promedios entre el número de alumnos, y si ese número es cero, no se puede hacer la división. Eso "fuerza" en cierto sentido, la elección de un bucle do..while.

Otra cosa, necesitamos almacenar los valores de los promedios, puesto que los necesitaremos para ver cuantos están por encima de la media, y eso no se sabe hasta el final. 

Pero tenemos un problema al crear un array del que no conocemos el tamaño, y recordad que no se puede usar un valor variable para declarar un array. (Yo puntuaría mal un programa en el que la declaración de un array contenga una variable).

Para eso crearemos un array lo bastante grande, por ejemplo, de 500 elementos (no creo que el maestro tenga tantos alumnos).

Empezamos con n=0
Empezamos con suma=0

Entramos en un bucle do..while:
pedimos un dato, lo guardamos en array[n], lo acumulamos a la suma, e incrementamos n
preguntamos si se quiere introducir otro dato
si es así, repetimos el bucle.

Al salir del bucle tenemos la suma de promedios y el número de alumnos. Calcular el promedio general es fácil.

Además, tenemos un array con los promedios de todos los alumnos, podemos verificar fácilmente cuantos están por encima de la media, y cuantos han suspendido.

SZ> SI lo se...estoy muy verde,,,,

No te preocupes por estar "verde", eso nos ha pasado a todos. Lo importante es sentar bien las bases. Ya ves que aquí siempre hay personas dispuestas a echar una mano.

Y lo de las "trampas" del profesor, en fin, te explico:

Hay profesores que "fuerzan" un poco los enunciados para incluir algunas definiciones de forma disimulada. En el ejemplo que dices del bucle for, está pidiendo un programa C++.

Alguien con "mala idea" podría forzar eso como que está pidiendo un programa orientado a objetos, y no uno que sólo tenga funciones. Eso sería una "trampa", para poder suspender problemas que funcionan correctamente porque no se ajustan completamente al enunciado.

Yo no entiendo que sea así, en este caso. Un programa C, sin clases, es también un programa C++, ya que C++ incluye a C. Por lo tanto, no te preocupes por eso.

Y si a tu profesor le gustan esas "trampas", entonces caerás al menos en una, es inevitable. Si hay trampas, es mejor caer en la primera, que pasarse todo el tiempo intentando sortear trampas que a lo mejor no existen.

Como dice el refrán, "si me engañas una vez será culpa tuya, si me engañas más veces, la culpa será mía". :-)

Perdona la charla.

Hasta pronto.

P.D.: Si conoces al que ha "redactado" las actividades, envíale recuerdos de mi parte. ;-)

-- 
Salvador Pozo (Administrador)
mailto:salvador en conclase.net


Más información sobre la lista de distribución Cconclase