Exercice: Matrice: Codage, chiffrement d'un texte
Forum INFOMATH :: Enseignement de l'informatique :: Informatique - Collège & Lycée :: Exercices Pascal
Page 1 sur 1
Exercice: Matrice: Codage, chiffrement d'un texte
Problème (CODAGE D'UN TEXTE)
Une manière de coder un texte consiste en l'opération suivante. On se fixe un entier n donné. On considère que le texte à coder est une chaîne de caractères. En commençant à partir du premier caractère, on divise le
texte en blocs de longueur n2 (nxn) caractères consécutifs. Si la longueur du texte n'est pas un multiple de n2, on lui ajoute autant d'espaces qu'il en faut pour que sa longueur devienne un multiple de n2. Chaque bloc est divisé à son tour en n sous-blocs de longueur n caractères. En disposant ces sous-blocs l'un en dessous de l'autre, on obtient alors n colonnes. Chaque colonne, lue du haut vers le bas, va donner une chaîne de n caractères. En rassemblant dans l'ordre toutes ces chaînes, on obtient une nouvelle chaîne qui sera le texte codé.
Exemple :
Pour n = 3 et le texte à coder ="Je vais à Tunis pour l'OTI"
La longueur de ce texte est égale à 26. On lui ajoute 1 espace pour que sa longueur devienne multiple de 9. La chaîne devient "Je vais à Tunis pour l'OTI" Sa longueur devient donc 27.
En appliquant les étapes ci-dessus évoquées, on obtient :
La chaîne codée sera : Jvsea ià n TipusoulTr'I O "
Écrire un programme qui saisit un entier naturel n tel que 2<9 et le texte à coder (une chaîne de caractères). Il fait sortir ensuite le texte codé.
Une manière de coder un texte consiste en l'opération suivante. On se fixe un entier n donné. On considère que le texte à coder est une chaîne de caractères. En commençant à partir du premier caractère, on divise le
texte en blocs de longueur n2 (nxn) caractères consécutifs. Si la longueur du texte n'est pas un multiple de n2, on lui ajoute autant d'espaces qu'il en faut pour que sa longueur devienne un multiple de n2. Chaque bloc est divisé à son tour en n sous-blocs de longueur n caractères. En disposant ces sous-blocs l'un en dessous de l'autre, on obtient alors n colonnes. Chaque colonne, lue du haut vers le bas, va donner une chaîne de n caractères. En rassemblant dans l'ordre toutes ces chaînes, on obtient une nouvelle chaîne qui sera le texte codé.
Exemple :
Pour n = 3 et le texte à coder ="Je vais à Tunis pour l'OTI"
La longueur de ce texte est égale à 26. On lui ajoute 1 espace pour que sa longueur devienne multiple de 9. La chaîne devient "Je vais à Tunis pour l'OTI" Sa longueur devient donc 27.
En appliquant les étapes ci-dessus évoquées, on obtient :
J | e | T | u | u | r | |||||
v | a | i | n | i | s | l | ' | O | ||
s | à | | p | o | T | I |
La chaîne codée sera : Jvsea ià n TipusoulTr'I O "
Écrire un programme qui saisit un entier naturel n tel que 2<9 et le texte à coder (une chaîne de caractères). Il fait sortir ensuite le texte codé.
Napoléon- Admin
-
Nombre de messages : 2934
Localisation : Tunisie
Réputation : 122
Points : 7874
Date d'inscription : 19/03/2007
Feuille de personnage
Capacité linguistique:
(999/1000)
Re: Exercice: Matrice: Codage, chiffrement d'un texte
Solution en Pascal (extraite du net):
- Code:
program codes;
uses wincrt;
Var ch : string;
nc : integer;
function coder(m : integer; ch_org:string):string;
var i,j,k,l,d : integer;
p,db,nb_bloc : integer;
ch_out : string;
begin
l:=length(ch_org);
d:=sqr(m)-(l mod sqr(m));
if d<>0 then
begin
For i:=1 to d do ch_org:=ch_org+' ';
end;
ch_out:=ch_org;
nb_bloc:=length(ch_org) div sqr(m);
p:=1;
For i:=1 to nb_bloc do
begin
db:=(i-1)*sqr(m) + 1;
for j:=0 to m-1 do
begin
for k :=0 to m-1 do
begin
ch_out[p]:=ch_org[db+j+k*m];
p:=p+1;
end;
end;
end;
coder:=ch_out;
end;
procedure saisie(var m :integer; var txt_coder:string);
begin
repeat
write('Donner un entier entre 1 et 5 : '); readln(m);
until m in [1..5];
write('Saisir le texte ŕ coder : ');readln(txt_coder);
writeln;
end;
begin
saisie(nc,ch);
writeln('le texte codé sera : ',coder(nc,ch));
end.
Napoléon- Admin
-
Nombre de messages : 2934
Localisation : Tunisie
Réputation : 122
Points : 7874
Date d'inscription : 19/03/2007
Feuille de personnage
Capacité linguistique:
(999/1000)
Sujets similaires
» Exercice: Codage des entiers longs
» Exercice: déterminant d'une matrice en Pascal
» besoin d'aide : exercice : matrice carrée magique
» Exercice: Recherche des noms des pays dans un fichier Texte
» matrice
» Exercice: déterminant d'une matrice en Pascal
» besoin d'aide : exercice : matrice carrée magique
» Exercice: Recherche des noms des pays dans un fichier Texte
» matrice
Forum INFOMATH :: Enseignement de l'informatique :: Informatique - Collège & Lycée :: Exercices Pascal
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum