Ayuda Turbo Pascal

_-Itachi-_

Buenas, en clases de programacion me ha tocado hacer un programa en el que introduces 2 vectores cualesquiera y el programa tiene que devolver tres vectores, uno el vector x, debe dar los elementos comunes a ambos vectores, el vector y debe dar los elementos que estan en el primer vector pero no en el segundo, y le tercero debe dar los elementos del 3 vector que no este en el 1. He hecho la primera parte del programa (hasta el vector x) y el problema que tengo es que funciona, pero no siempre, para los mismos valores del vector, 1 de cada 3 veces da los elementos correctos, 1 de cada 3 quita uno de los elementos y añade un numero gigantesco, y el resto de veces repite uno de los vectores. Este es el codigo, le he pedido ayuda al profesor, y no me ha corregido nada y dice, deberia dar bien, pero turbopascal no da bien, y ahi ha quedado su ayuda:

Program hijk;

var

e,b,c,u,n,m,a,i,j,k:integer;
v,w,x,y,z:array[1..100] of integer;
repetido:Boolean;


begin


       Writeln('Introduzca el tamaño del primer vector:');
       Readln(n);
       Writeln('Introduzca los números del primer vector:');
       For i:=1 to n do 
          read(v[i]);
       
       Writeln('Introduzca el tamaño del segundo vector:');
       readln(m);
       Writeln('Introduzca los números del segundo vector:');
       For j:=1 to m do 
          read(w[j]);

a:=1;
For i:=1 to n do
           Begin
           For j:=1 to m do
           If v[i ]=w[j] then
                                 Begin
                                 repetido:=false;

                             For k:=1 to a do
                                     If v[i]=x[a] then repetido:=true;

                             If repetido=false then
                             Begin
                             x[a]:=v[i];
                             a:=k+1;
                             end;
                             end;

          
Write('Este es el vector X: ');
     For k:=1 to a-1 do 
        write(x[k],' ');
Readln;
readln;
end.

-Puede que haya algun error a la hora de copiar, porque lo he copiado a mano ya que no he encontrado otra forma de copiar directamente de turbo pascal a ningun sitio

-hay algun fallo, o solo es mi turbo pascal el que da problemas con eso?, el error da sobre todo con vectores iguales, dando igual el orden de los elementos

Version 2.0

Me piden hacer unr egistro, y no hemos dado registros. Los campos a rellenar son:

-Nombre
-Edad
-Grupo (A, B o C)

Hay que crear un programa que lea los datos por teclado, los muestre por pantalla, los ordene por nombre, edad, y grupo. Yo lo unico que he conseguido hacer es declarar el type, pego lo que he escrito hasta el momento, sin que explote pero si con error



type datos=record
     Nombre:string;
     Edad:integer;
     Grupo:char;
     end;
     vector=array[1..100] of datos;


Var nombre:datos;
    edad:datos;
    grupo:datos;
    v:vector;
    i,n:integer;

begin;
writ
Readln(n);

Writeln('nombre, edad, grupo');

For i:=1 to n do
read(v[edad.edad, nombre.nombre, grupo.grupo]);

For i:=1 to n do writeln(edad.edad, nombre.nombre, grupo.grupo);

readln;
readln;
end.


Es una mierda, pero ya no se seguir, porque intento crear un array que almacene los distintos tipos, pero no hay manera, lo ultimo que he intentado es meter 3 For pero nose como vincularlos a un array ni nada por el estilo

BLZKZ

1º aprende a tabular. Nunca pongas nada en la misma línea despues del "do" del "for". Sangrías y espacios a miles. Usa

[code]

[/code] para poner código.

2º Defines más variables de las que deberías, no necesitas tantas

3º si defines el tamaño del vector a 100 y luego pides el tamaño, no crees que es un poco extraña esa manera? es más sencillo que hagas un registro con un contador de 0 a 100 y un vector de 1 a 100 (cada vez que introduzcas un caracter de ese vector sumas 1 al contador).

Me niego a seguir mirando tu código hasta que tabules xD

_-Itachi-_

tabular, habia estado poniendo un monton de espacios pero no se a donde han ido a parar y no conocia la funcion [/code] de la web :S ahora intento arreglarlo un poco, lo de las variables, es que he borrado la otra parte del programa, las variables estan relacionadas con el resto de la practica, y lo del array[1..100] es como nos han enseñado en la uni xD no se ponerlo de otra forma

EDIT: arreglado, hay alguna forma de copiar de turbo pascal a word que no sea a mano?

BLZKZ

el .pas de turbo pascal es un archivo de texto plano, vamos que lo abres con el bloc de notas y lo ves perfectamente ;)

salu2

Edit, ya si el array de 1 a 100 lo tienes que poner, solo que yo no controlaría el limite como tu lo haces sino con el contador. ahora reviso edito y miro si veo algo raro

_-Itachi-_

alguna idea de que falla?

4 meses después
_-Itachi-_

Nueva duda en #1

BLZKZ

a ver para definir un registro no hace falta que uses type.

type

var
 datos : record
  nombre: string[10];
  edad: integer;
  DNI: string[9];
 end;

Begin
  writeln ('introduce nombre');
  readln (datos.nombre);
  writeln ('tu nombre es: ', datos.nombre);
  datos.dni := '03423432E';
  writeln ('El dni es: ', datos.dni);
end.

Así funcionan basicamente. Si declaras el type datos como has hecho luego solo tienes que poner en var, datosUsu: datos asi tendras ya la variable. Piensa siempre que al crear un type lo puedes usar de la misma manera que si fuera cualquier tipo predefinido (integer, char...)

Tu luego has declarado variables "nombre: datos" etc, entonces lo que estas diciendo es que hay una variable que se llama nombre que dentro tiene un registro con los campos nombre, edad y grupo y no es lo que buscas :).

Piensa que si haces un array de datos (un array de registros) lo accedes de este modo, nombreDeLaVariable.datos.campo, donde el campo es nombre, grupo o los que hayas puesto tu en el registro.

Tienes dos maneras de asignar valores, y son como te lo he puesto arriba.

Ahora estoy bastante ocupado por lo que no puedo explicarlo mejor. Si no te queda claro mirate http://www.aprendeaprogramar.com/mod/resource/view.php?id=137 .

Salu2

_-Itachi-_

vale, gracias, creo que ya lo he entendido, mañana pruebo a ver si funciona y te comento ^^

Usuarios habituales

  • _-Itachi-_
  • BLZKZ