• Aucun résultat trouvé

type tab=array[1..20] of string[10]

N/A
N/A
Protected

Academic year: 2022

Partager "type tab=array[1..20] of string[10]"

Copied!
12
0
0

Texte intégral

(1)

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]);

(2)

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;

(3)

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;

(4)

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;

(5)

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

(6)

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;

(7)

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;

(8)

{*** 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);

(9)

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 : ');

(10)

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

(11)

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,']=');

(12)

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.

Références

Documents relatifs

Reproduire l’exercice du calcul du nombre d’occurrences d’un élément donné dans un tableau sous la forme d’une fonction récursive... Autrement dit, le premier caractère

Si vous êtes enceinte ou que vous allaitez, si vous pensez être enceinte ou planifiez une grossesse, demandez conseil à votre médecin ou pharmacien avant de prendre ce médicament..

[r]

Comptes annuels au 31/12/2010 – Présentation Bancaire Note 23 - Produits sur opérations de crédit-bail En milliers d'euros Loyers et assimilés Indemnités de résiliation

Annual financial statements at 31 December 2010 – Banking presentation Note 23 – Income on finance lease transactions € thousands Rent and similar income Termination

An integer array C is the minimal-cover (resp. maximal-cover) array of y if C [i] is the minimal (resp. maximal) length of covers of y[0.. i], or zero if no

[r]

sous – total IV Techniques de fabrication (production libre) / 20. sous – total V Dressage et envoi