[Curso] Introducción a la programación en C (VI)

Moderadores: Kravenbcn, largeroliker, fidelcastro, cerealkiller, pspCaracas, m0skit0, LnD, ka69, zacky06

Avatar de Usuario
m0skit0
Administrador
Administrador
Mensajes: 5585
Registrado: 03 Sep 2009, 09:35
Ubicación: 0xdeadbeef

Re: [Curso] Introducción a la programación en C (VI)

Mensaje por m0skit0 »

cripii5 escribió:Lo se, pero quize hacerlo mas detallado :oops:

Si eso no implica el hacer cálculos adicionales no necesarios, por mí OK. Pero repito: estás calculando el cuadrado sin tener que hacerlo, y eso definitivamente está mal. Corrige el 3.

cripii5 escribió:Explicame un poco mas eso de no portables... que me recomendas?

No portable significa que el código sólo va a funcionar en Windows. Si ya en programas tan sencillos y pequeños usas funciones no estándar, entonces muy mal vamos.

cripii5 escribió:No capte cual es la diferencia en el ejercicio 4 de repetir la frase comun o mostrarla en pantalla por default sin importar el resultado si al final termino programando algo mas largo que se ve igual y tiene un proceso mas para hacer

¿Más largo? Bueno, si te refieres a que tiene una línea de código más... De todas formas, no tienes porqué llamar a printf() dos veces, pero bueno, eso ya lo verás más adelante cuando mires cómo manejar cadenas de caracteres. La ventaja de esto es conservar memoria. En tu primer intento, tenía que almacenar dos cadenas: "El numero %d es par" y el "El numero %d es impar", por tanto son 20 + 22 = 42 bytes. Tal y como lo has hecho ahora tienes 3 cadenas: "El numero ", "%d es par" y "%d es impar", por tanto 11 + 10 + 12 = 33 bytes. Podrías incluso reducirlo más poniendo "El numero %d es ", "par", "impar" (que sería la más correcta), reduciendo por tanto el espacio a 17 + 4 + 6 = 27 bytes.

Esto puede parecer una tontería en programas pequeños, pero cuando los programas son enormes, la ganancia en espacio se multiplica.

cripii5 escribió:Cuando hice C en Venezuela, nunca me corregian el formateo, por eso soy tan torpe en ese sentido, pero con lo que insistis con el formateo seguramente los proximos ejercicios no seran tan desprolijos :geek:

Con feo me refería a usar system() (y encima con llamadas Windows, que no siguen ningún estándar).
Imagen

Avatar de Usuario
cripii5
Experto
Experto
Mensajes: 1948
Registrado: 14 Dic 2010, 03:15
Gamertag Xbox Live: cripii5
Steam ID: cripii5
Twitter: cripii5
Ubicación: Uruguay

Re: [Curso] Introducción a la programación en C (VI)

Mensaje por cripii5 »

m0skit0 escribió:Si eso no implica el hacer cálculos adicionales no necesarios, por mí OK. Pero repito: estás calculando el cuadrado sin tener que hacerlo, y eso definitivamente está mal. Corrige el 3.

Es que, o yo estoy entendiendo mal el ejercicio o es tonto.
m0skit0 escribió:Codificar un programa que dados dos números reales, nos diga cuál de los cuadrados (potencia de 2) es más grande.

si un numero es mayor que otro, obviamente el cuadrado de ese numero es mayor que el del otro, seria como el segundo ejercicio solo que en printf tendria que agregar la palabra "cuadrado"

m0skit0 escribió:No portable significa que el código sólo va a funcionar en Windows. Si ya en programas tan sencillos y pequeños usas funciones no estándar, entonces muy mal vamos.

Funciones no estandar ademas de system() son...? soy noob guiame :lol:
m0skit0 escribió:Con feo me refería a usar system() (y encima con llamadas Windows, que no siguen ningún estándar).

Ok, mi duda estaba en como soluciono eso? uso getchar? es que soy noob, no esperes que adivine las cosas :lol:

m0skit0 escribió:Podrías incluso reducirlo más poniendo "El numero %d es ", "par", "impar" (que sería la más correcta), reduciendo por tanto el espacio a 17 + 4 + 6 = 27 bytes.

No me gusta cuando la logica no me funciona tan bien... enseguida modifico...
Yo

Avatar de Usuario
m0skit0
Administrador
Administrador
Mensajes: 5585
Registrado: 03 Sep 2009, 09:35
Ubicación: 0xdeadbeef

Re: [Curso] Introducción a la programación en C (VI)

Mensaje por m0skit0 »

cripii5 escribió:Es que, o yo estoy entendiendo mal el ejercicio o es tonto.
cripii5 escribió:si un numero es mayor que otro, obviamente el cuadrado de ese numero es mayor que el del otro, seria como el segundo ejercicio solo que en printf tendria que agregar la palabra "cuadrado"

Efectivamente el ejercicio es "tonto" si quieres llamarlo así, o más bien es trampa, porque has caído en ella, como todos los que han hecho el ejercicio. En ningún momento se pide calcular el cuadrado. Esto es para hacer notar que vais a elegir la solución más complicada cuando no se os ha pedido eso.

cripii5 escribió:Funciones no estandar ademas de system() son...? soy noob guiame :lol:

No te confundas. system() es estándar. Lo que no es estándar es "pause".

cripii5 escribió:mi duda estaba en como soluciono eso? uso getchar? es que soy noob, no esperes que adivine las cosas :lol:

De adivinar nada. Ya te lo he dicho mil veces: quitarla y punto. En cuanto a Windows (que en realidad es tu problema fundamental en este tema), o bien dejas de usarlo o bien lanzas el programa desde una ventana de consola que hayas abierto previamente, así no se te cerrará.
Imagen

Avatar de Usuario
cripii5
Experto
Experto
Mensajes: 1948
Registrado: 14 Dic 2010, 03:15
Gamertag Xbox Live: cripii5
Steam ID: cripii5
Twitter: cripii5
Ubicación: Uruguay

Re: [Curso] Introducción a la programación en C (VI)

Mensaje por cripii5 »

m0skit0 escribió:Efectivamente el ejercicio es "tonto" si quieres llamarlo así, o más bien es trampa, porque has caído en ella, como todos los que han hecho el ejercicio. En ningún momento se pide calcular el cuadrado. Esto es para hacer notar que vais a elegir la solución más complicada cuando no se os ha pedido eso.

:lol: claro, por eso hice la logica que hice la primera vez... preferi mostrar el cuadrado de los dos numeros para hacerlo un tanto mas util el programa, pero tal como decis, no es lo que me piden y tenes razon :oki:

Ya modifique.... los 4 ejercicios ahora son portables, el tercero ya no calcula el cuadrado y en el cuarto ejercicio saque toda la frase comun de los ifs
Yo

Avatar de Usuario
m0skit0
Administrador
Administrador
Mensajes: 5585
Registrado: 03 Sep 2009, 09:35
Ubicación: 0xdeadbeef

Re: [Curso] Introducción a la programación en C (VI)

Mensaje por m0skit0 »

Perfecto pues, adelante al VII :oki:
Imagen

Avatar de Usuario
cripii5
Experto
Experto
Mensajes: 1948
Registrado: 14 Dic 2010, 03:15
Gamertag Xbox Live: cripii5
Steam ID: cripii5
Twitter: cripii5
Ubicación: Uruguay

Re: [Curso] Introducción a la programación en C (VI)

Mensaje por cripii5 »

Pasate por el VII que deje una duda pero como fui el ultimo en escribir ahi hace mucho tiempo y se edito el mensaje para evitar el doble post no salio en mensajes nuevos :lol:
Yo

haddad
Novato
Novato
Mensajes: 22
Registrado: 06 Abr 2011, 23:09

Re: [Curso] Introducción a la programación en C (VI)

Mensaje por haddad »

disculpen muchachos, sera que alguien podria explicarme la parte que se encuentra subrayada?
printf ("El cuadrado de %.2f es mayor que el cuadrado de %.2f\n", numero1, numero2);

Avatar de Usuario
cripii5
Experto
Experto
Mensajes: 1948
Registrado: 14 Dic 2010, 03:15
Gamertag Xbox Live: cripii5
Steam ID: cripii5
Twitter: cripii5
Ubicación: Uruguay

Re: [Curso] Introducción a la programación en C (VI)

Mensaje por cripii5 »

%f es para mostrar tu variable float, el .2 es el numero de decimales a mostrar, te dare un ejemplo:
%.4f = 0,0000
%.3f = 0,000
%.2f = 0,00
%.1f = 0,0
%.0f = 0
Yo

Avatar de Usuario
m0skit0
Administrador
Administrador
Mensajes: 5585
Registrado: 03 Sep 2009, 09:35
Ubicación: 0xdeadbeef

Re: [Curso] Introducción a la programación en C (VI)

Mensaje por m0skit0 »

Aprended a leer la documentación/manuales. No siempre vais a tener a quién preguntarle y un programador que no sabe leer documentación no sirve para nada.

Manual de printf

Además, es prácticamente imposible que nadie se acuerde de todas las opciones que tiene printf. ¿Vas a preguntar cada vez que quieras recordarlo? Sé que hay gente así de abusona, que cree que los demás estamos únicamente para satisfacer sus deseos, pero desgraciadamente para ellos, los demás no estamos para satisfacerles.

PD: y por favor, no respondáis a este tipo de preguntas, hay cosas que uno tiene que buscar por su cuenta, porque "dale un pez y comerá un día, enséñale a pescar y comerá toda la vida".

Saludos.
Imagen

Avatar de Usuario
danmoran
Habitual
Habitual
Mensajes: 164
Registrado: 24 Sep 2010, 03:54
PSN ID: dan_moran
Ubicación: Ecuador

Re: [Curso] Introducción a la programación en C (VI)

Mensaje por danmoran »

La primera tarea: :laughing:
Spoiler:

Código: Seleccionar todo

#include <stdio.h>#include <stdio.h>
#include <stdlib.h>

int main(int argc, char* argv)
{
    int num_secreto, num_introducido;
 
    system("clear");
    printf("Por favor introduzca un numero de dos digitos que el otro jugador debe adivinar:");
    scanf("%d", &num_secreto);
    system("clear");
    printf("Por favor el segundo jugador, intente adivinar el numero anterior.\n");
    scanf("%d", &num_introducido);
   
    if(num_secreto < num_introducido)
    {
      printf("El numero %d es muy alto intenta con uno mas bajo ;D\n.", num_introducido);
    }
    else if(num_secreto > num_introducido)
    {
      printf("El numero %d es muy bajo intenta con uno mas alto ;D\n", num_introducido);
    }
    else if(num_secreto == num_introducido)
    {
      printf("Ganaste el numero %d era el correcto, Felicitaciones XD\n", num_introducido);
    }
    return 0;
}

La tarea numero 2 :tiro:
Spoiler:

Código: Seleccionar todo

#include <stdio.h>

int main(int argc, char* argv[])
{
    int num1, num2;
 
    printf("Introducir el primer numero a comparar\n");
    scanf("%d", &num1);
    printf("Introducir el segundo numero a comparar\n");
    scanf("%d", &num2);
   
    if(num1 > num2)
    {
      printf("El numero %d es mayor que %d\n", num1, num2);
    }
    else if(num1 < num2)
    {
      printf("El numero %d es menor que %d\n", num1, num2);
    }
    else if(num1 == num2)
    {
      printf("Los dos numeros son iguales XD\n");
    }
    return 0;
}

PD: Que alguien revise el de aqui por favor.
Última edición por danmoran el 20 May 2011, 21:44, editado 3 veces en total.
Sí acabas de leer esto, es porque eres un maricon/gay jajajajja

Imagen

Responder