Programme pascal qui d'affiche un triangle [Fermé]

Signaler
-
 rikooo -
Bonjour,

salut a tous j'ai un problème dans un exercice dans mon livre
il me demande de faire un programme et d'enduire un analyse dans programme pascal qui permet d'affiché un triangle isocèle formé d'étoiles de n ligne (n = donné par le clavier )
un exemple pour comprendre
n=8

*
***
*****
*******
*********
***********
*************
***************



s'il vous plaie j'ai besoin de votre aide et merci
votre nouveau ami mam :(
A voir également:

4 réponses

bjr jesper k ceci va taider c le programme

ligne:integer;
a, b: integer;
begin
writeln('nbre ligne'); read(ligne);
for a:=1 to ligne do
begin
for b:=1 to a do
write('*');
writeln;
end
end.


jespere k c pas trop trop tard

en revange je recherche comment faire la figure ci dessous
*
* *
** **
* *
*
6
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 65492 internautes nous ont dit merci ce mois-ci

Messages postés
16358
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
7 juin 2021
2 842
Un seul exemple de figure, qui plus est sans explication, ne permet pas de savoir comment la figure est construite pour les itérations suivantes...

Néanmoins pour n=2, ceci marchera :

program chrislains;

procedure g(n:integer);
var i:integer;
begin
     for i:=1 to n do
         write('*');
end;

procedure f(n:integer);
var i:integer;
begin
    if n=0 then writeln('*')
           else begin
                f(n-1);
                g(n);
                write(' ');    
                g(n);
                writeln;
                f(n-1);
                end;
end;

BEGIN
   f(2);
END.

mr6 c just
program sym ;
uses wincrt ;
var ch: string ;
procedure affichage (ch1,ch2: string ) ;
begin
if ch1 <> '' then
begin

writeln (ch1,ch2) ;
affichage (copy ( ch1,1,length (ch1) -1 ) , copy (ch2,2,length (ch2) -1)) ;
writeln (ch1,ch2) ;
end ;
end ;
begin
writeln ('saisir ch : '); readln (ch ) ;
writeln ;
affichage (ch,ch) ;
end .
Messages postés
16358
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
7 juin 2021
2 842
Tu dois utiliser une boucle (ou de la récursivité), regarde ce cours :
https://pascal.developpez.com/cours/cyberzoide/chap6.php3
Messages postés
16358
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
7 juin 2021
2 842
Voici pour les "losanges" même si ça n'en est pas vraiment...

program losange;

procedure f(n:integer);
var i:integer;
begin
     for i:=1 to n do
         write(' ');
     write('*');
end;

procedure g(n,nmax:integer);
begin
     f(nmax-n);
     f(2*n);
     writeln;
end;

procedure h(n,nmax:integer);
begin
     if (n<nmax)
     then begin
          g(n,nmax);
          h(n+1,nmax);
          g(n,nmax);
          end
     else g(n,nmax);
end;

var n:integer;
BEGIN
     for n:=0 to 5 do
     begin
          writeln('n=',n);
          h(0,n);
          writeln;
     end;
END.
es que on peut faire un losonge avec la recursivité ?
Messages postés
62
Date d'inscription
mardi 26 octobre 2010
Statut
Membre
Dernière intervention
13 janvier 2012

bonsoir voila ce que tu veux
ligne:integer;
a, b: integer;
begin
writeln('nbre ligne un nombre impaire'); read(ligne);
for a:=1 to (ligne div 2 )+1 do
begin
for b:=1 to a do
write('*');
writeln;
end;
for k:=ligne div2 +2 to ligne do
begin
for i:=ligne div 2 downto 1 do
write('*');
writeln;

end ;
end.
Messages postés
16358
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
7 juin 2021
2 842
Ton programme a plusieurs erreurs et ne donne pas le résultat attendu mais celui-ci :

a=2 :

*
**
***
**
**
en fait je cherche a faire un programme en turbo pascal qui affiche un losange
uses wincrt;
var
d,i,j,c,h:integer;
begin
readln(d);
for i:=1 to d div 2 do
begin
for j:=1 to i do
write('*');
writeln('');
end;
for h:= d div 2 downto 1 do
begin
for c:= h-1 downto 1 do
write('*');
writeln('');
end

end.