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

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

arisma
Habitual
Habitual
Mensajes: 497
Registrado: 18 Sep 2009, 08:41

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

Mensaje por arisma »

Gracias hiddenotebook.

De todas formas es lo que dice el jefe, a veces me saldré de lo dado(intentaré que sea las menos) y haré cosas más optimizadas o por lo contrario no muy recomendadas por experimentar.

El casting viene bien saber que está ahí, cómo se usa, pero también que no se debe usar para todo y que los ejercicios que ahora estamos haciendo se puede declarar sin problema como variable digamos superior y ahorrarse el casting.

Un saludo y sigue con ese interés.

Avatar de Usuario
hiddenotebook
Experto
Experto
Mensajes: 634
Registrado: 28 Dic 2009, 14:56
Ubicación: En un lugar de la mancha...

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

Mensaje por hiddenotebook »

Lo siento profe, en su momento no entendí lo del casting, pero si no hago cast aunque declare la variable float al principio no me da la cifra exacta en la media :|

Spoiler:

Código: Seleccionar todo

// Ejercicio de lección V: 
#include <stdio.h>
#include <unistd.h>

//función principal:
int main(int argc, char *argv[])
{
   int edad_alber;
   int edad_pili;
   float media  = (edad_alber + edad_pili) /2;

printf("Por favor introduce la edad de Alberto: ");
scanf("%d", &edad_alber);
printf("Por favor introduce la edad de Pili: ");
scanf("%d", &edad_pili);

printf("La suma de las edades de Alberto y Pilar es: %d\n", edad_alber + edad_pili);
printf("La multiplicación de las edades de Alberto y pilar es: %d\n", edad_alber * edad_pili);
printf("La media de las edades de Alberto y pilar es: %.1f\n", media);

system("read foo");
return 0;
}


Aquí el resultado:
Spoiler:

Código: Seleccionar todo

alber@alber-laptop:~/Escritorio/ej14.5$ gcc -o ej14.5 ej14.5.c
alber@alber-laptop:~/Escritorio/ej14.5$ ./ej14.5
Por favor introduce la edad de Alberto: 30
Por favor introduce la edad de Pili: 23
La suma de las edades de Alberto y Pilar es: 53
La multiplicación de las edades de Alberto y pilar es: 690
La media de las edades de Alberto y pilar es: 70206128.0

Xanatos
Habitual
Habitual
Mensajes: 226
Registrado: 11 Nov 2009, 09:59

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

Mensaje por Xanatos »

el problema:

tu no vas al banio te limpias y después cagas... jejeje (sin insultar asi decia un amigo)

Spoiler:
// Ejercicio de lección V:
#include <stdio.h>
#include <unistd.h>

//función principal:
int main(int argc, char *argv[])
{
int edad_alber;
int edad_pili;
float media = (edad_alber + edad_pili) /2;
/*TE ESTAS LIMPIANDO ANTES DE DE..... el profe dijo que la declaracion no la valoracion!! */
printf("Por favor introduce la edad de Alberto: ");
scanf("%d", &edad_alber);
printf("Por favor introduce la edad de Pili: ");
scanf("%d", &edad_pili);

printf("La suma de las edades de Alberto y Pilar es: %d\n", edad_alber + edad_pili);
printf("La multiplicación de las edades de Alberto y pilar es: %d\n", edad_alber * edad_pili);
/* aqui podrias poner el "media = (edad_alber + edad_pili) /2;" por que antes tu programa no sabia cuantos anios tenian alberto y pili! ahora ya lo sabe*/
printf("La media de las edades de Alberto y pilar es: %.1f\n", media);

system("read foo");
return 0;
}


que estes bien!

pd: que pena profe por meterme en tu clase!

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 (V)

Mensaje por m0skit0 »

:lol: :lol: Buen símil Xanatos :lol: :lol:

No te lo tomes a mal hiddenotebook, pero ése es el fallo que cometes ;)
Imagen

Avatar de Usuario
hiddenotebook
Experto
Experto
Mensajes: 634
Registrado: 28 Dic 2009, 14:56
Ubicación: En un lugar de la mancha...

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

Mensaje por hiddenotebook »

OK ya hago mis necesidades correctamente :laughing: :laughing: :laughing:
que buena si señor :juasjuas:

Spoiler:

Código: Seleccionar todo

// Ejercicio de lección V: 
#include <stdio.h>
#include <unistd.h>

//función principal:
int main(int argc, char *argv[])
{
   int edad_alber;
   int edad_pili;
   
// Leemos la 1ª edad:
printf("Por favor introduce la edad de Alberto: ");
scanf("%d", &edad_alber);
// Leemos la 2ª edad:
printf("Por favor introduce la edad de Pili: ");
scanf("%d", &edad_pili);

// ¿Supuestamente aquí también lo puedo poner no??porque ya sabría las edades.
float media  = (edad_alber + edad_pili) /2;

printf("La suma de las edades de Alberto y Pilar es: %d\n", edad_alber + edad_pili);
printf("La multiplicación de las edades de Alberto y pilar es: %d\n", edad_alber * edad_pili);
printf("La media de las edades de Alberto y pilar es: %.1f\n", media);

system("read foo");
return 0;
}


Pero desgraciadamente sigo teniendo un pequeño problema la media me la da entera tiene que ser 26,5 y me da esto:
Spoiler:
Imagen

A ver si me queda claro ya de una vez esta que he ojeado la siguiente y me encantaaaa!!! :baba: :oki: :oki:

arisma
Habitual
Habitual
Mensajes: 497
Registrado: 18 Sep 2009, 08:41

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

Mensaje por arisma »

Define las 3 como float.

Xanatos
Habitual
Habitual
Mensajes: 226
Registrado: 11 Nov 2009, 09:59

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

Mensaje por Xanatos »

hiddenotebook escribió:OK ya hago mis necesidades correctamente :laughing: :laughing: :laughing:
que buena si señor :juasjuas:

Spoiler:

Código: Seleccionar todo

// Ejercicio de lección V: 
#include <stdio.h>
#include <unistd.h>

//función principal:
int main(int argc, char *argv[])
{
   int edad_alber;
   int edad_pili;
   
// Leemos la 1ª edad:
printf("Por favor introduce la edad de Alberto: ");
scanf("%d", &edad_alber);
// Leemos la 2ª edad:
printf("Por favor introduce la edad de Pili: ");
scanf("%d", &edad_pili);

// ¿Supuestamente aquí también lo puedo poner no??porque ya sabría las edades.
// si muy bien!
float media  = (edad_alber + edad_pili) /2; // aqui puede ser 2,00

printf("La suma de las edades de Alberto y Pilar es: %d\n", edad_alber + edad_pili);
printf("La multiplicación de las edades de Alberto y pilar es: %d\n", edad_alber * edad_pili);
printf("La media de las edades de Alberto y pilar es: %.1f\n", media);

system("read foo");
return 0;
}




me alegro que hayas entendido la comparación y nolo hallas tomado a mal... :oki:

bueno tienes la opción que te dio arisma, pero en realidad uno define las variables que necesita (aveces hay excepciones). yo creo que solo Darky dice que el tiene 14.532 anios jejeje creo que la mama y en un bar le dirian 14 :oki:

pero bueno volviendo a tu pregunta, las edades de Alberto y Pilar en vez de dividirlas por 2 puedes dividirlas por 2,00 (o 2,000000) acuerda te que el compilador es un "traductor" y el traduce lo que cree que el tiene que traducir (un mal ejemplo: traductor de google traduce bien pero .....), lo que el entiende, por eso aveces hay que ayudarle (como esos espacios que hay que poner y en fin), para eso están los programadores ellos son los héroes las maquinas son maquinas! 8-)

pd: se llama Compliler no traductor (traduce y optimiza), son cosas mas o menos diferentes(Compilador != Traductor), si alguna vez aprenden java o basic van a ver que existen Compiladores y también Interpretes pero eso es otra historia.

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 (V)

Mensaje por m0skit0 »

hiddennotebook, lo has vuelto a poner como antes. Primero la declaración:

Código: Seleccionar todo

float media;

Luego, cuando sea necesario, la asignación

Código: Seleccionar todo

media = (edad_alber + edad_pili) /2;

Y respondiendo tu duda, media da entero porque edad_alber y edad_pili son enteros, por tanto la división se hace entera y luego se convierte el valor a real (float) y se asigna a media. Si quieres que la división se haga real (float) entonces has de declarar edad_alber y edad_pili como reales.
Imagen

Xanatos
Habitual
Habitual
Mensajes: 226
Registrado: 11 Nov 2009, 09:59

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

Mensaje por Xanatos »

a si m0skito no lo vi.... :oops:

Spoiler:
// Ejercicio de lección V:
#include <stdio.h>
#include <unistd.h>

//función principal:
int main(int argc, char *argv[])
{
//DECLARACION DE VARIABLES pertenecientes a main
int edad_alber; // variable que guarda laeda de alberto
int edad_pili; // variable que guarda la edad de pilar
float media; // variable que guarda el valor medio de las edades

// Leemos la 1ª edad:
printf("Por favor introduce la edad de Alberto: ");
scanf("%d", &edad_alber);
// Leemos la 2ª edad:
printf("Por favor introduce la edad de Pili: ");
scanf("%d", &edad_pili);

// ¿Supuestamente aquí también lo puedo poner no??porque ya sabría las edades.
// esta es la valoracion o como se llame!
media = (edad_alber + edad_pili) /2; // aqui puede ser 2,00

printf("La suma de las edades de Alberto y Pilar es: %d\n", edad_alber + edad_pili);
printf("La multiplicación de las edades de Alberto y pilar es: %d\n", edad_alber * edad_pili);
printf("La media de las edades de Alberto y pilar es: %.1f\n", media);

system("read foo");
return 0;
}

arisma
Habitual
Habitual
Mensajes: 497
Registrado: 18 Sep 2009, 08:41

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

Mensaje por arisma »

Lo que no me gusta es system("read foo");

Ten en cuenta que al igual que hemos descartado system("cls"); por ser de DOS, descartamos este caso en favor de una mayor portabilidad.

Responder