program MERGE; var F1, F2, Merge: text; procedure CopiaLinea (var F: text); var ch: char; begin while (not eoln(F)) do begin read(F, ch); write(Merge, ch); end; readln(F); writeln(Merge); end; begin reset(F1, 'PRIMO'); reset(F2, 'SECONDO'); rewrite(Merge, 'MERGE'); while (not eof(F1)) do begin CopiaLinea(F1); CopiaLinea(F2); end; close(F1); close(F2); close(Merge); end.
program TOTOCALCIO; const TREDICI = 5; type INDEX = 1..TREDICI; {{gli elementi del tipo COLONNA rappresentano un possibile risultato } {delle 13 partite considerate dal tototcalcio} {e consistono di 13 elementi ordinati dell'insieme {1,2,X} {( 1 : vince prima squadra 2 : vince seconda squadra X : pareggio ) } COLONNA = array[1..TREDICI] of (UNO, DUE, X); {gli elementi del tipo SCHEDINA rappresentano le schedine del gioco del totocalcio} {su ogni schedina vengono indicati i possibili risultati delle 13 partite } {e ' possibile indicare uno oppure due oppure tre risultati } { in gergo mettere una doppia , mettere una tripla)} { peratanto una schedina puo' determinare una o piu' colonne } SCHEDINA = array[1..TREDICI, 1..3] of BOOLEAN; var OGGI: COLONNA; GIOCATA: SCHEDINA; R: integer; {sottoprogramma che ritorna cosa ha vinto una schedina rispetto ad } {una data colonna} {i possibili risultati sono } {13: una colonna della schedina coincide con quella data} {12: una colonna della schedina coincide con quella data in 12 punti} {11: una colonna della schedina coincide con quella data in 11 punti} {niente in tutti gli altri casi} function CONTROLLA (C: COLONNA; S: SCHEDINA): integer; var R, I: integer; begin R := 0; for I := 1 to TREDICI do if ((C[I] = UNO) and S[I, 1]) or ((C[I] = DUE) and S[I, 2]) or ((C[I] = X) and S[I, 3]) then R := R + 1; CONTROLLA := R end; {sottoprogramma che stampa una colonna} procedure STAMPAC (C: COLONNA); var I: integer; begin for I := 1 to TREDICI do case C[I] of UNO: writeln('1'); DUE: writeln('2'); X: writeln('X'); end; end; {sottoprogramma che stampa tutte le colonne determinate da una schedina} procedure COLON (var S: SCHEDINA; IND: integer; C: COLONNA); var I: integer; begin if (IND <= TREDICI) then begin if S[IND, 1] then begin C[IND] := UNO; COLON(S, IND + 1, C); end; if S[IND, 2] then begin C[IND] := DUE; COLON(S, IND + 1, C); end; if S[IND, 3] then begin C[IND] := X; COLON(S, IND + 1, C); end; end else begin writeln('***********'); STAMPAC(C); end; end; procedure COLONNE (var S: SCHEDINA); var C: COLONNA; begin COLON(S, 1, C); end; begin {assegnare una qualunque colonna alla variabile OGGI} { 1} { 1} { 2} { X} { X} OGGI[1] := UNO; OGGI[2] := DUE; OGGI[3] := UNO; OGGI[4] := X; OGGI[5] := X; {assegnare una qualunque schedina alla variabile GIOCATA} { 1 2} { 2 } { 1 } { X } { 1 X 2} GIOCATA[1, 1] := True; GIOCATA[1, 2] := true; GIOCATA[1, 3] := false; GIOCATA[2, 1] := false; GIOCATA[2, 2] := true; GIOCATA[2, 3] := false; GIOCATA[3, 1] := true; GIOCATA[3, 2] := false; GIOCATA[3, 3] := false; GIOCATA[4, 1] := false; GIOCATA[4, 2] := false; GIOCATA[4, 3] := true; GIOCATA[5, 1] := true; GIOCATA[5, 2] := true; GIOCATA[5, 3] := true; { stampare i risultati fatti da GIOCATA rispetto ad OGGI } R := CONTROLLA(OGGI, GIOCATA); if (R = TREDICI) then writeln('Hai fatto 13') else if (R = TREDICI - 1) then writeln('Hai fatto 12') else if (R = TREDICI - 2) then writeln('Hai fatto 11') else writeln('non hai vinto'); STAMPAC(OGGI); { stampare tutte le colonne determinate da GIOCATA } COLONNE(GIOCATA); end.