Program vectores;

Uses

        crt;

Var

        Sum,Media,Modu1,Modu2,Escalar:real;

        t,q,z,x,i,j:integer;

        V:array[1..5] of integer; (*Se declara las variables para la estructura array, según la cual se accederá a cada uno de sus datos mediante un indicador común*)

        Vec,Vector,VSum,VX:array[1..3] of integer;

        Nom:ansistring;

        a,b,c,k:char;

Begin

clrscr;

Writeln('Buenas, bienvenido al apasionante mundo de los vectores, mi nombre es GladOs y voy a ser tu gu¡a');

Delay(500);

Writeln('¨Cu l es tu nombre?');

Readln(Nom);

Writeln('Encantada ',Nom);

Delay(500);

Writeln('­Empecemos!');

Repeat (*Se establece el principio de la repetión general del programa*)

Repeat (*Se establece una función repeat de forma que se asignarán valores a cada indice de la estructura array*)

        For i:=1 to 5 do

                Begin

                        Writeln('Introduce el componente ',i,' del vector');

                        Readln(V[i]);

                End;

        Writeln('Perfecto, este es tu vector: (',V[1],',',V[2],',',V[3],',',V[4],',',V[5],')'); (*Se recurre a los datos de la estructura array, nombrandola a su determinante y al indice*)

        Delay(500);

        Writeln('¨Es correcto?(s/n)');

        Readln(b)

Until b in ['S','s'];

Writeln('Por lo tanto, la suma de los 5 componentes es:');

For i:=1 to 5 do (*Con esta función for logro un efecto de “pensando”*)

begin

   write('.');

   Delay(500);

End;

Sum:=V[1]+V[2]+V[3]+V[4]+V[5];

Writeln(Sum:0:2); (*Determino el numero de decimales que, al ser real, debe de mostrarse*)

Delay(500);

Writeln;

Writeln('Por lo tanto, la media de tus componentes ser :');

For i:=1 to 5 do

begin

   write('.');

   Delay(500);

End;

Media:= Sum/5;

Writeln(Media:0:2);

Delay(500);

Writeln('De acuerdo, quieres continuar descubriendo el mundo de los vectores?');

For j:=1 to 10 do

begin

   write('.');

   Delay(300);

End;

Writeln('Claro que s¡!');

Delay(500);

Repeat

        Writeln(Nom,'Escribe ahora un nuevo vector de 3 componentes');

        For t:=1 to 3 do

                Begin

                        Writeln('Introduce el componente ',t,' del vector'); (*Se pide que introduzca el componente t, siendo t el indice de la estructura array, que ira de 1 a 3*)

                        Readln(Vec[t]);

                End;

        Writeln('Entonces tu primer vector es este: (',Vec[1],',',Vec[2],',',Vec[3],')');

        Delay(500);

        Writeln('¨Es correcto?(S/N)');

        readln(c);

Until c in ['S','s'];

Repeat

        Writeln('Escribe ahora un segundo vector de 3 componentes');

        For q:=1 to 3 do

                Begin

                        Writeln('Introduce el componente ',q,' del vector');

                        Readln(Vector[q]);

                End;

        Writeln;

        Writeln('Perfecto, este es tu segundo vector: ',Vector[1],',',Vector[2],',',Vector[3],')');

        Writeln('¨Son correctos?(s/n)');

        Readln(a)

Until a in ['S','s'];

Writeln('Perfecto, comenzar‚ con mis c lculos!');

For j:=1 to 10 do

begin

   write('.');

   Delay(300);

End;

For z:=1 to 3 do

        VSum[z]:=Vector[z]+Vec[z]; (*Realizo la suma de las estructuras array de determinante z, yendo z desde 1 hasta 3, para asi generar una nueva estructura array a partir de la suma de las anteriores*)

        Writeln('El resultado de la suma de tus vectores es: (',VSum[1],',',Vsum[2],',',Vsum[3],')');

Delay(500);

For x:=1 to 3 do

        VX[x]:=Vector[x]*Vec[x];

Escalar:=VX[1]+VX[2]+VX[3];

        Writeln('El resultado del producto escalar de tus vectores es: (',VX[1],',',VX[2],',',VX[3],')');

Modu1:=Sqrt(sqr(Vector[1])+sqr(Vector[2])+sqr(Vector[3])); (*La función sqrt realiza una raiz cuadrada, la sqr, eleva al cuadrado*)

Modu2:=Sqrt(sqr(Vec[1])+sqr(Vec[2])+sqr(Vec[3]));

Writeln('El modulo de tu primer vector es: ',Modu1):0:2;

delay(500);

Writeln('El modulo de tu segundo vector es: ',Modu2:0:2);

writeln();

Writeln('¨Quieres volver a empezar?');

k:=readkey;

until k in ['N','n'];

End.