un peu d'affichage!!
Forum INFOMATH :: Enseignement de l'informatique :: Informatique - Collège & Lycée :: Exercices Pascal
Page 1 sur 2•
Page 1 sur 2 • 1, 2 
un peu d'affichage!!
Ecrire un programme en Pascal qui parmet d'afficher à l'ecran ce figure: exemple pour n=5 on obtien la forme suivante
http://www.servimg.com/image_preview.php?i=1&u=11696810
a+
http://www.servimg.com/image_preview.php?i=1&u=11696810
a+

wico- Nouveau membre

- Messages : 12
Inscrit le : 09 Nov 2007
Localisation : la terre
Feuille de personnage
Capacité linguistique:


(997/1000)
Re: un peu d'affichage!!
wico a écrit:Ecrire un programme en Pascal qui parmet d'afficher à l'ecran ce figure: exemple pour n=5 on obtien la forme suivante
http://www.servimg.com/image_preview.php?i=1&u=11696810
a+
Très bon exercice qui fait comprendre le fonctionnement des boucles FOR
(les structures itératives). Je te donnerai une indication demain matin.
N'oublie pas de dire Bonjour, Salut tout le monde, Bonsoir, ...
Nabil - tunis
خير الناس أنفعهم للناس
خير الناس أنفعهم للناس

nabiL- Admin


- Messages : 1906
Inscrit le : 19 Mar 2007
Localisation : Tunisie
Feuille de personnage
Capacité linguistique:


(999/1000)
Re: un peu d'affichage!!
Salut wico:
Une 1ère version de la solution, que je considère naïve et non très optimisée est la suivante:
Des commentaires?
Une 1ère version de la solution, que je considère naïve et non très optimisée est la suivante:
- Code:
uses wincrt;
var
i,j,N: integer;
begin
write('N = ');
readln(N);
for i:=1 to N-1 do
begin
for j:=1 to N+i do
if (j>N) then write(' * ') else write(' ');
writeln;
end;
for i:=1 to 2*N do
write(' * ');
writeln;
for i:=1 to N-1 do
begin
for j:=1 to 2*N do
if ((j>i) and (j<=N)) then write(' * ') else write(' ');
writeln;
end;
end.
Des commentaires?
Nabil - tunis
خير الناس أنفعهم للناس
خير الناس أنفعهم للناس

nabiL- Admin


- Messages : 1906
Inscrit le : 19 Mar 2007
Localisation : Tunisie
Feuille de personnage
Capacité linguistique:


(999/1000)
Re: un peu d'affichage!!
Normalement, on peut résoudre tout le problème en deux boucles FOR. Elle devrait être un peu compliquée. Si je trouve le temps, je m'amuserai de te trouver une solution avec uniquement 2 boucles FOR.
Nabil - tunis
خير الناس أنفعهم للناس
خير الناس أنفعهم للناس

nabiL- Admin


- Messages : 1906
Inscrit le : 19 Mar 2007
Localisation : Tunisie
Feuille de personnage
Capacité linguistique:


(999/1000)
Re: un peu d'affichage!!
Une version plus optimisée (au niveau code source) est prête. Commente d'abord ce que je t'ai proposé.
Nabil - tunis
خير الناس أنفعهم للناس
خير الناس أنفعهم للناس

nabiL- Admin


- Messages : 1906
Inscrit le : 19 Mar 2007
Localisation : Tunisie
Feuille de personnage
Capacité linguistique:


(999/1000)
Re: un peu d'affichage!!
Bon programme Nabil.
manianis- Admin


- Messages : 976
Inscrit le : 10 Oct 2007
Localisation : Tunisie
Feuille de personnage
Capacité linguistique:


(999/1000)
Re: un peu d'affichage!!
Merci manianis, wico a posé le problème et nous a quitté

voilà une deuxième version plus optimisée:
Any comments?
voilà une deuxième version plus optimisée:
- Code:
uses wincrt;
var
i,j,N: integer;
condition: boolean;
begin
write('N = ');
readln(N);
for i:=1 to 2*N-1 do
begin
write(i,' : ');
for j:=1 to 2*N do
begin
condition := (i<=N) and (j>N) and (j<=N+i) OR
(i>=N) and (j> (i mod N)) and (j<=N);
if (condition) then
write(' * ')
else
write(' ');
end;
writeln;
end;
end.
Any comments?
Nabil - tunis
خير الناس أنفعهم للناس
خير الناس أنفعهم للناس

nabiL- Admin


- Messages : 1906
Inscrit le : 19 Mar 2007
Localisation : Tunisie
Feuille de personnage
Capacité linguistique:


(999/1000)
Re: un peu d'affichage!!
Je ferais comme même un petit essai :
- Code:
program losange;
var i, j, a, n : integer;
begin
Writeln('Entrer n : '); Readln(n);
a := 0;
for j:=1 to 2*n-1 do begin
if (a > n) then a := 0 else a := a + 1;
for i:=1 to n + a do begin
if
(j < n) and (i > n) or
(j = n) or
(j > n) and (i > j mod n)
then Write('*') else Write(' ');
end;
Writeln;
end;
Readln;
end.
Dernière édition par le Dim 11 Nov - 23:05, édité 1 fois
manianis- Admin


- Messages : 976
Inscrit le : 10 Oct 2007
Localisation : Tunisie
Feuille de personnage
Capacité linguistique:


(999/1000)
Re: un peu d'affichage!!
Il fonctionne bien ton programme.
Si t'a du temps libre, on peut discuter lequel des programmes est le moins complexe entre terme de Comparaison.
OK?
Si t'a du temps libre, on peut discuter lequel des programmes est le moins complexe entre terme de Comparaison.
OK?
Nabil - tunis
خير الناس أنفعهم للناس
خير الناس أنفعهم للناس

nabiL- Admin


- Messages : 1906
Inscrit le : 19 Mar 2007
Localisation : Tunisie
Feuille de personnage
Capacité linguistique:


(999/1000)
Re: un peu d'affichage!!
Comme tu veux. Je suis d'accord.
manianis- Admin


- Messages : 976
Inscrit le : 10 Oct 2007
Localisation : Tunisie
Feuille de personnage
Capacité linguistique:


(999/1000)
Re: un peu d'affichage!!
Je commence par le 2ème code source...
Le nombre de comparaison qu'il fait c'est exactement
Le nombre de comparaison qu'il fait c'est exactement
2N x (2N - 1) comparaison (if ... then ...)
Qu'est-ce que tu en penses?
à toi mnt manianis...
Qu'est-ce que tu en penses?
à toi mnt manianis...
Nabil - tunis
خير الناس أنفعهم للناس
خير الناس أنفعهم للناس

nabiL- Admin


- Messages : 1906
Inscrit le : 19 Mar 2007
Localisation : Tunisie
Feuille de personnage
Capacité linguistique:


(999/1000)
Re: un peu d'affichage!!
J'ai fait une petite rectification ci-dessus pour minimiser le nombre d'itérations
manianis- Admin


- Messages : 976
Inscrit le : 10 Oct 2007
Localisation : Tunisie
Feuille de personnage
Capacité linguistique:


(999/1000)
Re: un peu d'affichage!!
manianis a écrit:J'ai fait une petite rectification ci-dessus pour minimiser le nombre d'itérations
J'ai remarqué...
Lorsque tu trouves du temps, évalue le nombre de comparaisons de ton code source manianis.
Nabil - tunis
خير الناس أنفعهم للناس
خير الناس أنفعهم للناس

nabiL- Admin


- Messages : 1906
Inscrit le : 19 Mar 2007
Localisation : Tunisie
Feuille de personnage
Capacité linguistique:


(999/1000)
Re: un peu d'affichage!!
pour n = 5 :it = 69
pour n=6 : it = 100
pour n=7 : it = 137
pour n=100 : it= 29804
pour n=1000 : it= 2998004 (9 secondes sur P4 3GHz)
pour n=10000 : it = 299980004
formule : it = (3*N-2)*N+4
pour n=6 : it = 100
pour n=7 : it = 137
pour n=100 : it= 29804
pour n=1000 : it= 2998004 (9 secondes sur P4 3GHz)
pour n=10000 : it = 299980004
formule : it = (3*N-2)*N+4
Dernière édition par le Dim 11 Nov - 23:34, édité 3 fois
manianis- Admin


- Messages : 976
Inscrit le : 10 Oct 2007
Localisation : Tunisie
Feuille de personnage
Capacité linguistique:


(999/1000)
Re: un peu d'affichage!!
Votre programme en fait :
pour n=5 : 90
pour n=6 : 132
pour n=7 : 182
...
pour n=100 : 39800
pour n=1000 : it = 3998000 (en 14 secondes)
pour n=10000 : it = 399980000
formule : it = (4n-2)*n
pour n=5 : 90
pour n=6 : 132
pour n=7 : 182
...
pour n=100 : 39800
pour n=1000 : it = 3998000 (en 14 secondes)
pour n=10000 : it = 399980000
formule : it = (4n-2)*n
Dernière édition par le Dim 11 Nov - 23:35, édité 2 fois
manianis- Admin


- Messages : 976
Inscrit le : 10 Oct 2007
Localisation : Tunisie
Feuille de personnage
Capacité linguistique:


(999/1000)
Page 1 sur 2 • 1, 2 



