AYUDA Codigo C Programa facilito!

Hola
Pues estoy en mis comienzos de C y no se que he hecho mal que al compilar el siguiente programa no se queja pero al ejecutarlo me da error en ejecucion y se me cierra, se cierra exactamente cuando metes la fecha...

#include <stdio.h>
#include <conio.h>
#include <windows.h>
int main() {
int d1,d2,m1,m2,a1,a2,a3,a4,p1,p2,p3,p4;
printf("Dime ahora tu fecha de nacimiento en el siguiente formato DDMMAAAA\n");
scanf("%d","%d","%d","%d","%d","%d","%d","%d",&d1,&d2,&m1,&m2,&a1,&a2,&a3,&a4);
p1=d1+d2;
p2=m1+m2;
p3=a1+a2;
p4=a3+a4;
printf("El PIN de tu tarjeta es: %d%d%d%d\n",p1,p2,p3,p4);
system("PAUSE");
return 0;
}


Alguien me podria decir que esta mal? Estoy un poco pillado con esto

Gracias y un saludo!
scanf("%d","%d","%d","%d","%d","%d","%d","%d",&d1,&d2,&m1,&m2,&a1,&a2,&a3,&a4);


¿que es esto, por dios?

EDITO: puedes buscar por internet

tienes que leer el entero, y luego ya "separarlo"... hacerlo así a lo bestia, como verás, no funciona..
Deja scanf así:
scanf("%d%d%d%d%d%d%d%d",&d1,&d2,&m1,&m2,&a1,&a2,&a3,&a4);


Eso sí, de esa forma tienes que meterlo cifra a cifra (primero un numero, pulsas intro, luego otro, pulsas intro....)

Un saludo.
Usas mal (y mucho) scanf.

http://www.conclase.net/c/librerias/fun ... ?fun=scanf
http://www.conclase.net/c/librerias/fun ... un=getchar

Ya que pides toda la fecha junta, o coges toda la cadena de golpe y separas caracteres, o coges caracter por caracter.
eXecuter está baneado por "utilizar un clon para saltarse un baneo"
Orion escribió:
scanf("%d","%d","%d","%d","%d","%d","%d","%d",&d1,&d2,&m1,&m2,&a1,&a2,&a3,&a4);


¿que es esto, por dios?

EDITO: puedes buscar por internet

tienes que leer el entero, y luego ya "separarlo"... hacerlo así a lo bestia, como verás, no funciona..


Por Yaveh, ¡qué locura! [sonrisa]

Personalmente recogería toda la cadena utilizando "/" como caracter de separación, es decir, formato DD/MM/AAAA
eXecuter : http://es.youtube.com/watch?v=y40fXnVCmhI


yo haría eso... o manipularía el numero (que es un lío de por si pedir los datos así del tirón) dividiendolo y metiéndolo en las variables respectivas...
gracias a todos!

perdonad pero es que estoy en mis comienzos, un fallo gordo lo tiene cualquiera jajaja

al final lo he dejado asi:

#include <stdio.h>
#include <windows.h>
int main (){
int a,b,c,d,e,f,g,h,i,j,k,l;
printf("Introduce ahora tu fecha de nacimiento digito a digito,\npulsando ENTER cada digito:\n");
scanf("%d%d%d%d%d%d%d%d",&a,&b,&c,&d,&e,&f,&g,&h);
i=(a+b)%10;
j=(c+d)%10;
k=(e+f)%10;
l=(g+h)%10;
printf("El PIN es %d%d%d%d\n",i,j,k,l);
system("PAUSE");
return 0;
}


he descubierto (aunque todos ya lo sepais pero yo no lo sabia) que si no ponias %10 al final de cada operacion el codigo no salia PIN no salia de 4 digitos, sino que por ejemplo si los numeros hubieran sido 9+1 en vez de un 0 te daria un 10 de modo que el PIN ya no tendra 4 digitos sino un numero mayor.

lo dicho, gracias a todos!
Boletin de practicas numero 1, ejercicio 2 eh?
es lo que tiene el interes por las cosas, que cuando falla algo se mira y si no se pregunta para aprender mas :), nadie nace sabiendo y el que lo haga, bendito sea :)
8 respuestas