Autor
|
Tema: que quiere decir este ejercicio?[c] (Leído 9,801 veces)
|
flacc
|
interesante, no me puse a pensar en hacer un bucle.. solo pense "como diablos hago para hacer que el codigo cree variables"...en fin... gracias..
|
|
|
En línea
|
|
|
|
ABDERRAMAH
Desconectado
Mensajes: 431
en ocasiones uso goto ¬¬
|
A mi me pasó lo mismo, lo primero que pensé fue... Necesitamos N variables y por eso pensé en el array. Yo creo que el ejercicio está redactado con "perrería" para tratar de confundir un poquito, jeje.
|
|
|
En línea
|
|
|
|
autlos
Desconectado
Mensajes: 3
|
Es un ejercicio relativamente sencillo, yo estoy en DAI y tuve que hacer uno similar pero algo más complejo hace poco. Lo que debes de hacer es lo que te ha dicho diskontrol. Te voy a poner el código del que tuve que hacer yo, tiene bastantes cosas que no necesita el tuyo pero si lo entiendes te irá bien: /* 16. Introducir por teclado las edades de 25 alumnos. Validar que son números comprendidos entre 17 y 30. Obtener y visualizar la edad del más mayor y ver cuántas veces se repite esa edad. Obtener y visualizar la edad del menor y ver cuántas veces se repite esa edad. Además indicar la edad media (sin decimales) de la clase. */ #include <stdio.h> #include <stdlib.h> int main() { int edad, contador=1, mayor=0, contmay=0, contmen=0, suma=0, menor=30, media=0; for (contador; contador<=8;contador++) { printf("Introducir edad entre 17 y 30: "); scanf("%d", &edad); fflush(stdin); while (edad<17 || edad>30) { printf("Edad incorrecta, introducela otra vez: "); scanf("%d", &edad); } if (edad>mayor) mayor=edad; if (edad<menor) menor=edad; if (edad==mayor) contmay++; if (edad==menor) contmen++; suma+=edad; } media= suma/contador; printf("La edad del mayor es %d, la edad del menor es %d, y la edad media es %d\n",mayor,menor,media); system("pause");
}
Lo que tienes que cambiar es que no necesitas calcular la media, ni cuardar contadores, tan sólo el número mayor, el menor, los números que quiera introducir y otra para guardar los introducidos. En un bucle for de 0 al límite elegido haces algo similar a lo que hice yo, ahorrándote el proceso de verificar nada. Por cierto, aprovecho este post para 2 cosas: para presentarme, y para que vosotros los expertos echéis un vistazo a ver qué cagadas (malos hábitos) tengo en mis códigos para ir haciendo mis programas más eficientes...
|
|
« Última modificación: 15 Diciembre 2010, 16:37 pm por autlos »
|
En línea
|
|
|
|
leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
Desconectado
Mensajes: 3.069
/^$/
|
A mi me pasó lo mismo, lo primero que pensé fue... Necesitamos N variables y por eso pensé en el array. Yo creo que el ejercicio está redactado con "perrería" para tratar de confundir un poquito, jeje.
Desde un principio se puede deducir que no se necesita un arreglo, solo dos variables y un ciclo.
|
|
|
En línea
|
|
|
|
flacc
|
amm, aunque me cuesta un poco entender el código, ya que no tengo mucha experiencia leyendo códigos ajenos(confío en que esa habilidad mejorará con el tiempo y la practica)... en fin.. tengo una idea aunque por baja que sea es algo... un poco diferente pero la idea no es copy paste al %70... asi que en fin... y sobre los malos hábitos, el system("pause"); supongo que lo hace anti estándar, podrás usar en su lugar getchar(); ... en fin.. solo soy un novato... saludoss
|
|
|
En línea
|
|
|
|
dato000
Desconectado
Mensajes: 3.034
|
Es un ejercicio relativamente sencillo, yo estoy en DAI y tuve que hacer uno similar pero algo más complejo hace poco. Lo que debes de hacer es lo que te ha dicho diskontrol. Te voy a poner el código del que tuve que hacer yo, tiene bastantes cosas que no necesita el tuyo pero si lo entiendes te irá bien: /* 16. Introducir por teclado las edades de 25 alumnos. Validar que son números comprendidos entre 17 y 30. Obtener y visualizar la edad del más mayor y ver cuántas veces se repite esa edad. Obtener y visualizar la edad del menor y ver cuántas veces se repite esa edad. Además indicar la edad media (sin decimales) de la clase. */ #include <stdio.h> #include <stdlib.h> int main() { int edad, contador=1, mayor=0, contmay=0, contmen=0, suma=0, menor=30, media=0; for (contador; contador<=8;contador++) { printf("Introducir edad entre 17 y 30: "); scanf("%d", &edad); fflush(stdin); while (edad<17 || edad>30) { printf("Edad incorrecta, introducela otra vez: "); scanf("%d", &edad); } if (edad>mayor) mayor=edad; if (edad<menor) menor=edad; if (edad==mayor) contmay++; if (edad==menor) contmen++; suma+=edad; } media= suma/contador; printf("La edad del mayor es %d, la edad del menor es %d, y la edad media es %d\n",mayor,menor,media); system("pause");
}
Lo que tienes que cambiar es que no necesitas calcular la media, ni cuardar contadores, tan sólo el número mayor, el menor, los números que quiera introducir y otra para guardar los introducidos. En un bucle for de 0 al límite elegido haces algo similar a lo que hice yo, ahorrándote el proceso de verificar nada. Por cierto, aprovecho este post para 2 cosas: para presentarme, y para que vosotros los expertos echéis un vistazo a ver qué cagadas (malos hábitos) tengo en mis códigos para ir haciendo mis programas más eficientes... Bueno, tengo entendido que llamar al sistema es un desperdicio y una mala maña, que para eso simplemente es usar un getchar(); Pero el codigo esta muy bien hecho, solo seria hacer una mejor organizacion, yo lo hago así: Original if (edad>mayor) mayor=edad; if (edad<menor) menor=edad; if (edad==mayor) contmay++; if (edad==menor) contmen++; suma+=edad; . . . system("PAUSE"); Sugerencia if (edad>mayor) {mayor=edad; } if (edad<menor) {menor=edad; } if (edad==mayor) {contmay++;} if (edad==menor) {contmen++;} suma+=edad; . . . getchar()
|
|
|
En línea
|
|
|
|
leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
Desconectado
Mensajes: 3.069
/^$/
|
Bueno, tengo entendido que llamar al sistema es un desperdicio y una mala maña, que para eso simplemente es usar un getchar(); Pero el codigo esta muy bien hecho, solo seria hacer una mejor organizacion, yo lo hago así:
Original Sugerencia
Tu indentación es incorrecta, por favor mejorala, te traerá muchos beneficios.
|
|
|
En línea
|
|
|
|
anonimo12121
|
int n[5] ={1,5,3,7,9}; [5] supongo que eso es predefinir los numeros que salen. luego ya los numeros dan igual ingrese los que ingreses. supongo que sera esto.
|
|
|
En línea
|
|
|
|
ghastlyX
Ex-Staff
Desconectado
Mensajes: 1.900
|
Para lo de leer un número indefinido de números, una manera muy simple de hacerlo es ir leyendo hasta encontrar un EOF, es algo que se usa mucho en concursos de programación. Para hacerlo en C, puedes hacerlo de la siguiente manera: #include <stdio.h> const int INF = 1000000000; int main() { int maxim = -INF, minim = INF, a; while (scanf("%d", &a ) != EOF ) { if (maxim < a) maxim = a; if (minim > a) minim = a; } printf("%d %d\n", maxim , minim ); }
Y si lo pruebas por teclado, puedes enviar un EOF haciendo Control+D en Linux y Control+Z en WIndows.
|
|
|
En línea
|
|
|
|
flacc
|
muy interesante ghastlyX gracias...
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Que me quiere decir el Nero ayuda URGENTE
Software
|
Bender-Deicide
|
9
|
7,521
|
19 Enero 2008, 01:09 am
por Mordor
|
|
|
72 dpi que quiere decir?
Diseño Gráfico
|
Attaque77
|
1
|
14,581
|
12 Febrero 2011, 15:39 pm
por [D4N93R]
|
|
|
¿Que quiere decir este error?
Programación C/C++
|
Bledniss
|
1
|
3,870
|
13 Abril 2011, 16:20 pm
por Slava_TZD
|
|
|
Que quiere decir esta expresion de Java?
Java
|
juancaa
|
1
|
2,093
|
14 Junio 2012, 11:40 am
por ollo
|
|
|
No entiendo que quiere decir este error de compilación!!!!!
Programación C/C++
|
pablombf
|
1
|
1,938
|
4 Enero 2018, 14:16 pm
por Becerra
|
|