[Curso] Introducción a la programación en C (X)
Moderadores: Kravenbcn, largeroliker, fidelcastro, cerealkiller, pspCaracas, m0skit0, LnD, ka69, zacky06
Re: [Curso] Introducción a la programación en C (X)
Sigo opinando que 5 bucles son demasiados Y mucho más teniendo bucles anidados (un bucle dentro de otro). No necesitas anidar bucles para nada.
Re: [Curso] Introducción a la programación en C (X)
Pos no se como reducir esos 5 bucles porque para escribir los numeros en la pantalla tengo que recorrerlos por separado para escribir cosas por el medio...
Alguna pista?
Alguna pista?
PSP3ooo: 4.21 -> 5.00 -> 5.03 -> 5.03 GEN-A -> 5.03 M33 -> 5.03 MHU -> 5.03 GEN-C -> 5.03 MHU -> 6.20 PRO-B4
Re: [Curso] Introducción a la programación en C (X)
Primero céntrate en el bucle anidado. ¿Realmente lo necesitas?
Re: [Curso] Introducción a la programación en C (X)
Se pone difícil la cosa , bueno e conseguido hacer los primeros dos aunque en el segundo no e podido hacer lo de la posición aunque creo que estoy cera xD pero un tip o pista no me vendría mal xD, veré si puedo poner los demás más tarde
Primero.
El Segundo.
Primero.
Spoiler:
El Segundo.
Spoiler:
Re: [Curso] Introducción a la programación en C (X)
~Rdavid~ escribió:Primero.
Nada que objetar. Felicidades por el formato
~Rdavid~ escribió:El Segundo.
Veo que calculas las variables en el mismo bucle de inicialización del vector. Hazlo de forma que primero inicialices el vector y luego lo recorras (2 bucles). Esto es mejor ya que te acostumbras a que te llegue una entrada de datos ya preparada. Y dedícale un poco de tiempo, verás que no es tan difícil.
Re: [Curso] Introducción a la programación en C (X)
E logrado terminar los ejercicios de esta parte , como el 3 es como el 2 mejor arreglo lo que comentas en el 3 de una vez.
Tercero.
Cuarto.
Ya solo me queda una parte más.
saludos
Tercero.
Spoiler:
Cuarto.
Spoiler:
Ya solo me queda una parte más.
saludos
Re: [Curso] Introducción a la programación en C (X)
Vamos con ello
¿posmay=i+1? Lo que tienes que guardar es la posición en el vector, no la posición visual Lo mismo te digo para el menor.
Hmmm... mal. Estás recorriendo el vector demasiadas veces (muchísimas). Con una vez vas más que sobrao. Lo mismo te digo con respecto a los bucles de ordenación: todo lo puedes calcular y a la vez ordenar el vector en una sola pasada de bucle. Revisa a ver si puedes hacerlo.
Te hago un par de comentarios generales y vamos a lo concreto:
Te sobra. Intenta hallar cómo hacerlo sin esto.
¿Y si hay 100 opciones? Encuentra una forma más limpia de escribir esto. Sólo necesitas 2 condiciones para cualquier cantidad de números consecutivos.
¿Para qué scanf 2 veces? Se te ocurre cómo modificar el bucle para incluir el scanf una sola vez?
Formatea el código y usa {} siempre.
No necesitas id2, puedes usar el mismo id. En todo caso, pon nombres más descriptivos a estas variables, aunque resulte más pesados escribirlas enteras. Es el dilema del programador Lo mismo te digo para scanf("%d", &id3);.
Esto no hace nada, por tanto te sobra. Ten en cuenta que este default te puede evitar el tener que comprobar la opción introducida anteriormente. Por tanto o bien lo compruebas antes, o lo compruebas aquí.
~Rdavid~ escribió:Tercero.
Código: Seleccionar todo
if(mayor < num[i])
{
posmay=i+1;
mayor=num[i];
}
¿posmay=i+1? Lo que tienes que guardar es la posición en el vector, no la posición visual Lo mismo te digo para el menor.
Código: Seleccionar todo
for(k=0;k<50;k++)
{
if(i!=k && num[i]==num[k])
con++;
if(con>cmoda)
{
moda=num[i];
posmoda=i+1;
cmoda=con;
}
}
Hmmm... mal. Estás recorriendo el vector demasiadas veces (muchísimas). Con una vez vas más que sobrao. Lo mismo te digo con respecto a los bucles de ordenación: todo lo puedes calcular y a la vez ordenar el vector en una sola pasada de bucle. Revisa a ver si puedes hacerlo.
~Rdavid~ escribió:Cuarto.
Te hago un par de comentarios generales y vamos a lo concreto:
- Prueba a crear un struct de la agenda completa. Obviamente este struct nuevo contendrá elementos entrada.
- Puedes saber qué posición está vacía de antemano sin tener que recorrer la agenda a cada vez.
- Un while puede comprobar varias condiciones a la vez. No lo olvides nunca
Código: Seleccionar todo
int veces;
Te sobra. Intenta hallar cómo hacerlo sin esto.
Código: Seleccionar todo
while(opc!=1 && opc!=2 && opc!=3 && opc!=4)
¿Y si hay 100 opciones? Encuentra una forma más limpia de escribir esto. Sólo necesitas 2 condiciones para cualquier cantidad de números consecutivos.
Código: Seleccionar todo
scanf("%d", &opc);
//Error por si no se escoge una opción
while(opc!=1 && opc!=2 && opc!=3 && opc!=4)
{
printf("No escogiste ninguna de la opciones, vuleve a escoger,\n");
scanf("%d", &opc);
}
¿Para qué scanf 2 veces? Se te ocurre cómo modificar el bucle para incluir el scanf una sola vez?
Código: Seleccionar todo
while (agenda[id].veces != -1)
id++;
Formatea el código y usa {} siempre.
Código: Seleccionar todo
scanf("%d", &id2);
No necesitas id2, puedes usar el mismo id. En todo caso, pon nombres más descriptivos a estas variables, aunque resulte más pesados escribirlas enteras. Es el dilema del programador Lo mismo te digo para scanf("%d", &id3);.
Código: Seleccionar todo
default:
break;
Esto no hace nada, por tanto te sobra. Ten en cuenta que este default te puede evitar el tener que comprobar la opción introducida anteriormente. Por tanto o bien lo compruebas antes, o lo compruebas aquí.
Re: [Curso] Introducción a la programación en C (X)
Intentaré arreglar todo lo que me has comentado apenas pueda, gracias
Re: [Curso] Introducción a la programación en C (X)
Ya tenia rato de no ponerme a programar, por ahora solo hice el numero 4. Mañana me pongo a hacer los demas.
Perdón por el formato, lo trato de acomodar pero al momento de enviar se me desacomoda, esta es la primera vez que me pasa.
Spoiler:
Perdón por el formato, lo trato de acomodar pero al momento de enviar se me desacomoda, esta es la primera vez que me pasa.
Re: [Curso] Introducción a la programación en C (X)
Dante escribió:por ahora solo hice el numero 4. Mañana me pongo a hacer los demas.
Veamos
Dante escribió:struct
{
char nombre[80];
int numero;
} datoscont[20];
Esto está mal programado. Estás declarando este array como global. Decláralo dentro de main, pero defínelo fuera de ella Usa typedef
Dante escribió:while(activo == 1)
¿De verdad necesitas comparar esto en la primera entrada al bucle? ¿O es mejor un do...while?
Dante escribió:menu
Este nombre de variable es un poco confuso. Prueba con algo más claro.
Dante escribió:int puesto = 1
Los vectores empiezan en 0, no en 1.
Dante escribió:int fullcontactos = 0;
¿Para qué quieres esta variable?
También tu agenda tiene un bug, ya que si rellenas toda la agenda y luego borras un contacto que no esté al final, al introducir uno nuevo, simplemente ni aparecerá, ya que lo escribirías fuera de la memoria de tu programa, corrompiendo tu programa, otros o a saber el qué Esto te lo digo sin haberlo probado, pero puedes probarlo y ver lo que te estoy diciendo. Intenta corregir este comportamiento