Forum programmation
 
AccueilPortailFAQRechercherS'enregistrerMembresGroupesConnexion

Partagez | 
 

 devoir de control N°3

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
fighters
Nouveau
Nouveau
avatar

Nombre de messages : 24
Age : 29
Date d'inscription : 27/03/2007

MessageSujet: Re: devoir de control N°3   Mer 25 Avr - 19:26

voici un autre exercice du devoir de contreole 3 que je l'ai passé aujourd'hui:

--> on se propose d'ecrire un programme permettant de qaisir une phrase et l'afficher comme le montre l'exemple donné ci-dessous.La phrase commence obligatoirement par une lettre ne se termine pas par un espace et ses mots sont separés par un seul espace
Exemple:
pour ch= 'Bonne chance au bac 2007'
le programme affiche:
(le mot verticale commence sous le denier char du mot precedent)
(au lieu des traits on fait des espaces)

bonne
____c
____h

____a
____n
____c
____e
____au
_____bac
_______2007
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
mtcs
Administrateur
Administrateur
avatar

Nombre de messages : 1605
Date d'inscription : 21/11/2006

MessageSujet: Re: devoir de control N°3   Mer 25 Avr - 19:43

merci mon ami, je crois que cet exercice est plus simple que l'autre

une question svp: dernier mot reste tjrs tel qu'elle est ou ça change?
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Scorshy
utilisateur régulier
utilisateur régulier
avatar

Nombre de messages : 78
Age : 27
Date d'inscription : 18/02/2007

MessageSujet: Re: devoir de control N°3   Mer 25 Avr - 19:43

Thank you  for sharing us your ideas !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
manianis
V.I.P
V.I.P
avatar

Nombre de messages : 471
Age : 107
Date d'inscription : 19/03/2007

MessageSujet: Re: devoir de control N°3   Mer 25 Avr - 23:57

Ultra facile cet exercice comparé à l'autre.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://manianis.sitesled.com/
manianis
V.I.P
V.I.P
avatar

Nombre de messages : 471
Age : 107
Date d'inscription : 19/03/2007

MessageSujet: Re: devoir de control N°3   Jeu 26 Avr - 0:29

Code:
program decalage;

{ saisie d'une phrase }
procedure Saisie_Phrase(var ph : string);
begin
  repeat
    Write('Entrer une chaine (non vide) : ');
    Readln(ph);
  until (Pos('  ', Ph) = 0) and  { pas d'espaces doubles}
        (Length(ph) > 0) and      { la chaine n'est pas vide}
        (ph[Length(Ph)] <> ' ');  { le dernier caractère n'est pas un espace }
end;

{ affichage de la phrase selon le modèle donné }
procedure Affichage(ph : string);
var i, j, k, ne, lm : integer;
begin
  i := 0; { compteur des mots }
  repeat
    lm := Pos(' ', ph) - 1; { le 1er espace indique la longueur du 1er mot }
    if (lm < 0) then        { si la chaine contient un seul mot }
      lm := Length(ph);    { sa longueur est déterminée directement }
   
    if (i = 0) then begin
      Writeln(Copy(ph, 1, lm)); { le 1er mot est affiché              }
      ne := lm - 1;            { le nombre d'espaces du deuxième mot }
    end else if (i = 1) then begin
      for j:=1 to lm do begin
        for k:=1 to ne do Write(' '); { chaque caractère est précédé }
        Writeln(ph[j]);              { par (ne) espaces            }
      end;
    end else begin
      ne := ne + 1;                  { on ajoute un espace pour }
      for k:=1 to ne do Write(' ');  { tout nouveau mot        }
      Writeln(Copy(ph, 1, lm));      { on affiche le mot        }
    end;
   
    { on supprime (lm+1) caractères (+1) pour supprimer l'espace }
    { qui est aprés le mot s'il existe sinon il n'a pas d'effets }
    Delete(ph, 1, lm + 1);
   
    i:=i+1;
  until (Length(ph) = 0); { Y'a t'il encore des caractères }
end;

var ph : string;
begin
  Saisie_Phrase(ph);
  Affichage(ph);
  Readln;
end.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://manianis.sitesled.com/
fighters
Nouveau
Nouveau
avatar

Nombre de messages : 24
Age : 29
Date d'inscription : 27/03/2007

MessageSujet: Re: devoir de control N°3   Jeu 26 Avr - 9:24

mtcs a écrit:
merci mon ami, je crois que cet exercice est plus simple que l'autre

une question svp: dernier mot reste tjrs tel qu'elle est ou ça change?


elle reste tel qu'elle est sous le dernier char du mot precedent
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
fighters
Nouveau
Nouveau
avatar

Nombre de messages : 24
Age : 29
Date d'inscription : 27/03/2007

MessageSujet: Re: devoir de control N°3   Jeu 26 Avr - 9:28

pour manianis, merci pour ton code mais
il que le mot verticale soit sous le dernier char du mot precedent(horizontal)
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
fighters
Nouveau
Nouveau
avatar

Nombre de messages : 24
Age : 29
Date d'inscription : 27/03/2007

MessageSujet: Re: devoir de control N°3   Jeu 26 Avr - 9:46

Voici la correction, il n'est pas difficile

Code:
program DC3;
uses wincrt;
var ch:string;
procedure saisir(var ch:string);
begin
repeat write('ch = '); readln(ch) until (upcase(ch[1])in['A'..'Z']) and (ch[length(ch)]' ') and (pos('  ',ch)=0);
end;
procedure afficher(ch:string);
var ind,e,i,j:integer; m:string;
begin
ind:=1;e:=0;m:='';ch:=ch+' ';
while pos(' ',ch)0 do
begin
m:=copy(ch,1,pos(' ',ch)-1);
if ind=1 then
        begin
        for i:=1 to e do write(' ');
        writeln(m);
        e:=e+length(m)-1;
        ind:=-1;
        end
else begin
    for i:=1 to length(m) do
        begin
        for j:=1 to e do write(' ');
        writeln(m[i]);
        end;
        ind:=1;
    end;
delete(ch,1,pos(' ',ch));
end;
end;
begin
saisir(ch);
afficher(ch);
end.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
manianis
V.I.P
V.I.P
avatar

Nombre de messages : 471
Age : 107
Date d'inscription : 19/03/2007

MessageSujet: Re: devoir de control N°3   Jeu 26 Avr - 12:39

fighters a écrit:
pour manianis, merci pour ton code mais
il que le mot verticale soit sous le dernier char du mot precedent(horizontal)
Est-ce que tu france bien ? Moi comprendre rien messages claires pas...
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://manianis.sitesled.com/
manianis
V.I.P
V.I.P
avatar

Nombre de messages : 471
Age : 107
Date d'inscription : 19/03/2007

MessageSujet: Re: devoir de control N°3   Jeu 26 Avr - 12:44

Essayes d'utiliser une police monospace comme CourierNew pour que l'exemple soit plus clair.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://manianis.sitesled.com/
fighters
Nouveau
Nouveau
avatar

Nombre de messages : 24
Age : 29
Date d'inscription : 27/03/2007

MessageSujet: Re: devoir de control N°3   Jeu 26 Avr - 14:09

Voici l'exemple mon ami :

Revenir en haut Aller en bas
Voir le profil de l'utilisateur
mtcs
Administrateur
Administrateur
avatar

Nombre de messages : 1605
Date d'inscription : 21/11/2006

MessageSujet: Re: devoir de control N°3   Jeu 26 Avr - 17:29

merci manianis et fighters
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
manianis
V.I.P
V.I.P
avatar

Nombre de messages : 471
Age : 107
Date d'inscription : 19/03/2007

MessageSujet: Re: devoir de control N°3   Jeu 26 Avr - 23:52

fighters a écrit:
Voici l'exemple mon ami :

Ok çà c'est clair merci mon ami.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://manianis.sitesled.com/
manianis
V.I.P
V.I.P
avatar

Nombre de messages : 471
Age : 107
Date d'inscription : 19/03/2007

MessageSujet: Re: devoir de control N°3   Ven 27 Avr - 0:00

Ne t'énerves pas contre moi fighters mais je crois qu'il y'a une chose non claire. D'aprés le premier énoncé voici l'affichage qui diffère du nouveau affichage que tu proposes.
"bac" et "2007" ont été affichés dans leur intégralité sur une même ligne.
Code:
bonne
____c
____h
____a
____n
____c
____e
____au 
_____bac 
_______2007
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://manianis.sitesled.com/
manianis
V.I.P
V.I.P
avatar

Nombre de messages : 471
Age : 107
Date d'inscription : 19/03/2007

MessageSujet: Re: devoir de control N°3   Ven 27 Avr - 12:44

Voici le programme ci-dessus modifié pour faire le nouveau affichage.
Code:
program decalage;

{ saisie d'une phrase }
procedure Saisie_Phrase(var ph : string);
begin
  repeat
    Write('Entrer une chaine (non vide) : ');
    Readln(ph);
  until (Pos('  ', Ph) = 0) and  { pas d'espaces doubles}
        (Length(ph) > 0) and      { la chaine n'est pas vide}
        (ph[Length(Ph)] <> ' ');  { le dernier caractère n'est pas un espace }
end;

{ affichage de la phrase selon le modèle donné }
procedure Affichage(ph : string);
var i, j, k, ne, lm : integer;
begin
  i := 0; { compteur des mots }
  ne := 0;
  repeat
    lm := Pos(' ', ph) - 1; { le 1er espace indique la longueur du 1er mot }
    if (lm < 0) then        { si la chaine contient un seul mot }
      lm := Length(ph);    { sa longueur est déterminée directement }
   
    if (i mod 2 = 0) then begin
      for k:=1 to ne do Write(' ');
      Writeln(Copy(ph, 1, lm));      { le 1er mot est affiché              }
      ne := ne + lm - 1;            { le nombre d'espaces du deuxième mot }
    end else begin
      for j:=1 to lm do begin
        for k:=1 to ne do Write(' '); { chaque caractère est précédé }
        Writeln(ph[j]);              { par (ne) espaces            }
      end;
    end;
   
    { on supprime (lm+1) caractères (+1) pour supprimer l'espace }
    { qui est aprés le mot s'il existe sinon il n'a pas d'effets }
    Delete(ph, 1, lm + 1);
   
    i:=i+1;
  until (Length(ph) = 0); { Y'a t'il encore des caractères }
end;

var ph : string;
begin
  Saisie_Phrase(ph);
  Affichage(ph);
  Readln;
end.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://manianis.sitesled.com/
makram
modérateur
modérateur
avatar

Nombre de messages : 549
Age : 28
Date d'inscription : 29/12/2006

MessageSujet: Re: devoir de control N°3   Ven 27 Avr - 13:08

merci anis
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
fighters
Nouveau
Nouveau
avatar

Nombre de messages : 24
Age : 29
Date d'inscription : 27/03/2007

MessageSujet: Re: devoir de control N°3   Ven 27 Avr - 13:32

merci anis,Bon code, je suis pas énervé de toi,
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Contenu sponsorisé




MessageSujet: Re: devoir de control N°3   

Revenir en haut Aller en bas
 
devoir de control N°3
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Metal-Control
» Rapide présentation de Windows Firewall Control
» pont tournant Fleischmann 6152c et turn control
» Plaque Tournante Fleichmann+Turn Control+RRTC=Casse tête
» TCO - Mise en oeuvre du Track-Control d'Uhlenbrock

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Forum programmation :: Programmation :: Delphi & Pascal :: Pascal :: Exercices-
Sauter vers: