program nomination;
uses wincrt;
type
tab=array[1..20] of string[10];
var
n,p:integer;
nom,tp:tab;
function verif(ch:string):boolean;
var i:integer;
test:boolean;
begin i:=0;
repeat i:=i+1;
if ch[i] in ['A'..'Z']then test:=true else test:=false;
until (test=false) or (i=length (ch));
verif:=(test) and (length(ch)=10);
end;
procedure remplir(var nom:tab;var n:integer);
var i:integer;
begin
repeat
write('Donner le nombre de produits : ');
readln(n);
until n in [3..20];
for i:=1 to n do repeat
write('Nom[',i,']=');
readln(nom[i]);
until verif(nom[i]);
end;
function rotation (ch:string):string;
var chf:string;
i:integer; aux:char;
begin
chf:='';
for i:=1 to length(ch) div 2 do chf:=chf+ch[length(ch)-i+1]+ch[i];
if length(ch) mod 2<>0 then chf:=chf+ch[length(ch) div 2+1];
rotation:=chf;
end;
Procedure spirale(var p:integer; var tp:tab;n:integer);
var i:integer;
ch:string;
begin
repeat
write('Donner une position p : ');
readln(p);
until n in [1..10];
ch:='';
for i:=1 to n do ch:=ch+nom[i,p];
TP[1]:=ch;
for i:= 2 to n do tp[i]:=rotation(tp[i-1]);
end;
{*** affichage ***}
procedure affichage(tp:tab;n:integer);
var i:integer;
begin
for i:=1 to n do
if i<>n then write(tp[i],' - ') else write(tp[i]);
end;
{*** Programme principal ***}
begin
remplir(nom,n);
spirale(p,tp,n);
writeln('Les ',n,' propositions sont : ');
affichage(tp,n);
end.
program TirArc;
uses wincrt;
type
tab=array[1..20] of string[30];
tab2=array[1..20] of integer;
var n:integer;
a:tab;
s:tab2;
function alpha(ch:string):boolean;
var i:integer;
test:boolean;
begin i:=0;
repeat i:=i+1;
if ch[i] in ['A'..'Z','a'..'z',' ']then test:=true else test:=false;
until (test=false) or (i=length (ch));
alpha:=(test) and (length(ch)<=30);
end;
procedure remplir(var a:tab;var n:integer);
var i:integer;
begin
for i:=1 to n do repeat
write('A[',i,']=');
readln(a[i]);
until alpha(a[i]);
end;
Procedure score(var s:tab2;n:integer);
var
i,j,sc,total:integer;
begin
for i:=1 to n do begin
total:=0;
for j:=1 to 3 do begin
repeat
write('Score de l''essai numéro',i,' : ');
readln(sc);
until sc in[0..10];
total:=total+sc;
end;
s[i]:=total;
end;
end;
procedure tri_bulles ( n :integer ; var a: tab;var s:tab2);
var i:integer;
aux2:string;
aux:integer;
permuter:boolean;
begin
repeat
permuter:=false;
for i:=1 to n -1do if s[i]>s[i+1] then begin
permuter:=true;
aux:=s[i];
s[i]:=s[i+1];
s[i+1]:=aux;
aux2:=a[i];
a[i]:=a[i+1];
a[i+1]:=aux2;
end;
until permuter=false;
end;
procedure affichage(a:tab;s:tab2;n:integer);
var i:integer;
begin
for i:=1 to n do
writeln(a[i],' avec un score de ',s[i]);
end;
begin
repeat
write('Donner le nombre de joueurs : ');
readln(n);
until n in [2..20];
remplir(a,n);
score(s,n);
tri_bulles(n,a,s);
writeln('La liste des joueurs est : ');
affichage(a,s,n);
end.
program plagiat1;
uses wincrt;
var
t1,t2:string;
nbc:integer;
{*** Suppression des espaces superflus ****}
function espace_superflus (ch:string):string;
var i:integer;
chF:string;
begin
chF:=ch;
for i:= 1 to length(chf)-1 do
while (chF[i]=' ') and(chF[i+1]=' ') DO delete(chF,i,1);
espace_superflus:=chf;
end;
{*** Verification d'un texte ****}
function verif (ch:string):boolean;
var i:integer;
test:boolean;
begin i:=0;
repeat i:=i+1;
if ch[i] in ['A'..'Z',' ']then test:=true else test:= false;
until (test=false) or (i=length(ch)-1);
verif := (test) and (ch[length(ch)]='.')and (length(ch)<=200) and (ch[length(ch)-1]<>' ') ; end;
{*** Calcul du nombre de mots dans un texte ****}
function Nbmots (ch:string):integer;
var
nb,i:integer;
begin
nb:=1;
for i:=1 to length(ch) do if ch[i]=' ' then nb:=nb+1;
nbmots:=nb;
end;
{*** Calcul du nombre de mots en commun dans les deux textes ****}
function commun (t1,t2:string):integer;
var
nb,i,j:integer;
begin
nb:=0;
for i:=1 to nbmots(t1)-1 do begin
if pos(copy(t1,1,pos(' ',t1)-1),t2)<>0 then nb:=nb+1;
delete(t1,1,pos(' ',t1));
end;
if pos(copy(t1,1,length(t1)-1),t2)<>0 then commun:=nb+1 else commun :=nb;
end;
{*** saisie d'un texte ****}
procedure saisir (var ch:string);
begin
repeat
write('Saisir un texte : ');
readln(ch);
until verif(ch);
end;
{*** PROGRAMME PRICIPAL ***}
begin
repeat saisir(t1);
saisir(t2);
until nbmots(espace_superflus(t1))=nbmots(espace_superflus(t2));
nbc:=commun(t1,t2);
writeln('Le nombre de mots en commun est : ',nbc);
if nbc > nbmots(t2) div 2 then write('Le texte est plagie') else write('Le texte n''est plus plagie');
end.
program fidelite1;
uses wincrt;
type
tab=array[1..20] of string[10];
var n:integer;
ta:tab;
cat:char;
Procedure saisie(var n:integer);
begin
repeat
write('Donner le nombre des adherants : ');
readln(n);
until n in [5..30];
end;
function verif(ch:string):boolean;
var
i,e,e1,e2,x,y,z:integer;
begin
val(copy(ch,2,4),x,e);
val(copy(ch,6,2),y,e1);
val(copy(ch,8,3),z,e2);
verif:=(e=0) and (length(ch)=10) and(ch[1] in['A','J','E']) and (X >=2000) and (X<=2019)and (e1=0) and(e2=0)and(y in [1..12]) ;
end;
procedure remplir(var ta:tab; n:integer);
var i:integer;
begin
for i:=1 to n do repeat
write('Ta[',i,']=');
readln(ta[i]);
until verif(ta[i]);
end;
procedure bonus(var cat:char;ta:tab;n:integer);
var
i,bns,x,e,y:integer;
begin
repeat
write('categorie=');
readln(cat);
until cat in ['A','J','E'];
writeln('Les abonnements et les bonus sont : ');
for i:=1 to n do
if (copy(ta[i],2,4)<='2014')and(ta[i,1]=cat) then begin
val(copy(ta[i],2,4),x,e);
val(copy(ta[i],6,2),y,e);
bns:=(2019-x)*12+5-y;
writeln(ta[i], ' et son bonus est : ',bns);
end;
end;
{*** PROGRAMME PRICIPAL ***}
begin
saisie(n);
remplir(ta,n);
bonus(cat,ta,n);
end.
program HeureMiroir;
uses wincrt;
type
tab=array[1..20] of string;
var n:integer;
np,hn:tab;
Procedure saisie(var n:integer);
begin
repeat
write('Donner le nombre de nouveaux nes : ');
readln(n);
until n in [3..20];
end;
function verifnp(ch:string):boolean;
var i:integer;
test:boolean;
begin i:=0;
repeat i:=i+1;
if upcase(ch[i]) in ['A'..'Z'] then test :=true else test:= false;
until (test=false) or (i=length(ch));
verifnp:=(test) and (ch[1] in ['A'..'Z']);
end;
function verifhn(ch:string):boolean;
var
i,x,y,e,e1:integer;
begin
val(copy(ch,1,2),x,e);
val(copy(ch,4,2),y,e1);
verifhn:=(e=0) and (e1=0)and (length(ch)=5) and(ch[3] =':') ; end;
procedure remplissage(var np,hn:tab; n:integer);
var i:integer;
begin
for i:=1 to n do repeat
write('np[',i,']=');
readln(np[i]);
until (verifnp(copy(np[i],1,pos(' ',np[i])-1))) and (verifnp(copy(np[i],pos(' ',np[i])+1,length(np[i]))))and (length(np[i])<=30);
for i:=1 to n do repeat
write('hn[',i,']=');
readln(hn[i]);
until verifhn(hn[i]);
end;
procedure affichage( np,hn:tab; n:integer);
var i:integer;
begin
for i:=1 to n do begin
if (copy(hn[i],1,2)=copy(hn[i],4,2)) then writeln(np[i],' heure miroire double');
if (hn[i,1]=hn[i,2])and(hn[i,2]=hn[i,4]) and(hn[i,4]=hn[i,5]) then writeln(np[i],' heure miroire triple');
if (hn[i,1]=hn[i,5])and (hn[i,2]=hn[i,4]) then writeln(np[i],' heure miroire inverse');
end;
end;
{*** PROGRAMME PRICIPAL ***}
begin
saisie(n);
remplissage(np,hn,n);
affichage(np,hn,n);
end.