insertion d'un caractère
Page 1 sur 1
insertion d'un caractère
ÉNONCÉ
Soit un tableau T de n caractères (5≤ n≤ Nmax) qui ne peuvent être que "A","B" ou "C" et tels que deux éléments successifs du tableau ne sont pas égaux.(Nmax est une constante de valeur 15).
On se propose d'insérer un caractère donné Car dans la première position possible dans le tableau T en respectant la règle ci-dessus mentionnée puis d'afficher le tableau T dans son nouvel état (après insertion)
NB:
- Car ne peut pas être que "A","B" ou "C" et ne peut être inséré ni à la première ni a la dernière position du tableau
- On suppose que l'insertion d'un nouveau élément est possible en effet n < Nmax
Exemple:
T à l'état initial
B|A|B |C|A|C|B|A
T après l'insertion d'un caractère Car="B"
B|A|B |C|B|A|C|B|A
Par la suite on donne l'algorithme suivant:
0) Début Insertion
1) Ecrire ("Donner un entier n avec 5 n Nmax"); Lire(n)
Pour i de 1 à n Repeter
Ecrire("Donner une lettre A ou B ou C");
Lire (T[i])
Fin Pour
2) Proc Insert_Car(Car,T,n)
3) Proc Affiche (n,T)
4) Fin Insertion
Questions:
5. Traduire en Pascal l'algorithme Insertion ci-dessus.
6. Transformer la séquence 1) en une procédure saisie, ajouter les contrôles nécessaires pour la lecture de n ainsi que des éléments de T et en tenir compte dans le programme principal.
7. Ecrire la procédure Insert_Car permettant d'insérer un caractère Car dans le tableau T, tout en respectant les conditions mentionnés ci-dessus.
8. Ecrire la procédure Affiche permettant d'afficher les éléments de T après insertion de Car.
PASCAL
PROGRAM insertion;
uses wincrt;
const nmax=15;
type tab =array[1..nmax] of char;
var
t:tab;
car:char;
n:integer;
procedure saisir(var n:integer);
begin
repeat
write ('donnerla valeur de n:');
read(n);
until n in [1..nmax];
end;
procedure remplir (var t:tab;n:integer);
var
i:integer;
begin
repeat
read(T[1]);
until (upcase (T[1]) in['A'..'C']);
for i:=2 to n do
begin
repeat
write ('donne l"élement de rang',i,': ');
readln(t[i]);
until ((t[i]<>t[i+1])and (t[i]<>t[i-1])and (upcase (t[i]) in['A'..'C']));
end;
end;
procedure insert_car (car:char;var t:tab;n:integer);
var
i:integer;
ok:boolean;
begin
i:=2;ok:=false;
repeat
if((t[i-1]<>car) and (t[i]<> car))then
begin
repeat
t[n+1]:=t[n];
n:=n-1;
until(n<i);
t[i]:=car;
ok:=true;
end
else
i:=i+1;
until((i>n) or (ok=true));
end;
procedure affichage ( t:tab;n:integer);
var
i:integer;
begin
for i:=1 to n+1 do
write(t[i],';');
end;
begin
saisir (n);
remplir(t,n);
repeat
write('donner un caractere a inserer =');read(car);
until (upcase (car) in['A'..'C']);
insert_car(car,t,n);
affichage(t,n);
end.
Soit un tableau T de n caractères (5≤ n≤ Nmax) qui ne peuvent être que "A","B" ou "C" et tels que deux éléments successifs du tableau ne sont pas égaux.(Nmax est une constante de valeur 15).
On se propose d'insérer un caractère donné Car dans la première position possible dans le tableau T en respectant la règle ci-dessus mentionnée puis d'afficher le tableau T dans son nouvel état (après insertion)
NB:
- Car ne peut pas être que "A","B" ou "C" et ne peut être inséré ni à la première ni a la dernière position du tableau
- On suppose que l'insertion d'un nouveau élément est possible en effet n < Nmax
Exemple:
T à l'état initial
B|A|B |C|A|C|B|A
T après l'insertion d'un caractère Car="B"
B|A|B |C|B|A|C|B|A
Par la suite on donne l'algorithme suivant:
0) Début Insertion
1) Ecrire ("Donner un entier n avec 5 n Nmax"); Lire(n)
Pour i de 1 à n Repeter
Ecrire("Donner une lettre A ou B ou C");
Lire (T[i])
Fin Pour
2) Proc Insert_Car(Car,T,n)
3) Proc Affiche (n,T)
4) Fin Insertion
Questions:
5. Traduire en Pascal l'algorithme Insertion ci-dessus.
6. Transformer la séquence 1) en une procédure saisie, ajouter les contrôles nécessaires pour la lecture de n ainsi que des éléments de T et en tenir compte dans le programme principal.
7. Ecrire la procédure Insert_Car permettant d'insérer un caractère Car dans le tableau T, tout en respectant les conditions mentionnés ci-dessus.
8. Ecrire la procédure Affiche permettant d'afficher les éléments de T après insertion de Car.
PASCAL
PROGRAM insertion;
uses wincrt;
const nmax=15;
type tab =array[1..nmax] of char;
var
t:tab;
car:char;
n:integer;
procedure saisir(var n:integer);
begin
repeat
write ('donnerla valeur de n:');
read(n);
until n in [1..nmax];
end;
procedure remplir (var t:tab;n:integer);
var
i:integer;
begin
repeat
read(T[1]);
until (upcase (T[1]) in['A'..'C']);
for i:=2 to n do
begin
repeat
write ('donne l"élement de rang',i,': ');
readln(t[i]);
until ((t[i]<>t[i+1])and (t[i]<>t[i-1])and (upcase (t[i]) in['A'..'C']));
end;
end;
procedure insert_car (car:char;var t:tab;n:integer);
var
i:integer;
ok:boolean;
begin
i:=2;ok:=false;
repeat
if((t[i-1]<>car) and (t[i]<> car))then
begin
repeat
t[n+1]:=t[n];
n:=n-1;
until(n<i);
t[i]:=car;
ok:=true;
end
else
i:=i+1;
until((i>n) or (ok=true));
end;
procedure affichage ( t:tab;n:integer);
var
i:integer;
begin
for i:=1 to n+1 do
write(t[i],';');
end;
begin
saisir (n);
remplir(t,n);
repeat
write('donner un caractere a inserer =');read(car);
until (upcase (car) in['A'..'C']);
insert_car(car,t,n);
affichage(t,n);
end.
Sujets similaires
» insertion de zero
» nb d'apparence d'un caractère
» nb d’apparition d'un caractère dans une chaîne
» nb d'apparence d'un caractère dans un tableau
» nb d'apparence d'un caractère dans une chaîne de caractères
» nb d'apparence d'un caractère
» nb d’apparition d'un caractère dans une chaîne
» nb d'apparence d'un caractère dans un tableau
» nb d'apparence d'un caractère dans une chaîne de caractères
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum