infosp@ce
Bienvenue sur infosp@ce.
inscrivez-vous, c'est gratuit...
Ou identifiez-vous si vous êtes déjà membre...

Révisions

Voir le sujet précédent Voir le sujet suivant Aller en bas

Révisions

Message par Sami le Dim 21 Fév - 22:06

Chers élèves,
Ici, vous pouvez réviser la matière Algorithmique et programmation..
Posez vos questions, vos demandes, vos essais...
Plusieurs enseignants seront à votre écoute et seront prêts à vous répondre.
En espérant une bonne réussite à tous.
avatar
Sami
Admin

Masculin Messages : 1183
Points : 1768
Réputation : 48
Date d'inscription : 06/10/2009
Age : 35
Localisation : Lycée Ben Aoun

http://infospace.discutforum.com

Revenir en haut Aller en bas

Re: Révisions

Message par toutaonline le Dim 21 Fév - 23:05

Sami a écrit:Chers élèves,
Ici, vous pouvez réviser la matière Algorithmique et programmation..
Posez vos questions, vos demandes, vos essais...
Plusieurs enseignants seront à votre écoute et seront prêts à vous répondre.
En espérant une bonne réussite à tous.


_______________________signature___________________

avatar
toutaonline
Modérateur

Féminin Messages : 572
Points : 758
Réputation : 45
Date d'inscription : 10/10/2009
Age : 105
Localisation : Ici

Revenir en haut Aller en bas

Re: Révisions

Message par Sami le Mar 23 Fév - 11:51

Comme révision je vous conseille de faire les examens suivants:

[Vous devez être inscrit et connecté pour voir ce lien]

[Vous devez être inscrit et connecté pour voir ce lien]
avatar
Sami
Admin

Masculin Messages : 1183
Points : 1768
Réputation : 48
Date d'inscription : 06/10/2009
Age : 35
Localisation : Lycée Ben Aoun

http://infospace.discutforum.com

Revenir en haut Aller en bas

Re: Révisions

Message par bilele le Sam 20 Mar - 16:58

salut pour tous mes profs et mes collegues
je chercher comment inserer
au position de de l'entier 0 le caractére " " dans cette matrice
pour avoir la forme de calendrier

program bilele;
uses wincrt;
type
mat=array[1..7,1..7 ]of integer;

var m:mat;

n,jour:integer;
procedure saisir(var n:integer;var jour:integer);
begin
repeat
write('jour=');
read(jour);
until (jour in [1..7]);
repeat
write('nomber de jour=');
read(n);
until (n>=28) and(n<=31);
end;

procedure remplir ( var m :mat; n,jour:integer );
var
i,j,f:integer;
k:integer;
begin

for f := 1 to jour-1 do
begin
m[f,1]:= 0;
end;
k:=1;
begin

for j := jour to 7 do
begin
m[1,j]:=k;
k:=k+1;
end;
end;

k:=m[1,7];
for i := 2 to 5 do

for j := 1 to 7 do
begin

m[i,j]:=k+1;
k:=k+1 ;
while (m[i,j])>n do
m[i,j]:=0;

end;
end;

procedure affiche ;
var i,f ,j:integer;
begin
for i := 1 to 5 do
begin
for j := 1 to 7 do

write(m[i,j]:5);
writeln;

end;
end;
begin
saisir(n,jour);
remplir(m,n,jour);
affiche;
end.
avatar
bilele
membre

Masculin Messages : 23
Points : 26
Réputation : 0
Date d'inscription : 12/03/2010
Age : 26
Localisation : benguerdane

Revenir en haut Aller en bas

Re: Révisions

Message par Sami le Sam 20 Mar - 18:39

Bravo Bilel pour l'effort,
Tout simplement, tu peux au niveau de l'affichage utiliser la structure conditionnelle pour afficher des espaces à la place du 0 (car on ne peut pas insérer des caractères dans une matrice d'entiers)
Code:
if (m[i,j]<>0) then
  write(m[i,j]:5)
else
    write(' ':5);
avatar
Sami
Admin

Masculin Messages : 1183
Points : 1768
Réputation : 48
Date d'inscription : 06/10/2009
Age : 35
Localisation : Lycée Ben Aoun

http://infospace.discutforum.com

Revenir en haut Aller en bas

Re: Révisions

Message par bilele le Dim 21 Mar - 12:38

merci mr sami
avatar
bilele
membre

Masculin Messages : 23
Points : 26
Réputation : 0
Date d'inscription : 12/03/2010
Age : 26
Localisation : benguerdane

Revenir en haut Aller en bas

Re: Révisions

Message par bilele le Mar 23 Mar - 2:24

mr sami
est ce que il ya une solution pour eviter toujours de tomber dans les runtime error
surtout 105
avatar
bilele
membre

Masculin Messages : 23
Points : 26
Réputation : 0
Date d'inscription : 12/03/2010
Age : 26
Localisation : benguerdane

Revenir en haut Aller en bas

Re: Révisions

Message par Sami le Mar 23 Mar - 16:40

L'erreur 105 concerne les fichiers textes,
Elle se produit lorsque vous voulez effectuer une opération d'écriture sur un fichier texte qui n'est pas ouvert en écriture.
Par exemple:
Soit la déclaration: F : text;
si au cours du programme, il existe l'instruction: writeln (F, ch);
Cette instruction ne fonctionnerait correctement que si elle est précédée déjà par Append(F) ou par Rewrite(F) qui permettent d'ouvrir le fichier en mode écriture.
Si par faute, on a ecrit Reset(F) à la place de Append(F), on va avoir un arrêt brutal de l'exécusion avec le message d'erreur: "Runtime Error 105"
Pour éviter de tomber dans des telles erreurs Bilele, il faut tout d'abord essayer de vérifier qu'un fichier est ouvert en écriture avant d'y enregistrer Smile

Mais pour éviter l'arrêt brutal de l'exécution (Le programme continuera à s'exécuter), on peut utiliser les directives de compilation.
Il suffit de mettre la séquence qui peut causer le problème entre {$I-} et {$I+}, c'est à dire lors de l'exécution de cette séquence, s'il y aura une erreur, l'exécution ne s'arrête pas et le code de l'erreur sera retourné par la fonction prédéfinie IOResult (Résultat d'entrée/sortie)
Voilà un exemple qui explique l'utilisation de ces directives:
Exemple 1: L'exécution de ce programme génère l'erreur 105
Code:
program test;
uses wincrt;
var
 F: text;
Begin
Assign(F,'d:\a.txt');
Rewrite(f);
close(F);

Reset(f);
writeln(F,'bonjour');

end.

Exemple2: L'exécution de ce programme génère l'erreur 105 mais sans arrêt de l'exécution
Code:
program test;
uses wincrt;
var
 F: text;
Begin
Assign(F,'d:\a.txt');
Rewrite(f);
close(F);

Reset(f);
{$I-}
writeln(F,'bonjour');
{$I+}

If(IORESULT=105) then
                writeln('erreur 105 générée: Ecriture dans le fichier texte impossible')
else
    writeln('pas d''erreur');


end.

Dans le cas général maintenant: En utilisant les directives on va avoir deux possibilités:
* IOResult = 0 : l'instruction s'est bien exécuter et aucune erreur n'est générée.
* IOResult <> 0: l'instruction ne s'est pas bien exécuter, elle a causée une erreur système
On peut alors écrire:
Code:
 program......;
......
Begin
....
{$I-}
  ......        (** l'instruction qui risque de générer l'erreur **)
{$I+}
If (IOresult <> 0) then
    writeln ( '.................')              (** c'est à vous de choisir le message d'erreur personnel**)
Else
begin
      ........      (** Continuer le reste du programme **)
end;
End.

N.B: Si on écrit {$I-}: $I- ne sera pas considéré comme commentaire Smile
avatar
Sami
Admin

Masculin Messages : 1183
Points : 1768
Réputation : 48
Date d'inscription : 06/10/2009
Age : 35
Localisation : Lycée Ben Aoun

http://infospace.discutforum.com

Revenir en haut Aller en bas

Re: Révisions

Message par bilele le Mar 23 Mar - 21:33

merci mr sami enfin sa fonctionne correctement.
avatar
bilele
membre

Masculin Messages : 23
Points : 26
Réputation : 0
Date d'inscription : 12/03/2010
Age : 26
Localisation : benguerdane

Revenir en haut Aller en bas

Re: Révisions

Message par bilele le Mer 24 Mar - 12:37

salut pour tous mes proffeseur et mes collegues je trouve un petit probléme pendant la resoulution de de ce probléme

Un nombre vilain est un nombre qui a au moins dux pairs de facteurs telle que la somme des facteursd'une paire équivaut a la différence des facteur
de l'autre .
le nombre 6 est un nombre vilain puisque 6*1=2*3=6 et 6-1=2+3
Aussi 24 est un nombre vilain puisque 12-2=6+4
Ecrire un programme qui ,lit saisie une liste d'entiers positifs dans un fichier textef1.txt ,creé un second fichier f2.txt en inscrivant devant chaque entier s'il est vilain ou pas
-l'arret de saisie de la liste dabs f1 est validé en repondant par O(oui) a la question "voulez vous continuez"


[i][b]
avatar
bilele
membre

Masculin Messages : 23
Points : 26
Réputation : 0
Date d'inscription : 12/03/2010
Age : 26
Localisation : benguerdane

Revenir en haut Aller en bas

Re: Révisions

Message par bilele le Mer 24 Mar - 12:39

c'est ma solution mais je crois qu"elle n'est pas la plus elegante aussi il ya un petit erreur je vous remercie pour le corriger


program bilel;
uses wincrt;
type tab1=array[1..20]of integer;
var n:integer;
i,j,k:integer;test:boolean;
t1,t2:tab1; ch:string; f1,f:text;
c:char;

procedure remplir(var n:integer;var t1,t2:tab1;var k:integer);
begin
k:=0;
for i:=1 to n do
begin

if n mod i=0 then
begin
for j:=1 to n do
if i*j=n then
begin
k:=k+1;
t1[k]:=i;
t2[k]:=j;
end;
end;
end;
end;
function vilain(n:integer;t1,t2:tab1;k:integer):boolean;
begin
for i:=1 to k do
for j:=1 to k-1 do
begin
if (t2[i]-t1[i]=t2[j+1]+t1[j+1])or (t1[i]-t2[i]=t2[j+1]+t1[j+1])
then test:=true
end;
vilain:=test;

end;

begin
assign(f,'c:\vilain.txt');
rewrite(f);
assign(f1,'c:\psv.txt');
rewrite(f1);
writeln(f,'les nombres vilain');
repeat
writeln('n=');readln(n);
str(n,ch);
writeln(f1,ch);
remplir(n,t1,t2,k);
if vilain (n,t1,t2,k) then
begin
str(n,ch);
ch:=ch+' ce nombre est vilain';
writeln(f,ch) ;
end
else
begin
str(n,ch);
ch:=ch+' ce nombre n''est pas vilain';
writeln(f,ch)
end ;
repeat
writeln('voulez continue?:');readln(c);
until upcase(c) in['O','N'];
until upcase(c)='N';
close(f1);
close(f);
end.
avatar
bilele
membre

Masculin Messages : 23
Points : 26
Réputation : 0
Date d'inscription : 12/03/2010
Age : 26
Localisation : benguerdane

Revenir en haut Aller en bas

Re: Révisions

Message par Sami le Ven 26 Mar - 2:33

Bravo Bilel pour l'effort, c'est très bien fait
Ci-dessous votre programme avec des petites modifications et des commentaires pour l'explication:
Code:
program bilel;
uses wincrt;
type tab1=array[1..20]of integer;
var n:integer;
i,j,k:integer;test:boolean;
t1,t2:tab1; ch:string; f1,f:text;
c:char;

(******** recherche des diviseurs ****************************)
procedure remplir(var n:integer;var t1,t2:tab1;var k:integer);
begin
    k:=0;
    for i:=1 to n do
    begin
          if n mod i=0 then
          begin
              {-------
              for j:=1 to n do
                  if (i*j = n) then
                  begin
                        k:=k+1;
                        t1[k]:=i;
                        t2[k]:=j;
                  end;
                  -------le j que vous cherché ici c'est: n div i , car si i*j=n alors n mod i = 0 et n div i = j -----}
                  k:=k+1;
                  t1[k]:=i;
                  t2[k]:= n div i;
          end;
    end;
end;

(*********** vérification de la condition ****************************)
function vilain(n:integer;t1,t2:tab1;k:integer):boolean;
begin
{---------------------
Vous chercher à vérifier si le nombre est vilain oun non, on n'a pas besoin
de parcourir tout le tableau, c'est un traitement avec condition d'arrêt
En utilisant la même idée, voilà une proposition:
----------------------}
    i:=1;
    test:= false;
    Repeat
          j:=1;
          Repeat
            if ((t1[i]-t2[i]) = (t1[j]+t2[j])) OR ((t1[i]+t2[i]) = (t1[j]-t2[j])) then
                  test := true
            else
                  j:= j+1;
          Until (j > k) or (test);

          i:= i+1;

    until (i=k) OR (test);
vilain:= test;
end;

{___________________ programme principal __________________________}
begin
    assign(f,'d:\vilain.txt');
    rewrite(f);

    assign(f1,'d:\psv.txt');
    rewrite(f1);

    writeln(f,'les nombres vilain');
    repeat
          write('n=');readln(n);
          str(n,ch);
          writeln(f1,ch);
          remplir(n,t1,t2,k);
          if vilain (n,t1,t2,k) then
          begin
                str(n,ch);
                ch:=ch+' ce nombre est vilain';
                writeln(ch);
                writeln(f,ch) ;
          end
          else
          begin
                str(n,ch);
                ch:=ch+' ce nombre n''est pas vilain';
                writeln(ch);
                writeln(f,ch)
          end ;

          repeat
                write('voulez-vous continue?:(O/N)');readln(c);
          until upcase(c) in['O','N'];
    until upcase(c)='N';

    close(f1);
    close(f);
end.

{------------ remarque: ----------------------
 le traitement:
              str(n,ch);
                ch:=ch+' ce nombre est vilain';
                writeln(f,ch) ;
 peut être remplacé tout simplement par:
          writeln(f,n,' ce nombre est vilain');
 -----------------------------------------------}
Bonne révision.
avatar
Sami
Admin

Masculin Messages : 1183
Points : 1768
Réputation : 48
Date d'inscription : 06/10/2009
Age : 35
Localisation : Lycée Ben Aoun

http://infospace.discutforum.com

Revenir en haut Aller en bas

Re: Révisions

Message par Contenu sponsorisé


Contenu sponsorisé


Revenir en haut Aller en bas

Voir le sujet précédent Voir le sujet suivant Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum