Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Lazarus, FreePascal, Kylix, etc. (https://www.clubdelphi.com/foros/forumdisplay.php?f=14)
-   -   Pascal (https://www.clubdelphi.com/foros/showthread.php?t=53628)

D.M.Nieto 25-02-2008 21:50:23

Pascal
 
Hola, me han pedido que haga un programa que lea un entero positivo n y menor que 27 y genere la siguiente matriz cuadrada (n*n).

El programa debe verificar que el número pedido es realmente menor de 27, y en caso contrario volver a solicitarlo.

Ejemplo:

introduzca el tamaño de la matriz: 3

La matriz cuadrada que se genera es:

Código:

a b c
b c d
c d e

Yo en cambio sólo he conseguido que me salga una matriz

Código:

a a a
b b b
c c c

con el siguiente código:

Código Delphi [-]
uses
  SysUtils;

var

y,x,n: integer;

begin
writeln('Introduzca un numero que simbolice el orden de la matriz');
writeln;
readln(n);
writeln;
 for x:=1 to n do
 begin
  writeln;
  for y:=1 to n do
  begin
  write(chr(96+x));
 end;
  end;
  writeln;
  writeln;
  writeln('Pulse una tecla para finalizar');
  readln;
end.

¿Alguien sabéis como puedo solucionar esto?

poliburro 25-02-2008 22:35:46

Sip, se como

maeyanes 25-02-2008 22:42:07

Hola...

Antes que nada, bienvenido al Club... si no lo has hecho, te aconsejo que primero leas la Guía de Estilo de los foros...

Sobre tu código, veo que no verificas que el número ingresado sea mayor a 0 y menor que 27...

Aquí te podemos ayudar a resolver dudas concretas, no te ayudamos haciendote la tarea...



Saludos...

Casimiro Notevi 25-02-2008 23:23:07

je,je... poliburro, no había visto tu nuevo avatar, es muy... apropiado :D ;) :)

D.M.Nieto 25-02-2008 23:40:09

Continuando con Pascal..
 
Hola,gracias por la bienvenida, he de confirmar que la guia de estilo la ley tras colgar la duda (aunque la otra guía de estilo es de lo mas reconfortante), si ya se que falta la parte de comprobar lo del 27, pero es que eso no tiene mucho curro y esta práctica es por parejas. Sabemos que eso entre los dos lo hacemos mañana en un momento pero es que no tengo ni idea de como generar bien la matriz, supongo que será algo de ir incrementando la posición o algo asi, y quería ver si me contestaba alguien o algo para tirar hacia delante con la práctica.
Mañana en cuanto tenga eso lo cuelgo por aquí a ver si me podeis ayudar.
Gracias por contestar tan rapido, además que no suelo usar los foros, pensé que no tendría contestación xd.
Saludoss

poliburro 25-02-2008 23:40:29

Cita:

Empezado por Casimiro Notevi (Mensaje 268564)
je,je... poliburro, no había visto tu nuevo avatar, es muy... apropiado :D ;) :)

jjajaja verdad que si?

duilioisola 26-02-2008 09:34:22

Pequeña ayudita:

Si x incrementa las líneas e y incrementa las columnas, deberás encontrar la función que con esos dos datos te devuelva el número de letra que deseas para esa casilla.

f(x,y) = ???

Código:

f(1,1)  f(1,2)  f(1,3)
f(2,1)  f(2,2)  f(2,3)
f(3,1)  f(3,2)  f(3,3)


D.M.Nieto 26-02-2008 16:21:29

Matriz resuelta
 
Buenasss, ya resolvimos el tema de la matriz con este código pero me han dicho que queda mas elegante usando continuamente MOD. Os lo pongo por aquí por curiosidad oprque ya estoy con otro ejercicio jeje.

Código Delphi [-]
const
 N=27;
 A=10;
type
 t_matriz=array[1..n,1..n] of integer;
var
 numero:integer;
procedure comprueba (numero:integer);
 var
  ok:boolean;
begin
  ok:=false;
  if numero>=27 then begin
  repeat
   writeln('el numero introducido es mayor que 27');
   writeln('introduza un numero de nuevo');
   readln(numero);
   if numerothen begin
    writeln('numero introducido es correcto');
    ok:=true;
   end
  until(ok=true);
  end;
  end;
  var
  y,x1: integer;
begin
  writeln('introduzca el tamanio de la matriz[menor a 27]');
  readln(numero);
  comprueba(numero);
 for x1:=1 to numero do
 begin
  writeln;
  for y:=1 to numero do
  begin
  if (x1+y-1)>numero then
    write (chr(96 + (x1+y-1)-numero))
  else
   write (chr (96 + (x1+y-1)));
    end;
  end;
  writeln;
  writeln;
  writeln('Pulse una tecla para finalizar');
  readln;
end.

Saludoss


La franja horaria es GMT +2. Ahora son las 06:00:06.

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