Pascal/Turbo Pascal - Patrones en PASCAL

 
Vista:

Patrones en PASCAL

Publicado por Ruben Muñoz Zamorano (1 intervención) el 14/11/2011 17:44:56
Hola, me han mandado un ejercicio en la universidad para realizarlo en pascal y me he quedado atrancado no se como avanzar. Detallo brevemente el ejercicio, haber si alguien me puede ayudar le envio si quiere el enunciado:

Ej: Dado el patron 13 deducimos que entre 1 y 100 hay solo uno que lo tiene, el 13.
entre 100 y 100 hay 19, por ejemplo el 131 y 213...
entre 1000 y 10000, 279... etc
bien se trata de desarrolar un programa utilizando las estructuras basicas, if, case, for, while y subprogramas que :

a)determine cuantos enteros contienen ese patron
b)mostrar los enteros en un rango que contienen ese patron
c) mostrar en caso que los haya los dos mayores numeros dentro del rango.

Se solicitara el programa que elija la opcion de un menu y pedira:

un entero positivo n q indica el patron y puede tener hasta 5 cifras
dos enteros a y b

Haber si alguien me puede echar una mano. Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

Patrones en PASCAL

Publicado por Carlos Cuyé (7 intervenciones) el 15/11/2011 18:08:44
Podrías hacer un bucle, y en cada ciclo copiar y tranformar a tipo caracter el valor del contador de ciclo. Y teniendo el valor en tipo caracter, contar las veces que aparezca la subcadena "13".
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Patrones en PASCAL

Publicado por ramon (2158 intervenciones) el 16/11/2011 18:39:29
{Espero te valga para patron de dos cifras para mas tu mismo}

program apatron;
uses
crt;
var
dato1, dato2 : string;
dato3 : array[1..8] of string;
kl, w, i, num : integer;
patron : integer;


procedure entrada_patron;
begin
writeln('Entre Numero Patron : Max 2 Cifras El Actual Es ',patron);
readln(patron);
end;

procedure comprueva_patron(nn : integer);
var
cont : longint;
bus1, bus2, bus3 : integer;
entra1, cad1 : string[10];
begin
str(nn,entra1);
writeln('El Patron Es : ',entra1);
cont := 1;
w := 1;
fillchar(dato3[w],257,' ');
dato3[w][0] := chr(256);
repeat
str(cont,cad1);
case cont of
1..100 : begin
if (cad1[1] = entra1[1]) and (cad1[2] = entra1[2]) then
begin
dato1 := dato1 + copy(cad1,1,length(cad1)) + ' ';
end;
if (cad1[2] = entra1[1]) and (cad1[3] = entra1[2]) then
begin
dato1 := dato1 + copy(cad1,1,length(cad1)) + ' ';
end;
end;
101..1000 : begin
if (cad1[1] = entra1[1]) and (cad1[2] = entra1[2]) then
begin
dato2 := dato2 + copy(cad1,1,length(cad1)) + ' ';
end;
if (cad1[2] = entra1[1]) and (cad1[3] = entra1[2]) then
begin
dato2 := dato2 + copy(cad1,1,length(cad1)) + ' ';
end;
if (cad1[3] = entra1[1]) and (cad1[4] = entra1[2]) then
begin
dato2 := dato2 + copy(cad1,1,length(cad1)) + ' ';
end;
end;

1001..10000 : begin
if (cad1[1] = entra1[1]) and (cad1[2] = entra1[2]) then
begin
dato3[w] := dato3[w] + copy(cad1,1,length(cad1)) + ' ';
end;
if (cad1[2] = entra1[1]) and (cad1[3] = entra1[2]) then
begin
dato3[w] := dato3[w] + copy(cad1,1,length(cad1)) + ' ';
end;
if (cad1[3] = entra1[1]) and (cad1[4] = entra1[2]) then
begin
dato3[w] := dato3[w] + copy(cad1,1,length(cad1)) + ' ';
end;
if (cad1[4] = entra1[1]) and (cad1[5] = entra1[2]) then
begin
dato3[w] := dato3[w] + copy(cad1,1,length(cad1)) + ' ';
end;
if length(dato3[w]) > 254 then
begin
w := w + 1;
if w > 8 then
w := 8;
fillchar(dato3[w],257,' ');
dato3[w][0] := chr(256);
end;
end;
end;
cont := cont + 1;
until cont > 10000;
kl := w;
end;

procedure ver_resultados;
begin
comprueva_patron(patron);
writeln(dato1,' El mayor Es : ',copy(dato1,length(dato1) - 3,2));
writeln;
writeln(dato2);
writeln('1§ Mayor Es : ',copy(dato2,length(dato2) - 4,4),
' 2§ Mayor Es : ',copy(dato2,length(dato2) - 8,4));
writeln;
for i := 1 to kl do
write(dato3[i]);
writeln(' 1§ Mayor Es :',copy(dato3[kl],length(dato3[kl]) - 4,4),
' 2§ Mayor Es :',copy(dato3[kl],length(dato3[kl]) - 9,4));
readln;
end;

procedure menu;
var
opcion : integer;
tecl : char;
final : boolean;
begin
opcion := 1;
final := false;
patron := 13;
repeat
gotoxy(5,2);write('**** MENU GENERAL ****');
gotoxy(5,4);write(' 1 = Cambiar Patron ');
gotoxy(5,5);write(' 2 = Mostrar Resultados ');
gotoxy(5,6);write(' 3 = Salir ');
gotoxy(5,8);write('<<<< ELIJA OPCION >>>>');
tecl := readkey;
clrscr;
case tecl of
'1' : begin
entrada_patron;
if patron > 99 then
patron := 13;
clrscr;
end;
'2' : begin
ver_resultados;
clrscr;
end;
'3' : final := true;
end;
until final = true;
end;



begin
clrscr;
menu;
end.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar