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

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

Avatar de Usuario
~Rdavid~
Experto
Experto
Mensajes: 965
Registrado: 12 Nov 2009, 17:29
Ubicación: Costa Rica

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

Mensaje por ~Rdavid~ »

scanf("%s", &nombre); a eso quitale el "&" y ya debería de desaparecer el error :oki:
Imagen

Avatar de Usuario
Dark Pallacus
ViP Hordes
ViP Hordes
Mensajes: 1509
Registrado: 03 Sep 2009, 00:35
PSN ID: Pallacus
Ubicación: Barcelona
Contactar:

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

Mensaje por Dark Pallacus »

Muchas gracias ~Rdavid~. Pero no lo entiendo, el profe dijo que usáramos & y en todos los códigos que he visto en la lección aparece. Porque a mi no me funciona igual?

Le he dado un repaso al código, también tenia un /n en vez de \n. También he añadido bastantes saltos de línea para que se vea mas claro al ejecutar.

Código: Seleccionar todo

//incluimos las librerias requeridas
#include <stdio.h>
#include <unistd.h>

//función principal
int main(int argc, char *argv[])
{
//Declaramos las vairables
   char nombre[80];
   int edad;

//Investigamos el nombre del usuario
   printf("\nPor favor, introduzca su nombre: ");
   scanf("%s", nombre);

//Y su edad, que cotillas somos
   printf("Ahora su edad: ");
   scanf("%d", &edad);

//Y finalmente traicionamos la buena fé del usuario insultandolo
   printf("\nTe llamas %s y tienes %d anos, pero eres feo de cojones.\n\n", nombre, edad);

   return 0;
}

Y queda así ;)

Código: Seleccionar todo

albert@albert-K50IE:~/Documents/Programació/C/Lección 05/Variables 3$ ./entrada
Por favor, introduzca su nombre: Pollacus
Ahora su edad: 33

Te llamas Pollacus y tienes 33 anos, pero eres feo de cojones.

albert@albert-K50IE:~/Documents/Programació/C/Lección 05/Variables 3$


PD: CON ustedes se aprende DPM. Gracias.
PS3 - PSP 2000

Avatar de Usuario
~Rdavid~
Experto
Experto
Mensajes: 965
Registrado: 12 Nov 2009, 17:29
Ubicación: Costa Rica

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

Mensaje por ~Rdavid~ »

Dark Pallacus escribió:Muchas gracias ~Rdavid~. Pero no lo entiendo, el profe dijo que usáramos & y en todos los códigos que he visto en la lección aparece. Porque a mi no me funciona igual?


Bueno según sé, es porque el operador "&" obtiene la dirección de una variable pero nombre[80] es un puntero con la dirección de memoria ya reservada, por el contrario de la variable edad que no es un puntero.

En otras palabras siempre que uses cadenas de texto tienes que hacerlo sin el operador & con scanf, creo que entenderás mejor cuando llegues a ver punteros :oki:

Seguro que m0skit0 te lo explicaría mejor :lol:
Imagen

Avatar de Usuario
Dark Pallacus
ViP Hordes
ViP Hordes
Mensajes: 1509
Registrado: 03 Sep 2009, 00:35
PSN ID: Pallacus
Ubicación: Barcelona
Contactar:

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

Mensaje por Dark Pallacus »

Gracias. :D
Entonces ya se verá a su debido tiempo.
PS3 - PSP 2000

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 »

Como bien dice ~Rdavid~, lo entenderás cuando llegues al capítulo de punteros, que por ahora es el último. Hay cosas que hay que apechugar con ellas hasta entenderlas luego, desgraciadamente.
Imagen

Avatar de Usuario
Dark Pallacus
ViP Hordes
ViP Hordes
Mensajes: 1509
Registrado: 03 Sep 2009, 00:35
PSN ID: Pallacus
Ubicación: Barcelona
Contactar:

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

Mensaje por Dark Pallacus »

Aquí los deberes:

Código: Seleccionar todo

// Incluimos las librerias requeridas:
#include <stdio.h>
#include <unistd.h>

//Función principal:
int main(int argc, char *argv[])
{
//Declaramos las variables
   float e1, e2;

//Pedimos 2 edades:
   printf("\nPor favor, introduce tu edad: ");
   scanf("%f", &e1);
   printf("Introduce la edad de otra persona: ");
   scanf("%f", &e2);

//Y ahora soltamos las estadísticas:
   printf("\nEntre los dos teneis %.0f anhos.\n", e1 + e2);
   printf("La media de edad entre los dos es de %.1f anhos.\n", (e1+e2) / 2);
   printf("El producto de ambas edades es %.0f.\n", e1 * e2);
//Aquí me la juego:
   printf("Os lleváis %.0f anhos.\n\n", e1 - e2);

   return 0;
}
Y el resultado:

Código: Seleccionar todo

albert@albert-K50IE:~/Documents/Programació/C/Lección 05/Variables 3$ ./var3

Por favor, introduce tu edad: 25
Introduce la edad de otra persona: 33

Entre los dos teneis 58 anhos.
La media de edad entre los dos es de 29.0 anhos.
El producto de ambas edades es 825.
Os lleváis -8 anhos.

albert@albert-K50IE:~/Documents/Programació/C/Lección 05/Variables 3$
PS3 - PSP 2000

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 »

¿Edad como float? Una manera rara de verlo jajajajaja. A ver si eres capaz de hacerlo tal que se introduzca la edad exacta (años y meses) y calcular la diferencia ;)
Imagen

Avatar de Usuario
Dark Pallacus
ViP Hordes
ViP Hordes
Mensajes: 1509
Registrado: 03 Sep 2009, 00:35
PSN ID: Pallacus
Ubicación: Barcelona
Contactar:

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

Mensaje por Dark Pallacus »

Edad como float para no joder la media. :D
m0skit0 escribió:A ver si eres capaz de hacerlo tal que se introduzca la edad exacta (años y meses) y calcular la diferencia ;)
mmmmmm.... luego te lo digo ;)
PS3 - PSP 2000

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 »

Dark Pallacus escribió:Edad como float para no joder la media. :D

Amm cierto es, mil disculpas ;)
Imagen

Avatar de Usuario
Dark Pallacus
ViP Hordes
ViP Hordes
Mensajes: 1509
Registrado: 03 Sep 2009, 00:35
PSN ID: Pallacus
Ubicación: Barcelona
Contactar:

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

Mensaje por Dark Pallacus »

Pues me he liado a hacerlo:
He "comentado" las lineas referentes a la media, producto y resta para hacerlo paso a paso, empezando con la suma. Contra todo pronostico y gracias al compilador :D he conseguido aplicar un "if" para calcular la suma de las edades, el problema lo tengo para que si la suma de los meses da mas de 11, reste 12 a los meses y sume 1 a los años:
Spoiler:

Código: Seleccionar todo

// Incluimos las librerias requeridas:
#include <stdio.h>
#include <unistd.h>

//Función principal:
int main(int argc, char *argv[])
{
//Declaramos las variables
   int e1a, e1m, e2a, e2m;
   int sumaa, sumam, ml;
   int anho = 11;

//   float media, prod, dif;
//   float mediaa, mediam, proda, prodm, difa, difm;

//Pedimos 2 edades:
   printf("\nPor favor, introduce tu edad, anhos y meses (aa mm): ");
   scanf("%d %d", &e1a, &e1m);
   printf("Introduce la edad de otra persona (aa mm): ");
   scanf("%d %d", &e2a, &e2m);

//Hacemos los cálculos:
   sumam = (e1m + e2m);
   
   if(sumam > anho)
{
   printf("tas pasao\n");
   sumam - 12;
   ml + 1;
}
   
   sumaa = ml + e1a + e2a;

//Y ahora soltamos las estadísticas:
   printf("\nEntre los dos teneis %d anhos y %d meses.\n", sumaa, sumam);
//   printf("La media de edad entre los dos es de %.1f anhos.\n", (e1+e2) / 2);
//   printf("El producto de ambas edades es %.0f.\n", e1 * e2);

//Aquí me la juego:
//   printf("Os lleváis %.0f anhos.\n\n", e1 - e2);

   return 0;
}


EDITO: Solucionado:

Código: Seleccionar todo

   if(sumam > anho)
{
//Esta línea la usé para saber si se ejecutaba el "if"
//   printf("tas pasao\n");
   sumam = sumam - 12;
   ml = ml + 1;
}
Voy a por las otras operaciones ;)

EDITO:

Todas las operaciones incluidas. Ahora tengo que pulir 2 cosas; cuando los meses = 0 y la diferencia de edad.
Spoiler:

Código: Seleccionar todo

// Incluimos las librerias requeridas:
#include <stdio.h>
#include <unistd.h>

//Función principal:
int main(int argc, char *argv[])
{
//Declaramos las variables
   int e1a, e1m, e2a, e2m, sumaa, sumam, mls, mediaa, mlp, prodm;
   float mediam;
//   float dif;
//   float difa, difm;

//Pedimos 2 edades:
   printf("\nPor favor, introduce tu edad, anhos y meses (aa mm): ");
   scanf("%d %d", &e1a, &e1m);
   printf("Introduce la edad de otra persona (aa mm): ");
   scanf("%d %d", &e2a, &e2m);

//Hacemos los cálculos:
//Suma:
   sumam = (e1m + e2m);
   while(sumam>=12)
{
   sumam = sumam - 12;
   mls = mls + 1;
};
   sumaa = mls + e1a + e2a;
//Media:
   mediaa = e1a + e2a;
   mediam = e1m + e2m;   
//Producto:
   prodm = e1m * e2m;
   
   while(prodm>=12)
{
   prodm = prodm - 12;
   mlp = mlp + 1;
};

//Y ahora soltamos las estadísticas:
   printf("\nEntre los dos teneis %d anhos y %d meses.\n", sumaa, sumam);
   printf("La media de edad entre los dos es de %d anhos y %.1f meses.\n", mediaa / 2, mediam / 2);
   printf("El producto de ambas edades es %d anhos y %d meses.\n", e1a * e2a + mlp, prodm);
   printf("Os lleváis %d anhos y %d meses.\n\n", e1a - e2a, e1m - e2m);

   return 0;
}

Código: Seleccionar todo

albert@albert-K50IE:~/Documents/Programació/C/Lección 05/Variables 3$ ./var4

Por favor, introduce tu edad, anhos y meses (aa mm): 12 9
Introduce la edad de otra persona (aa mm): 23 8

Entre los dos teneis 36 anhos y 5 meses.
La media de edad entre los dos es de 17 anhos y 8.5 meses.
El producto de ambas edades es 282 anhos y 0 meses.
Os lleváis -11 anhos y 1 meses.

albert@albert-K50IE:~/Documents/Programació/C/Lección 05/Variables 3$
PS3 - PSP 2000

Responder