delphi chapitre 5
Transcription
delphi chapitre 5
Chapitre 5 TABLEAUX Exercice 1 program Ex5_1; {$APPTYPE CONSOLE} uses SysUtils; var I:integer; Tableau:array[1..5] of real; begin (* Saisie des 5 réels *) for I:=1 to 5 do begin write(’Entrez le ’,I,’ième réel : ’); readln(Tableau[I]); end; (* Affichage du contenu du tableau *) for I:=1 to 5 do writeln(’Le ’,I,’ième réel vaut : ’,Tableau[I]); readln; end. Exercice 2 program Ex5_2; {$APPTYPE CONSOLE} uses SysUtils; var I,Min,Max:integer; Tableau:array[1..20] of integer; begin (* Remplissage du tableau avec 20 entiers aléatoires *) for I:=1 to 20 do Tableau[I]:=random(100); (* Affichage du contenu du tableau *) for I:=1 to 20 do writeln(’Le ’,I,’ième entier aléatoire vaut : ’,Tableau[I]); (* Recherche du miniumum / maximum *) guygreisen 7 juin 2005 2 (* Initialisation des variables Min et Max *) Min:=Tableau[1]; Max:=Tableau[1]; (* Parcours du tableau *) for I:= 2 to 20 do begin (* Nouveau minimum? *) if Tableau[I] < Min then Min:=Tableau[I]; (* Nouveau maximum? *) if Tableau[I] > Max then Max:=Tableau[I]; end; (* Affichage du minimum et du maximum *) writeln(’Le minimum vaut : ’,Min); writeln(’Le maximum vaut : ’,Max); readln; end. Exercice 3 program Ex5_3; {$APPTYPE CONSOLE} uses SysUtils; var I,Somme:integer; Moyenne,EcartType,Variance:real; Tableau:array[1..10] of integer; begin (* Remplissage du tableau avec 10 entiers aléatoires *) for I:=1 to 10 do Tableau[I]:=random(100); (* Calcul de la somme *) Somme:=Tableau[1]; for I:=2 to 10 do Somme:=Somme+Tableau[I]; (* Calcul de la moyenne *) Moyenne:=Somme / 10; (* Calcul de l’écart-type *) Variance:=0; for I:=1 to 10 do Variance:=Variance+sqr(Tableau[I]-Moyenne); Variance:=Variance/10; EcartType:=sqrt(Variance); (* Affichage des résultats *) for I:=1 to 10 do writeln(’Le ’,I,’ième entier aléatoire vaut : ’,Tableau[I]); writeln(’La somme vaut : ’,Somme); writeln(’La moyenne vaut : ’,Moyenne:6:1); writeln(’L’’écart-type vaut : ’,EcartType:6:1); readln; end. Exercice 4 guygreisen 7 juin 2005 3 program Ex5_4; {$APPTYPE CONSOLE} uses SysUtils; var I,Nombre,Frequence:integer; Tableau:array[1..100] of integer; begin (* Remplissage du tableau avec 100 entiers aléatoires *) for I:=1 to 100 do Tableau[I]:=random(16)+10; (* Saisie du nombre à compter *) write(’Quel nombre faut-il compter?’); readln(Nombre); (* Comptage *) Frequence:=0; for I:= 1 to 100 do if Tableau[I] = Nombre then Frequence:=Frequence+1; (* Affichage *) writeln(’Le nombre ’,Nombre,’ apparaît ’,Frequence,’ fois.’); readln; end. Exercice 5 program Ex5_5; {$APPTYPE CONSOLE} uses SysUtils; const Nombre = 9; var I,Temp:integer; Tableau:array[1..Nombre] of integer; begin (* Remplissage du tableau avec "Nombre" entiers aléatoires *) for I:=1 to Nombre do Tableau[I]:=random(100); (* Impression de l’entête du tableau *) for I:=1 to Nombre do write(I:4); writeln; for I:= 1 to 4*Nombre do write(’-’); writeln; (* Affichage du contenu du tableau *) for I:=1 to Nombre do write(Tableau[I]:4); writeln; (* Inversion du tableau *) for I:=1 to Nombre div 2 do begin Temp:=Tableau[I]; guygreisen 7 juin 2005 4 Tableau[I]:=Tableau[Nombre-I+1]; Tableau[Nombre-I+1]:=Temp; end; (* Affichage du tableau réarrangé *) for I:=1 to Nombre do write(Tableau[I]:4); writeln; readln; end. Exercice 6 program Ex5_6; {$APPTYPE CONSOLE} uses SysUtils; var Jours,Mois:integer; TMois:array[1..12] of integer; Noms:array[1..12] of string; begin (* Remplissage du tableau avec les nombres de jours correspondants aux mois *) TMois[1]:=31; (* Janvier *) TMois[2]:=28; (* Février *) TMois[3]:=31; (* Mars *) TMois[4]:=30; (* Avril *) TMois[5]:=31; (* Mai *) TMois[6]:=30; (* Juin *) TMois[7]:=31; (* Juillet *) TMois[8]:=31; (* Août *) TMois[9]:=30; (* Septembre *) TMois[10]:=31; (* Octobre *) TMois[11]:=30; (* Novbembre *) TMois[12]:=31; (* Décembre *) (* Remplissage du tableau avec les noms des mois *) Noms[1]:=’Janvier’; Noms[2]:=’Février’; Noms[3]:=’Mars’; Noms[4]:=’Avril’; Noms[5]:=’Mai’; Noms[6]:=’Juin’; Noms[7]:=’Juillet’; Noms[8]:=’Août’; Noms[9]:=’Septembre’; Noms[10]:=’Octobre’; Noms[11]:=’Novembre’; Noms[12]:=’Décembre’; (* Saisie du nombre de jours *) write(’Entrez le nombre de jours : ’); readln(Jours); (* Détermination de la date *) Mois:=1; while Jours > TMois[Mois] do begin Jours:=Jours-TMois[Mois]; guygreisen 7 juin 2005 5 Mois:=Mois+1; end; (* Affichage du résultat *) write(’On est le ’,Jours,’.’,Noms[Mois]); readln; end. Exercice 7 program Ex5_7; {$APPTYPE CONSOLE} uses SysUtils; const Degre = 5; var Coefficients:array[0..Degre] of real; DCoefficients:array[0..Degre-1] of real; PCoefficients:array[0..Degre+1]of real; I:integer; X,Y,DY,PY:real; begin (* Saisie des coefficients du polynôme *) for I:=degre downto 0 do begin write(’Entrez le coefficient pour X puissance ’,I,’ ’); readln(Coefficients[I]); end; (* Calcul de la derivée *) for I:=0 to degre -1 do DCoefficients[I]:=(I+1)*Coefficients[I+1]; (* Calcul de la primitive *) for I:=1 to degre+1 do PCoefficients[I]:=Coefficients[I-1]/I; write(’Entrez la constante pour la primitive: ’); readln(PCoefficients[0]); (* Affichage du polynôme *) for I:= degre downto 0 do write(Coefficients[I]:7:3,’X^’,I,’ ’); writeln; (* Affichage de la dérivée *) for I:= degre-1 downto 0 do write(DCoefficients[I]:7:3,’X^’,I,’ ’); writeln; (* Affichage de la primitive *) for I:= degre+1 downto 0 do write(PCoefficients[I]:7:3,’X^’,I,’ ’); writeln; writeln; (* Evaluation des 3 polynômes pour une valeur de X *) write(’Entrez une valeur pour X: ’); readln(X); (* Evaluation du polynôme par la méthode de Horner *) Y:=0; for I:= degre downto 0 do Y:=Y*X+Coefficients[I]; guygreisen 7 juin 2005 6 (* Evaluation de la dérivée par la méthode de Horner *) DY:=0; for I:=degre-1 downto 0 do DY:=DY*X+DCoefficients[I]; (* Evaluation de la primitve par la méthode de Horner *) PY:=0; for I:=degre+1 downto 0 do PY:=PY*X+PCoefficients[I]; (* Affichage *) writeln; writeln(’Polynôme: f(’,X:8:3,’)=’,Y:7:3); writeln(’Dérivée: f’’(’,X:7:3,’)=’,DY:7:3); writeln(’Primitive: F(’,X:8:3,’)=’,PY:7:3); readln; end. program ex57; {$APPTYPE CONSOLE} uses SysUtils; var valx,valpoly,valderi:real; i:integer; poly: array[0..5] of real ; deri: array[0..4] of real ; begin {DONNEE} for i:=5 downto 0 do read( poly[i]); writeln ; writeln (’polyn’,char(147),’me ’); writeln; for i:=5 downto 2 do write( poly[i]:0:0,’x^’,i,’ + ’);write(poly[1]:0:0,’x + ’);writeln( poly[0]:0:0) {DERIVEE} for i:=5 downto 1 do deri[i-1]:= i*poly[i]; writeln ; {PRESENTATION} writeln(’d’,char(130),’riv’,char(130),’e ’); writeln ; for i:=4 downto 1 do write( deri[i]:0:0,’x^’,i,’ + ’);writeln( deri[0]:0:0); writeln ; write(’entrer valeur de x ’,char(133),’ calculer ’); write ; readln(valx); valpoly:=0; for i:=5 downto 0 do valpoly := valpoly * valx + poly[i]; writeln ; writeln (’la valeur du polynome pour x = ’, valx:0:0 ,’ est ’, valpoly:0:0); writeln ; valderi:=0; for i:=4 downto 0 do valderi := valderi * valx + deri[i]; writeln (’la valeur de la d’,char(130),’riv’,char(130),’e pour x = ’, valx:0:0 ,’ est ’, valderi:0 {for i:=0 to 255 do write (i,char(32),char(i),char(32),char(32));} readln; end. Exercice 8 program Ex5_8; {$APPTYPE CONSOLE} uses SysUtils; guygreisen 7 juin 2005 7 const Degre = 4; var P1,P2,CoefS,CoefD:array[0..Degre] of real; CoefP:array[0..Degre*2]of real; I,J:integer; begin (* Saisie des coefficients du premier polynôme *) for I:=degre downto 0 do begin write(’Entrez le coefficient pour X puissance ’,I,’ du premier polynôme ’); readln(P1[I]); end; (* Saisie des coefficients du deuxième polynôme *) for I:=degre downto 0 do begin write(’Entrez le coefficient pour X puissance ’,I,’ du deuxième polynôme ’); readln(P2[I]); end; (* Calcul de la somme *) for I:=0 to degre do CoefS[I]:=P1[I]+P2[I]; (* Calcul de la différence *) for I:=0 to degre do CoefD[I]:=P1[I]-P2[I]; (* Calcul du produit *) (* Initialisation *) for I:= 0 to degre*2 do CoefP[I]:=0; (* Calcul des produits *) for I:= 0 to degre do for J:= 0 to degre do CoefP[I+J]:=CoefP[I+J]+P1[I]*P2[J]; (* Affichage des polynômes *) write(’P1: ’); for I:= degre downto 0 do write(P1[I]:7:3,’X^’,I,’ ’); writeln; write(’P2: ’); for I:= degre downto 0 do write(P2[I]:7:3,’X^’,I,’ ’); writeln; (* Affichage de la somme *) write(’Somme: ’); for I:= degre downto 0 do write(CoefS[I]:7:3,’X^’,I,’ ’); writeln; (* Affichage de la différence *) write(’Différence: ’); for I:= degre downto 0 do write(CoefD[I]:7:3,’X^’,I,’ ’); writeln; (* Affichage du produit *) write(’Produit: ’); for I:= degre*2 downto 0 do guygreisen 7 juin 2005 8 write(CoefP[I]:7:3,’X^’,I,’ ’); writeln; readln; end. Exercice 9 program Ex5_9; {$APPTYPE CONSOLE} uses SysUtils; const Taille = 16; var Binaire: array[0..Taille-1] of boolean; Conversion: array [0..Taille-1] of integer; Decimal,I,Puissance:integer; begin (* Saisie du nombre décimal *) write(’Entrez un nombre décimal: ’); readln(Decimal); (* Initialisation du tableau des puissances de 2 *) Puissance:=1; for I:=0 to Taille-1 do begin Conversion[I]:=Puissance; Puissance:=Puissance*2; end; (* Conversion *) for I:= Taille-1 downto 0 do if Decimal >= Conversion[I] then begin Binaire[I]:=true; Decimal:=decimal-Conversion[I]; end else Binaire[I]:=false; (* Affichage *) writeln(’le nombre binaire correspondant: ’); for I:= Taille-1 downto 0 do if Binaire[I] then write(’1’) else write(’0’); readln; end. program ex59; {$APPTYPE CONSOLE} uses SysUtils; var bin:array[1..100]of integer; guygreisen 7 juin 2005 9 i,imax,number :integer; begin writeln(’entrer un nombre’);writeln; readln(number);writeln; i:=0; while number >0 do begin i:=i+1; bin[i]:=number mod 2; number:=number div 2; end; imax:=i; for i:=imax downto 1 do write(bin[i]); readln; end. Exercice 10 program Ex5_10; {$APPTYPE CONSOLE} uses SysUtils; const Taille = 16; var Binaire: array[0..Taille-1] of boolean; Decimal,I,Saisie: integer; begin (* Saisie du nombre binaire *) for I:= Taille-1 downto 0 do begin write(’Entrez la valeur du bit à la position ’,I,’: ’); readln(Saisie); if Saisie = 0 then Binaire[I]:=false else Binaire[I]:=true; end; (* Conversion *) Decimal:=0; for I:=Taille-1 downto 0 do begin Decimal:=Decimal*2; if Binaire[I] then Decimal:=Decimal+1; end; (* Affichage *) writeln(’Le nombre décimal correspondant est: ’,Decimal); readln; end. Exercice 11 program Ex5_11; {$APPTYPE CONSOLE} uses guygreisen 7 juin 2005 10 SysUtils; var Saisie,Tirage:array[1..49] of boolean; Devines:array[1..6] of integer; Nombre,Qte,I:integer; begin (* Initialisation des tableaux *) for I:= 1 to 49 do begin Saisie[I]:=false; Tirage[I]:=false; end; (* Saisie de l’utilisateur *) writeln(’Choisissez 6 nombres entre 1 et 49: ’); Qte:=0; while Qte <6 do begin write(’Entrez le ’,Qte+1,’ième nombre: ’); readln(Nombre); if Nombre <=49 then Saisie[Nombre]:=true; Qte:=0; for I:=1 to 49 do if Saisie[I] then Qte:=Qte+1; end; (* Tirage *) Qte:=0; while Qte <6 do begin Tirage[random(48)+1]:=true; Qte:=0; for I:=1 to 49 do if Tirage[I] then Qte:=Qte+1; end; (* Détermination des nombres correctement devinés *) Qte:=0; for I:=1 to 49 do if Saisie[I] and Tirage[I] then (* Attention, il faut utiliser l’opérateur AND pour comparer les 2 tableaux et pas l’opérateur de comparaison = *) begin Qte:=Qte+1; Devines[Qte]:=I; end; (* Affichage de la sélection *) writeln; writeln(’Votre sélection:’); for I:= 1 to 49 do begin if (I mod 7) = 1 then writeln; if Saisie[I] then write(’ XX’) else write(I:3); guygreisen 7 juin 2005 11 end; writeln; (* Affichage du tirage *) writeln; writeln(’Le tirage:’); for I:= 1 to 49 do begin if (I mod 7) = 1 then writeln; if Tirage[I] then write(’ XX’) else write(I:3); end; writeln; (* Affichage du résultat *) writeln; writeln(’Vous avez deviné correctment ’,Qte,’ nombres.’); for I:=1 to Qte do write(Devines[I]:3); writeln; readln; end. guygreisen 7 juin 2005