problemas con este ejercicio en pascal

Responder
Avatar de Usuario
fires
Mensajes: 42
Registrado: 06 Feb 2007 20:00
Ubicación: Asuncion-Paraguay

problemas con este ejercicio en pascal

Mensaje por fires »

hola...no encontre en ninguna parte que hable de pascal o del delphi que se parece bastante...pero este seria el lugar de hacer preguntas sobre programacion...osin si me equivoco de postear aqui pido disculpas a todos...

hola estoy haciendo en ejercicio sobre archivos..En el archivo tiene numeros y quiere cambiar los numeros...tengo errores de compilacion..y estube por horas tratando de ver pero no se mas que cambiar... haber si alguien me puede dar una mano porfavor...
el archivo "cifrado.txt" contiene estos datos

4849
9753


y el codigo del programa es:

Código: Seleccionar todo

(* Ejercicio #49 - Lenguaje 1
   Una empresa desea transmitir datos mediante el telefono pero estan preocupados
   de que sus telefonos pudieran estar intervenidos. Todos sus datos se transmiten
   como enteros de cuatro digitos. Le han solicitado a usted que codifique sus
   datos de tal forma de que puedan ser transmitidos con mayor seguridad.

   Debe desarrollar una funcion que reciba un entero de cuatro digitos y lo
   codifique como sigue: reemplazar cada digito por (la suma del digito mas 7)
   modulo 10. A continuacion intercambiar el primer digito con el tercero y el
   segundo con el cuarto, retornando el entero cifrado.

   Escriba igualmente otra funcion que reciba un entero codificado de cuatro
   digitos y lo codifique para formar y retornar el numero original.

   Asimismo, preparar el programa principal para codificar y decodificar datos
   que esten almacenados en archivos.

*)
program cifrado(archivo);

uses
    crt;

var
   dato, dato_codificado, dato_decodificado : string[4];
   archivo : text;


   { Funcion convertir de cadena a entero }
   function convertir_entero(cad : string): string;

   const
        M = 48;

   var
      i, num : integer;
      aux : string;

   begin
       for i:= 1 to 1 do
              num := ord(cad[i]) - M;
       str(num,aux);
       convertir_entero := aux;
   end;


   { Funcion codificar }
   function codificar (num : string) : string;

   const
        N = 4;
        modificador1 = '7';
        modificador2 = '10';

   var
      i, valor_num, codigo : integer;
      aux : string[4];


   begin
        for i := 1 to N do
           begin
               num[i] := convertir_entero(num[i]) + convertir_entero(modificador1);
               num[i] := num[i] mod convertir_entero(modificador2);
           end;
        for i:= 1 to (N div 2) do
           begin
               aux := num[i];
               num[i] := num[i + 2];
               num[i + 2] := aux;
           end;
        codificar := num;
   end;


   { Funcion decodificar }
   function decodificar(num : string) : string;

   const
        N = 4;
        modificador1 = '7';
        modificador2 = '10';

   var
      i, valor_num, codigo : integer;
      aux : string;


      begin
          for i := 1 to (N div 2) do
             begin
                 aux := num[i];
                 num[i] := num[i + 2];
                 num[i + 2] := aux;
             end;
          for i := 1 to N do
             begin
                 num[i] := convetir_entero(num[i]) + convertir_entero(modificador2);
                 num[i] := num[i] - convertir_entero(modificador1);
             end;
          decodificar := num;
      end;


{ Programa principal }
begin
    clrscr;
    assign(archivo,'c:\pascal\cifrado.txt');
    reset(archivo);
    while(not eof(archivo)) do
       begin
           while(not eoln(archivo)) do
              begin
                  read(archivo,dato);
                  dato_codificado := codificar(dato);
                  dato_decodificado := decodificar(dato);
                  writeln('El dato codificado es: ', dato_codificado);
                  writeln('El dato decodificado es: ', dato_decodificado);
                  readln(archivo);
                  writeln;
              end;
       end;
    repeat until keypressed;
end.


espero que me puedan ayudar..estube ya varios dias tratando pero no se mas como hacer...desde ya muchas gracias a todos..:)
Avatar de Usuario
Ghost
Site Admin
Mensajes: 6344
Registrado: 16 Ene 2007 23:18
Ubicación: Planeta Tierra
Contactar:

Re: problemas con este ejercicio en pascal

Mensaje por Ghost »

Ayudaría si dijeses el error que te da al compilarlo.
Icono de PC  Equipo de pruebas Desplegar firma
  • Procesador
    Intel Core i7 [email protected]
  • Placa base
    ASUS Rampage IV Formula
  • RAM
    16Gb Corsair Dominator Platinum 2133Mhz
  • Tarjeta gráfica
    AMD Radeon HD 7970 3Gb
  • Disco Duro
    Seagate 2Tb
  • Unidad Óptica
    Liteon I-HAS 124B
  • Refrigeración
    Corsair H110
  • Fuente alimentación
    Corsair AX860i
  • Caja
    NZXT Switch 810
  • Sonido
    Creative X-FI Platinum HD
  • Sistema operativo
    Windows 7 64bits
  • Monitor
    Dell U2412P
  • Teclado
    Corsair K90
  • Ratón
    SteelSeries XAI
  • Otros
    SteelSeries 5H V2
  • Otros
    Corsair Neutron GTX 240Gb
Ocultar
Avatar de Usuario
fires
Mensajes: 42
Registrado: 06 Feb 2007 20:00
Ubicación: Asuncion-Paraguay

Re: problemas con este ejercicio en pascal

Mensaje por fires »

error de tipo de dato...
Avatar de Usuario
SoTA
Mensajes: 3394
Registrado: 03 Feb 2007 12:25

Re: problemas con este ejercicio en pascal

Mensaje por SoTA »

Código: Seleccionar todo

               num[i] := num[i] mod convertir_entero(modificador2);
si no me equivoco mod devuelve el resto de dividir num entre convertir_entero(modificador2) no? pero es que estos dos datos son strings, no datos numericos, entonces no puedes dividirlos.


PD: De todas formas, quien te ha pue stos esos ejercicios? porque parece que aun estás empezando, y antes de empezar a trabajar con ficheros es conveniente aprender "maneras" por ejemplo en esa linea que te he dicho, justo en la linea anterior, a la misma variable le asignas otra cosa, y eso puede darte errores por información redundante, entonces lo mejor es que lo llamaras de forma distinta, por ejemplo declaras una variable

Código: Seleccionar todo

Var
Aux: String;
Y la primera de esas asignaciones la haces a esa variable.

PD2: Solo he visto el programa por encima para ver el error, pero creo que no te va a dar el resultado que buscas.
Avatar de Usuario
fires
Mensajes: 42
Registrado: 06 Feb 2007 20:00
Ubicación: Asuncion-Paraguay

Re: problemas con este ejercicio en pascal

Mensaje por fires »

dale...gracias....ya lo solucion
el...cambie bastante...me equivoque por tonto en muchas cosas...
si alguien quiere el codigo que me lo pida y lo subo...
en cuanto al que me da los ejercicios es mi profesor de lenguaje 1..damos "C" y "pascal"..el profesor no explica nada..para que nosotros investigemos...ya se que no tendria que ser asi..pero no hay otra..jeje:) asi que tengo que rebuscarme por mi cuenta...saludos..:)
Avatar de Usuario
SoTA
Mensajes: 3394
Registrado: 03 Feb 2007 12:25

Re: problemas con este ejercicio en pascal

Mensaje por SoTA »

si quieres un consejo has lo que puedas por coger la programación con gusto, por que si no es así lo vas a llevar muy mal, a mi por ejemplo no me agrada mucho y las paso canutas porque casi todas mis asignaturas son de programar... Menos mal q se acaban los lenguajes y al menos voy a tener que dejar de aprender nuevos y avanzar en los que ya conozco :)
Avatar de Usuario
Zoltelder
Mensajes: 4727
Registrado: 02 Feb 2007 19:59
Ubicación: Badajoz

Re: problemas con este ejercicio en pascal

Mensaje por Zoltelder »

SoTA escribió:si quieres un consejo has lo que puedas por coger la programación con gusto, por que si no es así lo vas a llevar muy mal, a mi por ejemplo no me agrada mucho y las paso canutas porque casi todas mis asignaturas son de programar... Menos mal q se acaban los lenguajes y al menos voy a tener que dejar de aprender nuevos y avanzar en los que ya conozco :)
En buen sitio te has metido entonces si no te gusta programar :P
Icono de PC  PC Gamer Desplegar firma
  • Procesador
    Intel i5 750 3.8GHz
  • Placa base
    Asus P7P55D PRO
  • RAM
    GSkill Trident 4GB 1600Mhz
  • Tarjeta gráfica
    Gigabyte 5850
  • Disco Duro
    SSD Crucial M4 128GB / WD CB 1TB / WD CB 500GB
  • Unidad Óptica
    -
  • Refrigeración
    Noctua NH-U12P SE2
  • Fuente alimentación
    Corsair HX 650
  • Caja
    Antec Twelve Hundred
  • Sonido
    Creative X-Fi Titanium
  • Sistema operativo
    Windows 7 Ultimate 64 bits
  • Monitor
    LG W2453V-PF
  • Teclado
    Logitech Wave
  • Ratón
    Logitech G9x
  • Otros
    Sennheiser PC350
  • Otros
    -
Ocultar
Avatar de Usuario
SoTA
Mensajes: 3394
Registrado: 03 Feb 2007 12:25

Re: problemas con este ejercicio en pascal

Mensaje por SoTA »

Dejemos ese tema...
Avatar de Usuario
fires
Mensajes: 42
Registrado: 06 Feb 2007 20:00
Ubicación: Asuncion-Paraguay

Re: problemas con este ejercicio en pascal

Mensaje por fires »

dale gracias sota...a mi me gusta programar..claro que aveces quieres tirar todo por la borda...y no quieres saber mas nada..pero despues vuelvo..:)
Responder