/
Inicio :: Foros

 F.A.Q.F.A.Q.                  Conéctese para revisar sus mensajesConéctese para revisar sus mensajes   

No devuelve nada!! :S

 
      Índice del Foro elrincondelc.com -> Algoritmos
Ver tema anterior :: Ver siguiente tema  
AutorMensaje
Arwarld



Registrado: 27 Mar 2011
Mensajes: 7

MensajePublicado: 14/04/2011 1:22 pm
Título: No devuelve nada!! :S

Buenas ^^ he hecho el siguiente programa para verificar el DNI de una persona y posteriormente darnos la letra correspondiente con el DNI introducido. El problema es que no me devuelve nada y no se porque. Alguien puede echarme un cable? gracias ^^

os dejo el codigo:

Código:

#include <stdlib.h>
#include <string.h>
#include <stdio.h>

#define kTAM 8
 
main(int argc, char *argv[])
{
   int  dni;
   char letra[] = "TRWAGMYFPDXBNJZSQVHLCKE";
   printf("Este programa verifica el DNI y obtiene la letra correspondiente al mismo");

   if (argc != 2)
   {
      printf("Uso: %s <DNI>\n", argv[0]);
   }
   else
   {
      if (strlen(argv[1]) != kTAM)
      {
         puts("DNI no valido.");
      }
      else
      {
         dni = atoi (argv[1]);
         dni %= 23;
         printf("%s-%c\n", argv[1],letra[dni]);
      }
   }
   system("pause");
   return 0;
}
Volver arriba
rir3760



Registrado: 01 Oct 2004
Mensajes: 6586
Ubicación: Mexico

MensajePublicado: 14/04/2011 3:00 pm
Título:

Deberia funcionar, cambios solo necesita algunos menores. En mi opinion estaria mejor asi:
Código:
#include <stdlib.h>
#include <string.h>
#include <stdio.h>

#define kTAM 8

int main(int argc, char *argv[])
{
   int  dni;
   char letra[] = "TRWAGMYFPDXBNJZSQVHLCKE";
   
   puts("Este programa verifica el DNI");
   if (argc != 2){
      printf ("Uso: %s <DNI>\n", argv[0]);
   }else if (strlen (argv[1]) != kTAM){
      puts ("DNI no valido.");
   }else {
      dni = atoi(argv[1]) % (sizeof letra - 1);
      printf ("%s-%c\n", argv[1], letra[dni]);
   }
   
   system ("pause");
   return 0;
}


En tu caso tal vez no funcione (ninguno de los dos programas) si el compilador que estas utilizando es para MS-DOS/Windows 3.X como es el caso con los de Borland. En ellos el tipo "int" se compone de solo 16 bits y con ellos no "alcanza" para almacenar numeros de ocho digitos. Si ese es el caso (espero que no) basta con utilizar una variable de tipo "long" y en lugar de "atoi" utilizas "atol".

Un saludo
_________________
Memory never recaptures reality. Memory reconstructs. All reconstructions change the original, becoming external frames of reference that inevitably fall short.
--
Mentat Handbook
Volver arriba
Arwarld



Registrado: 27 Mar 2011
Mensajes: 7

MensajePublicado: 14/04/2011 4:07 pm
Título:

pos si, utilizo el Borland porque en clase es lo que nos dan XD lo he probado como me has dicho y funciona, y mi codigo anterior lo he compilado con el DEV-c++ y tmpoco está mal. A la proxima probare mas compiladores antes de abrir una consulta ^^

Muchas gracias por tu resolución Razz
Volver arriba
      Índice del Foro elrincondelc.com -> Algoritmos
Página 1 de 1Todas las horas están en GMT - 8 Horas

 
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas

(c) ElRincondelC.com

Un proyecto de UrlanHeat.com