Problemas con scanf
Publicado por [Sauron] (1 intervención) el 05/01/2002 18:46:05
Hola a todos, antes de nada voy a poner el codigo del programa para que sea mas facil explicar el problema.
#include <stdio.h>
char opciones;
char nif[23]={'T','R','W','A','G','M','Y','F','P','D','X','B','N','J','Z','S','Q','V','H','L','C','K','E'};
int nifdos;
int dni;
int paso1;
int paso2;
int paso3;
int main()
{
system("clear");
// OPCIONES DEL PROGRAMA
printf("\n A)- Insertar DNI para saber el NIF");
printf("\n B)- Generar DNIs a partir del NIF");
printf("\n C)- Generar tabla de DNI aleatorios");
printf("\n D)- Verificar si un DNI es verdadero\n");
// FIN OPCIONES
printf("\n ¿ Que opcion deseas ? ");
scanf("%c", &opciones);
// CONDICIONES
if ( opciones=='a' || opciones=='A' ) // CONDICION A
{
printf("\n Has escogido la opcion A");
printf("\n Inserta el numero de DNI para saber el NIF: ");
scanf("%i", &dni);
if( dni<=00000000 | dni>=99999999 )
{
printf(" ERROR! Tienes que introducir correctamente los nueve digitos del DNI\n\n");
}
else
{
// PASOS PARA CALCULAR EL NIF
paso1=dni/23;
paso2=paso1*23;
paso3=dni-paso2;
printf("\n Primer paso (dni/23): "); //paso1
printf("%i", &paso1 );
printf("\n Segundo paso (dni*23): "); //paso2
printf("%i", &paso2 );
printf("\n Tercer paso (dni-paso2): "); //paso3
printf("%i", &paso3 );
printf("\n DNI con NIF: "); //paso4
printf("%i-%c\n\n",dni, paso3[nif] );
}
}
if ( opciones=='d' || opciones=='D' ) // CONDICION D
{
printf("\n -------------------------------------------------");
printf("\n | TABLA DE NIFS |");
printf("\n -------------------------------------------------");
printf("\n | T | R | W | A | G | M | Y | F | P | D | X | B |");
printf("\n | N | J | Z | S | Q | V | H | L | C | k | E | T |");
printf("\n -------------------------------------------------");
printf("\n Inserta la letra del DNI que quieres comprobar ");
scanf("%i", &nifdos );
if ( nifdos=='t' )
{
printf(" Es t ");
}
}
}
-----------------
Bien, el problema esta unos pocos centimetros mas arriba, justamente en: if ( opciones=='d' || opciones=='D' ) // CONDICION D
Siguiendo el codigo vereis que tengo que introucir una letra, y de ejemplo he puesto que si es t el programa diga: es t , pero esto no ocurre, sencillamente pasa de la condicion de if ( nifdos=='t' )
si alguien tiene alguna idea .....
Muchas gracias
#include <stdio.h>
char opciones;
char nif[23]={'T','R','W','A','G','M','Y','F','P','D','X','B','N','J','Z','S','Q','V','H','L','C','K','E'};
int nifdos;
int dni;
int paso1;
int paso2;
int paso3;
int main()
{
system("clear");
// OPCIONES DEL PROGRAMA
printf("\n A)- Insertar DNI para saber el NIF");
printf("\n B)- Generar DNIs a partir del NIF");
printf("\n C)- Generar tabla de DNI aleatorios");
printf("\n D)- Verificar si un DNI es verdadero\n");
// FIN OPCIONES
printf("\n ¿ Que opcion deseas ? ");
scanf("%c", &opciones);
// CONDICIONES
if ( opciones=='a' || opciones=='A' ) // CONDICION A
{
printf("\n Has escogido la opcion A");
printf("\n Inserta el numero de DNI para saber el NIF: ");
scanf("%i", &dni);
if( dni<=00000000 | dni>=99999999 )
{
printf(" ERROR! Tienes que introducir correctamente los nueve digitos del DNI\n\n");
}
else
{
// PASOS PARA CALCULAR EL NIF
paso1=dni/23;
paso2=paso1*23;
paso3=dni-paso2;
printf("\n Primer paso (dni/23): "); //paso1
printf("%i", &paso1 );
printf("\n Segundo paso (dni*23): "); //paso2
printf("%i", &paso2 );
printf("\n Tercer paso (dni-paso2): "); //paso3
printf("%i", &paso3 );
printf("\n DNI con NIF: "); //paso4
printf("%i-%c\n\n",dni, paso3[nif] );
}
}
if ( opciones=='d' || opciones=='D' ) // CONDICION D
{
printf("\n -------------------------------------------------");
printf("\n | TABLA DE NIFS |");
printf("\n -------------------------------------------------");
printf("\n | T | R | W | A | G | M | Y | F | P | D | X | B |");
printf("\n | N | J | Z | S | Q | V | H | L | C | k | E | T |");
printf("\n -------------------------------------------------");
printf("\n Inserta la letra del DNI que quieres comprobar ");
scanf("%i", &nifdos );
if ( nifdos=='t' )
{
printf(" Es t ");
}
}
}
-----------------
Bien, el problema esta unos pocos centimetros mas arriba, justamente en: if ( opciones=='d' || opciones=='D' ) // CONDICION D
Siguiendo el codigo vereis que tengo que introucir una letra, y de ejemplo he puesto que si es t el programa diga: es t , pero esto no ocurre, sencillamente pasa de la condicion de if ( nifdos=='t' )
si alguien tiene alguna idea .....
Muchas gracias
Valora esta pregunta
0