Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   No me concuerdan los datos (https://www.clubdelphi.com/foros/showthread.php?t=47121)

gerupc 18-08-2007 18:57:31

No me concuerdan los datos
 
Hola,

haciendo un ejercicio que se basa en comprobar si un DNI es correcto o no, me surge el siguiente problema: No consigo que identifique la letra introducida con la letra que le corresponde de una matriz. Os pongo el código para que lo veais con más facilidad:

Código Delphi [-]
program Ejercicio1;

{$APPTYPE CONSOLE}

uses
  SysUtils;

var
  dni: integer;
  letra: string;
  opcion: integer;
  resto: integer;
  buena: char;
  matriz: array[0..22] of string = ('T', 'R', 'W', 'A', 'G', 'M', 'Y', 'F', 'P', 'D', 'X', 'B', 'N', 'J', 'Z', 'S', 'Q', 'V', 'H', 'L', 'C', 'K', 'E');
begin
    writeln('');
    writeln('');
    writeln('');
    writeln('');
    writeln('');
    write(#9);
    writeln('1.-Calculo de la letra del DNI.');
    write(#9);
    writeln('2.-Comprobar si el DNI es correcto.');
    write(#9);
    writeln('3.-Finalizar la ejecucion del programa.');
    writeln('');
    write(#9);
    write('Selecciona cual de las opciones deseas procesar (1/2/3): ');
    readln(opcion);
//La opcion uno no es necesaria
if opcion = 2 then
          Begin
              writeln('');
              writeln('');
              write(#9);
              write('Introduce el DNI completo (numero y letra): ');
              readln(dni,letra);
                  resto := dni mod 23;
                Begin
                  if letra = matriz[resto] then   //ESTO NO ME LO HACE BIEN
                  writeln(#9'Al DNI ',dni,' le corresponde la letra ',matriz[resto])
                  else
                  writeln('Al DNI ',dni,' le corresponde la letra ',matriz[resto],' y no la letra ',letra);
                  readln;
                end;

Al ejecutar me imprime siempre lo correspondiente al else ('Al DNI ',dni,' le corresponde la letra ',matriz[resto],' y no la letra ',letra) aunque sean iguales.

EDITO: Por cierto, he probado con char en lugar de string como tipo de datos de la matriz y de la variable 'letra'

Si alguien me pudiese echar una mano, se lo agradecería bastante.

Un saludo,

Geru.

Delphius 18-08-2007 19:07:13

Hola gerupc, el problema puede ser porque estás comparando mal los tipos.
¿Porqué no declaras a letra y a matriz como del tipo char?
Por otro lado a lo mejor estás calculando mal el tema del resto.

Saludos,

ArdiIIa 18-08-2007 19:30:51

Mira esto
Tal vez te ayude..:)

gerupc 18-08-2007 19:31:44

Hola Delphius,

ya he probado a declararlas como char, pero nada, me hace exactamente lo mismo...

El resto está bien, ya que el ha de ser el numero del DNI dividido entre 23, y coger el resto 'restante', valga la redundancia :-P

Un saludo,

Geru.

Delphius 18-08-2007 19:33:06

gerupc, estuve haciendo pruebas y si calcula bien.
El problema es que debes leer por separado el numero y la letra.
Es decir:

Código Delphi [-]
write('Introduce el DNI completo (numero) :');
readln(dni);
write('Introduce la letra del DNI: ');
readln(letra);

Y Alli te va a operar bien. Tu problema es que el readln(dni,letra) no te tomaba el valor asignado a letra, por tanto dejaba a la variable letra con el valor "vacio".

Saludos,

gerupc 18-08-2007 19:36:35

Hola ArdIIlla,

muchas gracias pero no, he de hacerlo de esta manera, más que nada porque no me permiten utilizar ese tipo de funciones para solucionar el ejercicio, únicamente, las que he puesto :-S (o del estilo, vamos)

A ver si me podeis orientar.....:o Yo sigo trasteando !

Un saludo,

Geru.

gerupc 18-08-2007 19:41:21

Hola de nuevo Delphius,

pues ya está, muchas gracias...no me había percatado ;-) Como en el ejemplo de ejecución del ejercicio me lo ponian junto...pues me he liado :rolleyes:

Gracias y un saludo,

Geru. :D


La franja horaria es GMT +2. Ahora son las 08:18:26.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi