Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 18-08-2007
Avatar de gerupc
gerupc gerupc is offline
Miembro
 
Registrado: jul 2007
Ubicación: Universidad de Deusto
Posts: 61
Poder: 17
gerupc Va por buen camino
Exclamation 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.
__________________
Mi Blog
---------------------
Universidad de Deusto
ESIDE-Escuela Superior de Ingenieros Deusto
Responder Con Cita
  #2  
Antiguo 18-08-2007
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
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,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #3  
Antiguo 18-08-2007
Avatar de ArdiIIa
[ArdiIIa] ArdiIIa is offline
Miembro Premium
 
Registrado: nov 2003
Ubicación: Valencia city
Posts: 1.481
Poder: 22
ArdiIIa Va por buen camino
Mira esto
Tal vez te ayude..
__________________
Un poco de tu generosidad puede salvar la vida a un niño. ASÍ DE SENCILLO
Responder Con Cita
  #4  
Antiguo 18-08-2007
Avatar de gerupc
gerupc gerupc is offline
Miembro
 
Registrado: jul 2007
Ubicación: Universidad de Deusto
Posts: 61
Poder: 17
gerupc Va por buen camino
Exclamation

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.
__________________
Mi Blog
---------------------
Universidad de Deusto
ESIDE-Escuela Superior de Ingenieros Deusto
Responder Con Cita
  #5  
Antiguo 18-08-2007
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
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,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #6  
Antiguo 18-08-2007
Avatar de gerupc
gerupc gerupc is offline
Miembro
 
Registrado: jul 2007
Ubicación: Universidad de Deusto
Posts: 61
Poder: 17
gerupc Va por buen camino
Smile

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..... Yo sigo trasteando !

Un saludo,

Geru.
__________________
Mi Blog
---------------------
Universidad de Deusto
ESIDE-Escuela Superior de Ingenieros Deusto
Responder Con Cita
  #7  
Antiguo 18-08-2007
Avatar de gerupc
gerupc gerupc is offline
Miembro
 
Registrado: jul 2007
Ubicación: Universidad de Deusto
Posts: 61
Poder: 17
gerupc Va por buen camino
Talking

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

Gracias y un saludo,

Geru.
__________________
Mi Blog
---------------------
Universidad de Deusto
ESIDE-Escuela Superior de Ingenieros Deusto
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Crear base de datos y cargar datos desde delphi Albano MySQL 4 17-05-2007 20:01:18
Herramienta case para diccionario de datos de base de datos firebird mcalmanovici Firebird e Interbase 1 11-02-2007 15:17:37
Como pasar datos de una hoja de Excel a Bases de Datos de Paradox Goyo OOP 1 06-02-2007 01:57:20
Guardar en 1 base de datos SQL, datos procedentes de 2 tablas distintas adaypr C++ Builder 1 05-09-2006 11:56:33
Reto Para Expertos En Base De Datos Y Tipos De Datos.... (blob) frankmch Conexión con bases de datos 2 08-09-2003 19:44:52


La franja horaria es GMT +2. Ahora son las 11:53:05.


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
Copyright 1996-2007 Club Delphi