Advertisement
Lord_agustin19

Algoritmos y Estructura de datos - TP 2

Jul 30th, 2019
623
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 6.36 KB | None | 0 0
  1. program tp2;
  2. {Comisión 02 - Agustín Gómez}
  3. uses CRT;
  4.  
  5. type
  6.     codigobarra = array[1..8] of integer;
  7.     codempre = array[1..3] of integer;
  8.     imp = array[1..8] of integer;
  9.     {Arreglos del QR}
  10.     qr=array[1..4] of integer;
  11.  
  12. const
  13.      r = 'aprobame'; {Clave}
  14.      izqsup = 201; {Constantes para el menú de opciones}
  15.      izqinf = 200;
  16.      dersup = 187;
  17.      derinf = 188;
  18.      fila = 205;
  19.      columna = 186;
  20.      cuad = 254;   {Constantes para el QR}
  21.      rec = 219;
  22.  
  23. var ch,op,x: char;
  24.     contra: string[8];
  25.     codigo:codigobarra;
  26.     codempresa:codempre;
  27.     codiqr:qr;
  28.     importe:imp;
  29.     I,J,aux,cont,auxp,pospar,posimp:integer;
  30.  
  31.  
  32.  
  33. {--------------Contrasegna-------------}
  34. procedure encriptaclave;
  35. BEGIN
  36.   cont:= 0;
  37.   ClrScr;
  38.   Gotoxy(43,7);
  39.   Textcolor(14);
  40.   writeln('INGRESE UNA CLAVE DE 8 CARACTERES');
  41.   writeln();
  42.   Repeat
  43.   textcolor(15);
  44.   ch:= readkey;
  45.   While (ch<>#13) do
  46.   Begin
  47.    contra:=contra + ch;
  48.    write('*');
  49.    ch:=readkey
  50.   End;
  51.   If (contra = r) then
  52.    begin
  53.     ClrScr;
  54.     Gotoxy(5,3);
  55.     Textcolor(10);
  56.     writeln('>CLAVE CORRECTA');
  57.    end
  58.   Else
  59.    begin
  60.      ClrScr;
  61.      Gotoxy(5,3);
  62.      Textcolor(12);
  63.      writeln('>CLAVE INCORRECTA, INTENTE OTRA VEZ');
  64.      writeln();
  65.      textcolor(15);
  66.      cont:= cont+1;
  67.      contra:='';
  68.    end;
  69.   Until (contra = r) or (cont=3);
  70. readkey;
  71. ClrScr;
  72. End;
  73.  
  74.  
  75.  
  76. {--------------Codigo de barra----------------}
  77. procedure barra;
  78. begin
  79.      ClrScr;
  80.      Textcolor(15);
  81.      Repeat
  82.      writeln('Ingrese el codigo de la empresa digito por digito, para salir ingrese x');
  83.      for i:= 1 to 3 do
  84.      readln(codempresa[i]);
  85.      Until (codempresa[i] >= 0) and (codempresa[i] <= 9);
  86.      while x <> 'x' do
  87.      begin
  88.            Textcolor(15);
  89.            Repeat
  90.            writeln('Ingrese importe digito por digito, para salir ingrese x');
  91.            for i:= 4 to 7 do
  92.            readln(importe[i]);
  93.            Until (importe[i] >= 0) and (importe[i] <= 9);
  94.  
  95.  
  96.            {Asignación}
  97.            for i:= 1 to 8 do
  98.            codigo[i]:= 0;
  99.            for i:= 1 to 3 do
  100.            codigo[i]:= codempresa[i];
  101.            for i:= 4 to 7 do
  102.            codigo[i]:= importe[i];
  103.  
  104.  
  105.            {---------Suma de pares--------}
  106.            auxp := 0;
  107.            pospar := 0;
  108.            while(auxp <= 6) do
  109.            begin
  110.            auxp := auxp + 2;
  111.            pospar := pospar + codigo[auxp];
  112.            end;
  113.  
  114.            {---------------Suma de impares------------}
  115.            auxp := 1;
  116.            posimp := 0;
  117.            while(auxp <= 7) do
  118.            begin
  119.            auxp := auxp + 2;
  120.            posimp := posimp + codigo[auxp];
  121.            end;
  122.  
  123.            {Verificador}
  124.            codigo[8]:= (abs(pospar - posimp)mod 10);
  125.  
  126.            textcolor(13);
  127.            for I := 1 to 8 do
  128.            begin
  129.            auxp := codigo[I];
  130.                 case auxp of
  131.                 0:write('****');
  132.                 1:write('***|');
  133.                 2:write('**|*');
  134.                 3:write('**||');
  135.                 4:write('*|**');
  136.                 5:write('*|*|');
  137.                 6:write('*||*');
  138.                 7:write('*|||');
  139.                 8:write('|***');
  140.                 9:write('|**|');
  141.                 end;
  142.  
  143.            end;
  144.            writeln();
  145.      end;
  146. ClrScr;
  147. end;
  148.  
  149.  
  150. {---------------------Codigo QR-----------------------}
  151. procedure binario;
  152. begin
  153. for I:= 1 to 4 do
  154. begin
  155. aux := codiqr[I];
  156. case aux of
  157. 0:write('**|| ****');
  158. 1:write('**|| ***|');
  159. 2:write('**|| **|*');
  160. 3:write('**|| **||');
  161. 4:write('**|| *|**');
  162. 5:write('**|| *|*|');
  163. 6:write('**|| *||*');
  164. 7:write('**|| *|||');
  165. 8:write('**|| |***');
  166. 9:write('**|| |**|');
  167. end;
  168. end;
  169. end;
  170.  
  171. procedure dibuja1;
  172. begin
  173. for I := 1 to 8 do
  174. begin
  175. gotoxy(I,1);
  176. textcolor(9);
  177. write(chr(cuad));
  178. gotoxy(I,8);
  179. write(chr(cuad));
  180. gotoxy(I,14);
  181. write(chr(cuad));
  182. gotoxy(I,21);
  183. write(chr(cuad));
  184. end;
  185. for I := 14 to 21 do
  186. begin
  187. gotoxy(I,1);
  188. write(chr(cuad));
  189. gotoxy(I,8);
  190. write(chr(cuad));
  191. end;
  192. for I := 9 to 13 do
  193. begin
  194. gotoxy(I,7);
  195. write(chr(cuad));
  196. end;
  197. end;
  198.  
  199. procedure dibuja2;
  200. begin
  201. for J := 1 to 8 do
  202. begin
  203. gotoxy(1,J);
  204. textcolor(9);
  205. write(chr(rec));
  206. gotoxy(8,J);
  207. write(chr(rec));
  208. gotoxy(14,J);
  209. write(chr(rec));
  210. gotoxy(21,J);
  211. write(chr(rec));
  212. end;
  213. for J := 14 to 21 do
  214. begin
  215. gotoxy(1,J);
  216. write(chr(rec));
  217. gotoxy(8,J);
  218. write(chr(rec));
  219. end;
  220. for J := 8 to 14 do
  221. begin
  222. gotoxy(7,J);
  223. write(chr(rec));
  224. end;
  225. end;
  226.  
  227. procedure partevar;
  228. begin
  229. Writeln('Ingrese cuatro numeros del 0 al 9');
  230. writeln();
  231. For I := 1 to 4 do
  232. begin
  233. writeln('Ingrese digito por digito');
  234. readln(codiqr[I]);
  235. binario;
  236. end;
  237. end;
  238.  
  239. procedure grafico;
  240. begin
  241. for I := 18 to 21 do
  242. begin
  243. textcolor(4);
  244. gotoxy(I,10);
  245. end;
  246. end;
  247.  
  248. procedure qrcod;
  249. begin
  250. ClrScr;
  251. partevar;
  252. ClrScr;
  253. grafico;
  254. dibuja1;
  255. dibuja2;
  256. readkey
  257. end;
  258.  
  259.  
  260.  
  261.  
  262. {--------------Menu de opciones---------------}
  263. procedure menulindo;
  264. begin
  265. gotoxy(9,3);
  266. write(chr(izqsup));
  267. gotoxy(9,8);
  268. write(chr(izqinf));
  269. gotoxy(50,3);
  270. write(chr(dersup));
  271. gotoxy(50,8);
  272. write(chr(derinf));
  273. end;
  274.  
  275. procedure menux;
  276. begin
  277. for I := 10 to 49 do
  278. begin
  279. gotoxy(I,3);
  280. write(chr(fila));
  281. gotoxy(I,8);
  282. write(chr(fila));
  283. end;
  284. end;
  285.  
  286. procedure menuy;
  287. begin
  288. for I := 4 to 7 do
  289. begin
  290. gotoxy(9,I);
  291. write(chr(columna));
  292. gotoxy(50,I);
  293. write(chr(columna));
  294. end;
  295. end;
  296.  
  297. procedure casos;
  298. begin
  299. Repeat
  300. textbackground(0);
  301. gotoxy(10,4);
  302. textcolor(11);
  303. writeln('Pulse 1 para introducir una clave');
  304. gotoxy(10,5);
  305. writeln('Pulse 2 para generar un codigo de barras');
  306. gotoxy(10,6);
  307. writeln('Pulse 3 para generar un QR');
  308. gotoxy(10,7);
  309. writeln('Pulse 4 para salir');
  310. writeln();
  311. writeln();
  312. readln(op);
  313. Until (op >= '1') and (op <= '4');
  314. case op of
  315. '1':encriptaclave;
  316. '2':barra;
  317. '3':qrcod;
  318. '4':exit;
  319. end;
  320.  
  321.  
  322. Begin
  323. ClrScr;
  324. textcolor(4);
  325. menulindo;
  326. menux;
  327. menuy;
  328. While (#13 <> op) do
  329. begin
  330. gotoxy(10,4);
  331. textcolor(11);
  332. write('Bienvenido al menu de opciones');
  333. gotoxy(10,6);
  334. writeln('Pulse enter para continuar');
  335. writeln();
  336. writeln();
  337. readln(op);
  338. ClrScr;
  339. end;
  340. textcolor(4);
  341. menulindo;
  342. menux;
  343. menuy;
  344. casos;
  345. end;
  346. End;
  347.  
  348. begin
  349. textcolor(4);
  350. menulindo;
  351. menux;
  352. menuy;
  353. While (#13 <> op) do
  354. begin
  355. gotoxy(10,4);
  356. textcolor(11);
  357. write('Bienvenido al menu de opciones');
  358. gotoxy(10,6);
  359. writeln('Pulse enter para continuar');
  360. writeln();
  361. writeln();
  362. readln(op);
  363. end;
  364. casos;
  365. readkey
  366. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement