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

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

Mensaje por m0skit0 »

:oki:
Imagen

Avatar de Usuario
largeroliker
Administrador
Administrador
Mensajes: 8286
Registrado: 03 Sep 2009, 09:46
PSN ID: larger0o
Gamertag Xbox Live: larger0o
Steam ID: larger0o
Twitter: larger0o
Ubicación: Málaga
Contactar:

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

Mensaje por largeroliker »

Me ha costado varios días, pero al fin anda :D

Código: Seleccionar todo


// Incluímos el fichero stdio.h y unistd.h
#include <stdio.h>
#include <windows.h>

// Función principal
int main(int argc, char *argv[])
{
    //Declaramos las dos edades y las pedimos
   
   float edad1, edad2;
   
    printf("Introduzca la primera edad: "); scanf(" %f", &edad1);
    printf("Introduzca la segunda edad: "); scanf(" %f", &edad2);
   // Calculamos la suma, el producto y la media.
    float suma = edad1+edad2, product = edad1*edad2, media = suma/2;
    // Y lo mostramos sin tapujos XD
    printf("La suma de ambas edades es de %.0f anios\n", suma);
    printf("El producto de ambas edades es de %.0f anios\n", product);
    printf("La media de ambas edades es de %.1f anios\n", media);
   
    getch();
   
    return 0;
}


Saludos! ;)
Imagen
Steam Deck · Xbox Series X · PS5 · Switch · PS Vita · WiiU · PS3 · new 3DS XL · Xbox 360 · PSP · PS2

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 »

Ese vicejefe eh eh eh! :lol:

Código: Seleccionar todo

float suma = edad1+edad2, product = edad1*edad2, media = suma/2;

Es mala práctica declarar variables en medio del meollo. Primero las declaraciones, luego el código.
Imagen

Avatar de Usuario
largeroliker
Administrador
Administrador
Mensajes: 8286
Registrado: 03 Sep 2009, 09:46
PSN ID: larger0o
Gamertag Xbox Live: larger0o
Steam ID: larger0o
Twitter: larger0o
Ubicación: Málaga
Contactar:

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

Mensaje por largeroliker »

Yap, lo que no sé es si declaro suma antes de tener edad1 y edad2 con valores va a funcionar :)

EDIT: No funciona, como pensaba. Al final he optado por "simplificar" y meter los cálculos sin variable dedicada, al final del printf.


Saludos! ;)
Imagen
Steam Deck · Xbox Series X · PS5 · Switch · PS Vita · WiiU · PS3 · new 3DS XL · Xbox 360 · PSP · PS2

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 »

También, pero así haces la suma 2 veces. Para hacerlo como yo digo, lógicamente primero declaras y luego asignas:

Código: Seleccionar todo

float suma, product, media;
[...]
suma = edad1+edad2;
product = edad1*edad2;
media = suma/2;

Evidentemente como has comprobado no sirve de nada ahcer los cálculos antes de asignarle a las variables sus valores correspondientes, ya que te saldría cualquier churro :mrgreen:
Imagen

Avatar de Usuario
largeroliker
Administrador
Administrador
Mensajes: 8286
Registrado: 03 Sep 2009, 09:46
PSN ID: larger0o
Gamertag Xbox Live: larger0o
Steam ID: larger0o
Twitter: larger0o
Ubicación: Málaga
Contactar:

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

Mensaje por largeroliker »

Oka. Lo de declarar a mitad lo hice porque no sabía cómo llamar a una variable para darle un valor en mitad del código.

Saludos! ;)
Imagen
Steam Deck · Xbox Series X · PS5 · Switch · PS Vita · WiiU · PS3 · new 3DS XL · Xbox 360 · PSP · PS2

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 »

Jo profe ya se que odias wind pero al principio decías que pondrías los dos OS :|
a mi me gusta LINUX pero estoy muy verde :mrgreen: y con linux me lio un poco es mas fácil con el compilador dev-c ++, de todas formas voy a seguir pero..
¿puedes hacer programas en Linux que después se ejecuten en Win?
supongo que si, si coges el texto y lo compilas en dev-c pero cambiando algunas cosas no? como lo de system("read foo"); no tengo muy claro el cambio…
:(

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 »

hiddenotebook escribió:Jo profe ya se que odias wind pero al principio decías que pondrías los dos OS :|

Por ahora todos los programas corren perfectamente en ambos SOs, ya que son muy simples, y los cambios mínimos.

hiddenotebook escribió:con linux me lio un poco es mas fácil con el compilador dev-c ++

Sí, pero lo fácil no enseña nada ;)

hiddenotebook escribió:¿puedes hacer programas en Linux que después se ejecuten en Win?

Sí, eso se llama cross-compiling (compilación cruzada), es decir, compilar un programa en una plataforma para que funcione en otra. Es precisamente lo que hace el PSPSDK, ya que compilas en PC pero el programa realmente se ejecuta en PSP. Es un poco complicado, sobre todo si no sabes cómo funciona realmente un compilador, así que por ahora pasando.
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 »

Lo demás debería de ser de sobra entendible con los comentarios y lo que ya hemos visto. Ahora la pregunta es: ¿cuál de las tres medias es la correcta?

Yo creo que es el valor 2 (media2) mirando el resultado
Spoiler:
Imagen

Lo que no entiendo muy bien es que si realmente la media es edad_alber + edad_pili / 2 porque tiene que estar entre paréntesis? para que el calculo sea correcto.

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 »

Es evidente que media2 es la correcta, y tambien que media1 y media3 son iguales.

hiddenotebook escribió:Lo que no entiendo muy bien es que si realmente la media es edad_alber + edad_pili / 2 porque tiene que estar entre paréntesis? para que el calculo sea correcto.

Eso ya es de matemáticas de primaria :tongue: Hay que estar más atento en clase de mates si te interesa la informática, ya que la mayor parte de ésta se basa en aquella :ugeek: .

Te refresco la memoria: en matemáticas (igual que en programación) existe lo que se llama precedencia de operadores. Es decir, que si tenemos una expresión con varios operadores aritméticos, hay algunos que tienen precedencia sobre otros, es decir, se calculan antes. La multiplicación/división siempre se calcula antes que la suma/resta. Por ejemplo: 2 + 3 * 6 = 20, ya que primero va 6*3 = 18 luego + 2 = 20. Sin embargo, esto se puede modificar si usamos paréntesis: (2 + 3) * 6 = 30, ya que la operación entre paréntesis se efectúa antes que cualquier otra cosa. Otro ejemplo más: (5 - 2 / 2) * (1 * 6 + 2) = 4 * 8 = 32.

Para más información sobre precedencia de operadores en C/C++: http://en.wikipedia.org/wiki/C_operator ... precedence

Independientemente, alabo tu actitud de preguntar todo lo que no comprendes :oki:
Imagen

Responder