Advertisement
Guest User

Untitled

a guest
Oct 16th, 2017
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 16.00 KB | None | 0 0
  1. program Untitled(input,output);
  2. USES CRT;
  3.  
  4. TYPE AT=RECORD
  5. DNI: INTEGER;
  6. NOMBRE:STRING[50]
  7. END;
  8.  
  9. VAR ATLETAS:FILE OF AT;
  10.  
  11.  
  12.  
  13. TYPE DIS=RECORD
  14. CODDISCIPLINA:STRING[7];
  15. DESCRIP:STRING[20];
  16. EQUIPO:CHAR
  17. END;
  18. VAR DISCIPLINAS:FILE OF DIS;
  19.  
  20.  
  21.  
  22.  
  23.  
  24. TYPE PART=RECORD
  25. CODDISCIPLINA:STRING[7];
  26. ANO:INTEGER;
  27. DNI:INTEGER
  28. END;
  29. VAR PARTICIPANTES:FILE OF PART;
  30.  
  31.  
  32.  
  33. TYPE SED=RECORD
  34. CODINTERNACIONAL:STRING[3];
  35. DESCRIPCION:STRING[35]
  36. END;
  37.  
  38. VAR SEDES:FILE OF SED;
  39.  
  40. TYPE MXA=RECORD
  41. DNI:INTEGER;
  42. ANO:INTEGER;
  43. CODINTERNACIONAL:STRING[3];
  44. MEDALLA: ARRAY [1..3] OF INTEGER ;
  45. END;
  46. VAR MEDALLASXATLETAS:FILE OF MXA;
  47.  
  48. VAR ATLETA:AT;
  49.  
  50. VAR DISCIPLINA:DIS;
  51. VAR PARTICIPANTE:PART;
  52. VAR SEDE:SED ;
  53. VAR MEDALLAS:MXA ;
  54. VAR est:integer;
  55. VAR auxat : PART;
  56.  
  57. PROCEDURE CARGAATLETAS();
  58. VAR i,j : integer;
  59. VAR auxi : AT;
  60. VAR auxj : AT;
  61. BEGIN
  62. clrscr;
  63. seek(ATLETAS,filesize(ATLETAS));
  64. WRITELN('INGRESE DNI DEL ATLETA');
  65. READLN(ATLETA.DNI);
  66. WRITELN('INGRESE NOMBRE Y APELLIDO DEL ATLETA');
  67. READLN(ATLETA.NOMBRE);
  68. WRITELN(ATLETA.NOMBRE,ATLETA.DNI);
  69. WRITE(ATLETAS, ATLETA);
  70.  
  71. RESET(ATLETAS);
  72. for i:=0 to filesize(ATLETAS)-2 do
  73. begin
  74. for j:=i+1 to filesize(ATLETAS)-1 do
  75. begin
  76. seek(ATLETAS,i);
  77. read(ATLETAS,auxi);
  78. seek(ATLETAS,j);
  79. read(ATLETAS,auxj);
  80. if auxi.DNI>auxj.DNI then
  81. begin
  82. seek(ATLETAS,i);
  83. write(ATLETAS,auxj);
  84. seek(ATLETAS,j);
  85. write(ATLETAS,auxi);
  86. end;
  87. end;
  88. end;
  89. END;
  90.  
  91. PROCEDURE CARGADISCIP;
  92. BEGIN
  93. clrscr;
  94. SEEK(DISCIPLINAS,FILESIZE(DISCIPLINAS));
  95. WRITELN('INGRESE CODIGO DE DISCIPLINA');
  96. READLN(DISCIPLINA.CODDISCIPLINA);
  97. WRITELN('INGRESE NOMBRE DE LA DISCIPLINA');
  98. READLN(DISCIPLINA.DESCRIP);
  99. WRITELN('INGRESE S(SI) O N(NO) EN CASO DE SER UNA COMPETENCIA EN EQUIPO O INDIVIDUAL');
  100. READLN(DISCIPLINA.EQUIPO);
  101. WRITE(DISCIPLINAS, DISCIPLINA);
  102. END;
  103.  
  104. PROCEDURE CARGAPARTIC ();
  105. BEGIN
  106. clrscr;
  107. SEEK(PARTICIPANTES,FILESIZE(PARTICIPANTES));
  108. WRITELN('INGRESE CODIGO DE DISCIPLINA');
  109. READLN(PARTICIPANTE.CODDISCIPLINA);
  110. WRITELN('INGRESE ANO DE LA COMPETICIÓN');
  111. READLN(PARTICIPANTE.ANO);
  112. WRITELN('INGRESE DNI DEL PARTICIPANTE');
  113. READLN(PARTICIPANTE.DNI);
  114. WRITE(PARTICIPANTES, PARTICIPANTE);
  115. END;
  116.  
  117. PROCEDURE CARGASEDE();
  118. VAR i : integer;
  119. VAR aaa : AT;
  120. VAR opc : integer;
  121. VAR sedee,tmp : SED;
  122. BEGIN
  123. clrscr;
  124. writeln('1-Alta');
  125. writeln();
  126. writeln('2-Baja');
  127. writeln();
  128. writeln('3-Modificacion');
  129. writeln();
  130. readln(opc);
  131. if(opc = 1) then
  132. begin
  133. write('Ingrese codigo del pais');
  134. readln(sedee.CODINTERNACIONAL);
  135. writeln('Ingrese descripcion');
  136. readln(sedee.DESCRIPCION);
  137. Reset(SEDES);
  138. seek(SEDES,filesize(SEDES));
  139. write(SEDES,sedee);
  140. Close(SEDES);
  141. end;
  142. if(opc = 2)then
  143. begin
  144. write('Ingrese codigo internacional');
  145. readln(sedee.CODINTERNACIONAL);
  146. reset(SEDES);
  147. for i:=0 to filesize(SEDES) do
  148. begin
  149. seek(SEDES,i);
  150. read(SEDES,tmp);
  151. if(sedee.CODINTERNACIONAL = tmp.CODINTERNACIONAL) then
  152. begin
  153. seek(SEDES,filesize(SEDES)-1);
  154. read(SEDES,tmp);
  155. seek(SEDES,i);
  156. write(SEDES,tmp);
  157. seek(SEDES,filesize(SEDES)-1);
  158. truncate(SEDES);
  159. break;
  160. end;
  161. end;
  162. close(SEDES);
  163. end;
  164. if(opc = 3)then
  165. begin
  166. writeln('Ingrese codigo internacional');
  167. readln(sedee.CODINTERNACIONAL);
  168. reset(SEDES);
  169. for i:=0 to filesize(SEDES) do
  170. begin
  171. read(SEDES,tmp);
  172. if sedee.CODINTERNACIONAL = tmp.CODINTERNACIONAL then
  173. begin
  174. writeln('Ingrese la nueva descripcion');
  175. readln(sedee.DESCRIPCION);
  176. write(SEDES,sedee)
  177. end;
  178. end;
  179. close(SEDES);
  180. end;
  181. END;
  182.  
  183. PROCEDURE CARGAMEDALLA ();
  184. BEGIN
  185. clrscr;
  186. SEEK(MEDALLASXATLETAS,FILESIZE(MEDALLASXATLETAS));
  187. WRITELN('INGRESE DNI DEL COMPETIDOR');
  188. READLN(MEDALLAS.DNI);
  189. WRITELN('INGRESE ANO DE LA COMPETICION');
  190. READLN(MEDALLAS.ANO);
  191. WRITELN('INGRESE CODIGO INTERNACIONAL');
  192. READLN(MEDALLAS.CODINTERNACIONAL);
  193. WRITELN('INGRESE CANTIDAD DE MEDALLAS');
  194. WRITELN('ORO:');
  195. READLN(MEDALLAS.MEDALLA[1]);
  196. WRITELN('PLATA:');
  197. READLN(MEDALLAS.MEDALLA[2]);
  198. WRITELN('.BRONCE:');
  199. READLN(MEDALLAS.MEDALLA[3]);
  200. WRITE(MEDALLASXATLETAS, MEDALLAS);
  201. END;
  202.  
  203. PROCEDURE ATLETASXANO();
  204. VAR aab : integer;
  205. VAR i : integer;
  206. VAR auxi : integer;
  207. BEGIN
  208. clrscr;
  209. auxi := 0;
  210. writeln('Ingrese el ano a buscar');
  211. readln(aab);
  212. reset(PARTICIPANTES);
  213. writeln('Dni de los participantes');
  214. writeln();
  215. if eof(PARTICIPANTES)
  216. then
  217. writeln('No hay atletas')
  218. else
  219. begin
  220.  
  221. for i:=1 to filesize(PARTICIPANTES) do
  222. begin
  223. read(PARTICIPANTES,auxat);
  224. if aab = auxat.ANO then
  225. begin
  226. auxi:=auxi+1;
  227. writeln(auxat.DNI);
  228. writeln();
  229. end;
  230. end;
  231. end;
  232. if auxi = 0 then
  233. writeln('No se encontraron participantes en este ano');
  234. readkey();
  235. end;
  236.  
  237.  
  238.  
  239. PROCEDURE MEDALLASXANO();
  240. VAR auxi : integer;
  241. VAR aab : integer;
  242. VAR i : integer;
  243. VAR auxmed : MXA;
  244. VAR b : integer;
  245. VAR p : integer;
  246. VAR o : integer;
  247. BEGIN
  248. clrscr;
  249. auxi := 0;
  250. b := 0;
  251. p := 0;
  252. o := 0;
  253. reset(MEDALLASXATLETAS);
  254. writeln('Ingrese el ano a buscar las medallas');
  255. readln(aab);
  256. writeln('Medallas:');
  257. if eof(MEDALLASXATLETAS)
  258. then
  259. writeln('No hay atletas')
  260. else
  261. begin
  262.  
  263. for i:=1 to filesize(MEDALLASXATLETAS) do
  264. begin
  265. read(MEDALLASXATLETAS,auxmed);
  266. if aab = auxmed.ANO then
  267. begin
  268. auxi:=auxi+1;
  269. o := b+auxmed.MEDALLA[1];
  270. p := p+auxmed.MEDALLA[2];
  271. b := o+auxmed.MEDALLA[3];
  272. end;
  273. end;
  274. if auxi = 0 then
  275. writeln('No se encontraron participantes en este ano')
  276. else
  277. begin
  278. writeln('Oro:', o);
  279. writeln();
  280. writeln('Plata', p);
  281. writeln();
  282. writeln('Bronce:', b);
  283. writeln();
  284. end;
  285. readkey();
  286. end;
  287.  
  288. END;
  289.  
  290. PROCEDURE DISCIPLINASXANO();
  291. VAR aab : integer;
  292. VAR i : integer;
  293. VAR j : integer;
  294. VAR cant : integer;
  295. VAR cantsr : integer;
  296. VAR discaux : DIS;
  297. VAR partaux : PART;
  298. VAR listapart : array [1..30] of string;
  299. VAR listasinrep : array [1..30] of string;
  300. VAR rep : boolean;
  301.  
  302. BEGIN
  303. cantsr := 1;
  304. cant := 1;
  305. clrscr;
  306. writeln('Ingrese anio con disciplinas a listar');
  307. readln(aab);
  308. reset(PARTICIPANTES);
  309. reset(DISCIPLINAS);
  310. if eof(PARTICIPANTES)
  311. then
  312. writeln('No hay atletas')
  313. else
  314. begin
  315. for i:=1 to filesize(PARTICIPANTES) do
  316. begin
  317. read(PARTICIPANTES,partaux);
  318. if partaux.ano = aab then
  319. begin
  320. listapart[cant] := partaux.CODDISCIPLINA;
  321. cant := cant+1;
  322. end;
  323. end;
  324. end;
  325.  
  326. //Saca las repeticiones en la listapart de codigos de disciplina
  327. for i:=1 to cant do
  328. begin
  329. rep := false;
  330. for j:= 1 to cantsr do
  331. begin
  332. if listapart[i] = listasinrep[j] then
  333. rep:=true;
  334. end;
  335. if rep = false then
  336. begin
  337. cantsr := cantsr+1;
  338. listasinrep[cantsr] := listapart[i];
  339. end;
  340. end;
  341. if eof(DISCIPLINAS)
  342. then
  343. writeln('No hay disciplinas')
  344. else
  345. begin
  346. for i:=1 to filesize(DISCIPLINAS) do
  347. begin
  348. read(DISCIPLINAS,discaux);
  349. for j:= 1 to cantsr do
  350. begin
  351. if listasinrep[j] = discaux.CODDISCIPLINA then
  352. begin
  353. writeln(discaux.DESCRIP);
  354. writeln();
  355. end
  356. end;
  357. end;
  358. end;
  359. readkey();
  360. END;
  361.  
  362. PROCEDURE TRAYECTORIA_ATLETA();
  363. VAR dniab : integer;
  364. VAR i,j : integer;
  365. VAR medallas : integer;
  366. VAR rep : boolean;
  367. VAR cant,cantsr : integer;
  368. VAR auxat : AT;
  369. VAR auxipart : PART;
  370. VAR auxidisc : DIS;
  371. VAR medallaux : MXA;
  372. VAR listac : array [1..30] of string;
  373. VAR listasinrep : array [1..30] of string;
  374. BEGIN
  375. cant := 0;
  376. cantsr := 0;
  377. writeln('Ingrese el dni del atleta:');
  378. readln(dniab);
  379. reset(atletas);
  380. if eof(ATLETAS)
  381. then
  382. writeln('No hay atletas')
  383. else
  384. begin
  385. while (i<filesize(ATLETAS)) OR (auxat.DNI <> dniab) do
  386. begin
  387. read(ATLETAS,auxat);
  388. i:=i+1;
  389. end;
  390. if auxat.DNI = dniab then
  391. begin
  392. reset(PARTICIPANTES);
  393. if eof(PARTICIPANTES) then
  394. writeln('No hay participantes')
  395. else
  396. begin
  397. for i:=1 to filesize(PARTICIPANTES) do
  398. begin
  399. read(PARTICIPANTES,auxipart);
  400. if auxipart.DNI = auxat.DNI then
  401. begin
  402. listac[cant] := auxipart.CODDISCIPLINA;
  403. cant := cant+1
  404. end;
  405. end;
  406. end;
  407. end
  408. else
  409. writeln('No se encontro al atleta');
  410. end;
  411.  
  412. //Saca las repeticiones en la listac de codigos de disciplina
  413. for i:=1 to cant do
  414. begin
  415. rep := false;
  416. for j:= 1 to cantsr do
  417. begin
  418. if listac[i] = listasinrep[j] then
  419. rep:=true
  420. end;
  421. if rep = false then
  422. begin
  423. cantsr := cantsr+1;
  424. listasinrep[cantsr] := listac[i]
  425. end;
  426. end;
  427. reset(DISCIPLINAS);
  428. if eof(DISCIPLINAS)
  429. then
  430. writeln('No hay disciplinas')
  431. else
  432. begin
  433. writeln('Disciplinas en las que participo:');
  434. writeln();
  435. for i:=1 to filesize(DISCIPLINAS) do
  436. begin
  437. read(DISCIPLINAS,auxidisc);
  438. for j:=0 to cantsr do
  439. begin
  440. if listasinrep[j] = auxidisc.CODDISCIPLINA then
  441. begin
  442. writeln(auxidisc.DESCRIP);
  443. writeln();
  444. readkey()
  445. end;
  446. end;
  447. end;
  448. end;
  449. reset(MEDALLASXATLETAS);
  450. while not eof(MEDALLASXATLETAS)do
  451. begin
  452. read(MEDALLASXATLETAS,medallaux);
  453. if medallaux.DNI = dniab then
  454. begin
  455. medallas := medallas + medallaux.MEDALLA[1];
  456. medallas := medallas + medallaux.MEDALLA[2];
  457. medallas := medallas + medallaux.MEDALLA[3];
  458. end;
  459. end;
  460. writeln('Medallas que gano:');
  461. writeln(medallas);
  462. writeln();
  463. readkey();
  464. END;
  465.  
  466. PROCEDURE PARTICIPANTESXDISCIPLINA();
  467. VAR discab : string[3];
  468. VAR anioab : integer;
  469. VAR auxipart : AT;
  470. VAR auxip : PART;
  471. BEGIN
  472. clrscr;
  473. writeln('Ingrese el codigo de la disciplina a listar:');
  474. readln(discab);
  475. writeln('Ingrese el anio a listar:');
  476. readln(anioab);
  477. reset(PARTICIPANTES);
  478. writeln('Participantes en el anio ',anioab);
  479. writeln();
  480. reset(PARTICIPANTES);
  481. while not eof(PARTICIPANTES)do
  482. begin
  483. readkey();
  484. read(PARTICIPANTES,auxip);
  485. if (auxip.ANO = anioab) AND (auxip.CODDISCIPLINA = discab) then
  486. begin
  487. reset(ATLETAS);
  488. while not eof(ATLETAS)do
  489. begin
  490. read(ATLETAS,auxipart);
  491. if auxipart.DNI = auxip.DNI then
  492. begin
  493. writeln(auxipart.NOMBRE);
  494. writeln();
  495. end;
  496. end;
  497. end;
  498. end;
  499. readkey();
  500. END;
  501.  
  502. PROCEDURE PAISCONMASMEDALLAS();
  503. VAR tmp : integer;
  504. VAR tmpmax : integer;
  505. VAR med : MXA;
  506. VAR sede : SED;
  507. VAR sedemax : SED;
  508. BEGIN
  509. tmpmax := -20;
  510. sedemax.DESCRIPCION := 'null';
  511. reset(SEDES);
  512. while not eof(SEDES) do
  513. begin
  514. tmp := 0;
  515. read(SEDES,sede);
  516. reset(MEDALLASXATLETAS);
  517. while not eof(MEDALLASXATLETAS) do
  518. begin
  519. read(MEDALLASXATLETAS,med);
  520. if(med.CODINTERNACIONAL = sede.CODINTERNACIONAL)then
  521. tmp := tmp + med.MEDALLA[1] + med.MEDALLA[2] + med.MEDALLA[3]
  522. end;
  523. close(MEDALLASXATLETAS);
  524. if tmp > tmpmax then
  525. begin
  526. tmp := tmpmax;
  527. sedemax := sede;
  528. end;
  529. end;
  530. close(SEDES);
  531. if sedemax.DESCRIPCION = 'null' then
  532. writeln('No hay sedes')
  533. else
  534. begin
  535. writeln('Sede con mas medallas:',sedemax.DESCRIPCION);
  536. writeln();
  537. end;
  538. readkey();
  539. END;
  540.  
  541. PROCEDURE TOP10();
  542. VAR i,j : integer;
  543. BEGIN
  544. reset(MEDALLASXATLETAS);
  545.  
  546. END;
  547.  
  548. PROCEDURE ABM();
  549. VAR OPABM:INTEGER;
  550. BEGIN
  551. WRITELN('1.ATLETAS');
  552. writeln();
  553. writeln('2.DISCIPLINA ');
  554. writeln();
  555. writeln('3.PARTICIPANTE ');
  556. writeln();
  557. writeln('4.SEDE ');
  558. writeln();
  559. writeln('5.MEDALLA');
  560. writeln();
  561. READLN(OPABM);
  562. CASE OPABM OF
  563. 1: CARGAATLETAS();
  564. 2: CARGADISCIP();
  565. 3: CARGAPARTIC();
  566. 4: CARGASEDE();
  567. 5: CARGAMEDALLA();
  568. END;
  569. END;
  570. VAR OP:INTEGER;
  571. BEGIN
  572. ASSIGN(ATLETAS,'C:\Users\Nahuel\Desktop\Tp3\Atletass.dat');
  573. {$i-}
  574. reset(ATLETAS);
  575. est:=ioresult;
  576. {$i+}
  577. if est<>0
  578. then
  579. rewrite(ATLETAS);
  580.  
  581. ASSIGN(DISCIPLINAS, 'C:\Users\Nahuel\Desktop\Tp3\Disciplinass.dat');
  582. {$i-}
  583. reset(DISCIPLINAS);
  584. est:=ioresult;
  585. {$i+}
  586. if est<>0
  587. then
  588. rewrite(DISCIPLINAS);
  589. ASSIGN(PARTICIPANTES, 'C:\Users\Nahuel\Desktop\Tp3\Participantess.dat');
  590. {$i-}
  591. reset(PARTICIPANTES);
  592. est:=ioresult;
  593. {$i+}
  594. if est<>0
  595. then
  596. rewrite(PARTICIPANTES);
  597. ASSIGN(SEDES, 'C:\Users\Nahuel\Desktop\Tp3\Sedess.dat');
  598. {$i-}
  599. reset(SEDES);
  600. est:=ioresult;
  601. {$i+}
  602. if est<>0
  603. then
  604. rewrite(SEDES);
  605. ASSIGN(MEDALLASXATLETAS, 'C:\Users\Nahuel\Desktop\Tp3\Medallasxatletass.dat');
  606. {$i-}
  607. reset(MEDALLASXATLETAS);
  608. est:=ioresult;
  609. {$i+}
  610. if est<>0
  611. then
  612. rewrite(MEDALLASXATLETAS);
  613.  
  614. WHILE OP<>9 DO
  615. BEGIN
  616. clrscr;
  617. WRITELN('Ingrese opcion:');
  618. writeln('1-ABM ');
  619. writeln();
  620. writeln('2-Listar atletas por anio ');
  621. writeln();
  622. writeln('3-Medallas ganadas por ano ');
  623. writeln();
  624. writeln('4- Listar disciplinas por anio ');
  625. writeln();
  626. writeln('5-Trayectoria del atleta ');
  627. writeln();
  628. writeln('6-Participantes por disciplina ');
  629. writeln();
  630. writeln('7-Sede con mas medallas ');
  631. writeln();
  632. writeln('9-Salir');
  633. writeln();
  634.  
  635. READLN(OP);
  636. CASE OP OF
  637. 1:ABM();
  638. 2:ATLETASXANO();
  639. 3:MEDALLASXANO();
  640. 4:DISCIPLINASXANO();
  641. 5:TRAYECTORIA_ATLETA();
  642. 6:PARTICIPANTESXDISCIPLINA();
  643. 7:PAISCONMASMEDALLAS();
  644. 8:TOP10();
  645. 9:close(ATLETAS);
  646. END;
  647. END
  648. END.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement