je veut faire un programme en pascal qui lorsque je lui entre unla valeur d un coté n , qu il maffiche a lecran un carré , mais je doi le faire que en boucle while.
On peut très bien simuler une boucle for avec une boucle while :
var
i : Integer;
begin
i := 0;
// Affiche le côté du haut
while i<5 do
begin
// Afficher un *
i := i + 1;
end;
// Affiche les côtés de côté
// ...
// Affiche le côté du bas
// ...
end;
Je te laisse terminer, je présume que tu sauras le terminer.
__________________________
Lisez la charte, pensez à regarder la FAQ, les tutoriaux, l'annuaire et faites une recherche dans les forums.
N'oubliez pas le Tag [Résolu].
eu jme suis mal fait comprendre je sait qu'il faut le faire en while , c d'ailleur une condition imposer car on peut le faire en for se que d ailleur g reussi a faire , mais en while je bug mon program marche pas , si vous pouviez me le relaiser ke je compare ou jai beuger car la je sature jy sui dessu dps ke jai poster se sujet
Merci d'éviter le langage SMS par respect pour ceux qui te lisent.
Montres ton code pour qu'on puisse voir ce qui ne va pas.
En fait, je ne vois pas le soucis pour afficher les côtes, quel est ton problème ?
Un indice, penses à imbriquer des while.
__________________________
Lisez la charte, pensez à regarder la FAQ, les tutoriaux, l'annuaire et faites une recherche dans les forums.
N'oubliez pas le Tag [Résolu].
ok bas mon souci est que je ne vois pas du tout comment les afficher par cette methode , pouvez vous maidez?
sion jai fait se program, qui fait un carré plein , mais pareil j ene vois pas comment vider se carré suis bloker dans les 2 cas.
Program
var i,j,n:integer;
ligne : string;
begin
ligne:='';
readln(n) ;
i:=0;
j:=0;
if n>0 then
begin
while j<n do
begin
ligne:=ligne+'*';
j:=j+1;
end;
while i<n do
begin
writeln(ligne ) ;
i:=i+1;
end;
end;
end.
Comment ferais-tu avec des boucles for pour faire le carré ?
Tu reprends le code que tu fais avec des for et remplaces les for i := 1 to 4 par
i := 1 while i<4 do ... i := i + 1
A moins que tu ne saches pas le faire avec des for ? Pourtant tu as dit que oui.
Tu sais faire un ***** ?
Pourquoi ne pourrais-tu pas faire *___* ?
Soit tu affiches * puis 3 _ puis 1 *.
Soit tu fais une seule boucle et si ton incrément vaut la première valeur ou la dernière valeur, tu mets un *, sinon un _.
Au final, il n'y a pas de problème mais que des solutions.
__________________________
Lisez la charte, pensez à regarder la FAQ, les tutoriaux, l'annuaire et faites une recherche dans les forums.
N'oubliez pas le Tag [Résolu].
en for sa donen bien ceci ? svp corriger moi le?
Program aff;
const car='*';
n,var ncar,i:integer;
begin
write('Entrer entier:');
readln(ncar);
for i:=1 to ncar do
write(car);
writeln;
for i:=1 to ncar-2 do
writeln(car,car:n-1);
for i:=1 to ncar do
write(car);
readln;
end.
1. Merci de ne pas écrire en SMS.
2. Utilises les balises [ code] et [ /code ]
Je ne connais pas cette méthode : writeln(car,car:n-1);
Merci d'éditer ton message, je le corrigerai après.
__________________________
Lisez la charte, pensez à regarder la FAQ, les tutoriaux, l'annuaire et faites une recherche dans les forums.
N'oubliez pas le Tag [Résolu].