Motif Triangle

Fermé
Utilisateur anonyme - 28 sept. 2013 à 11:12
Secret N Messages postés 9 Date d'inscription mardi 16 avril 2013 Statut Membre Dernière intervention 29 novembre 2013 - 29 nov. 2013 à 15:42
Bonjour,

SVP aidez moi....
svp aider moi à résoudre cet exercice :écrire un programme en c qui permit de dessiner un triangle d'un nombre donné de lignes ex: triangle :2
*
****

2 réponses

fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
28 sept. 2013 à 11:38
Bonjour,

Commence par nous dire ce que tu as commencé à faire.
Et explique-nous précisément là où tu bloques.
1
Utilisateur anonyme
30 sept. 2013 à 06:44
J'ajouterais qu'il serait appréciable et apprécié de donner des exemples plus explicites.
0
Utilisateur anonyme
3 oct. 2013 à 09:56
salut,
merci beaucoup. J'ai essayé de résoudre le problème mais le triangle doit être comme suite:
si le nombre de ligne est 3, le triangle:
*
* *
*****
0
Utilisateur anonyme
3 oct. 2013 à 10:25
Qu'as-tu fait pour l'instant?
0
Et quels sont les outils que tu as à ta disposition?
(Qu'as-tu vu en cours?)

PS:
Ce ne serait pas plutôt
*
**
***

?
0
Utilisateur anonyme
3 oct. 2013 à 16:30
notion d'algorithme
0
[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 1 083
Modifié par [Dal] le 4/10/2013 à 10:16
Bonjour Nahla,

Puisque tu dis dans tes commentaires avoir vu la notion d'algorithme commence par prendre une feuille de papier quadrillée et essaye de décrire la méthode permettant de déterminer, pour une taille donnée et pour chaque ligne à afficher, quels caractères tu dois afficher : étoiles, espaces et retours à la ligne, pour faire ton triangle.

Si tu as des doutes sur ton algorithme, décris le ici, et dis ce qui te pose problème.

Comme expliqué par les autres contributeurs du forum, nous ne sommes pas là pour faire le travail à ta place.

Une fois l'algorithme trouvé et testé sur le papier sur quelques exemples, code le en C. Tu dois avoir des notions de C si on te demande de faire cela. Là aussi, si tu bloques, poste ton code et dis nous où tu bloques.

Par ailleurs, pour montrer sur le forum à quoi doit ressembler ton triangle (ainsi que pour poster ton code, lorsque tu auras une proposition de code), fais le en cliquant sur le bouton "code" et en collant ton triangle entre les balises "code".


Vois la différence, avec ou sans les balises "code" :


(note que ce sont des exemples, je ne sais pas si ton triangle doit être ainsi)

L'indentation formée par les espaces est conservée dans le premier cas, avec une police de caractères à espacement fixe préservant aussi l'alignement, et on comprend que tu veux un triangle isocèle. Elle ne l'est pas dans le second cas et on comprend que tu veux un triangle rectangle.

Ce bouton est destiné à poster du code, afin que la lecture du code soit facilitée par la préservation de l'indentation.

Donc, quand tu posteras ton code, utilise le également.


Dal
0
je vous remercie de votre intérêt!
Et dsl, J'ai oublié d'écriture le code C:
#include<stdio.h>
main()
{ int nl; //nombre des lignes
int ns; //nombre d'espace
int i,j; //des indices
printf("Donner le nombre des lignes: ");
do
{ scanf("%d",&nl);
}
while(nl < 1 || nl> 20);
for(i=0;i<nl;i++)
{ ns=nl-i-1;
for(j=0;j<ns;j++)
printf(" ");
printf("*");
}
}
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
5 oct. 2013 à 17:18
Tu as aussi oublié de lire le poste de [Dal].
Ton code est illisible => Il faut utiliser la balise "code". Relis le poste de [Dal].
On ne sait toujours pas comment doit être le triangle => Il faut utiliser la balise "code" et redonner un exemple. Relis le poste de [Dal].

Quelques remarques sur ton code.
main() => int main(void)
Tu as oublié de le return 0;

Et enfin, tu nous as toujours pas dit ce qui ne te convient/marche pas dans ton code.
0
[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 1 083
Modifié par [Dal] le 7/10/2013 à 12:12
oui, fait les corrections proposées par fiddy, et utilise les balises "code".

C'est manifestement un triangle isocèle (on s'en rend compte si on regarde le code html de la page CCM, où on voit les espaces ignorés par html et le code posté semble le confirmer), mais montre le nous quand même.

Si tu as déjà ton triangle sous forme numérique, copie-colle le dans les balises "code" pour nous montrer. Si tu l'as seulement sur papier, utilise Notepad (si tu es sous Windows) pour reproduire ton triangle, cet éditeur de texte utilisant par défaut une police à espacements fixe, puis copie-colle le entre des balises "code". Avant de poster, "prévisualise" ton message pour vérifier que ton alignement est bien respecté.

Pour ton code (copie-colle le aussi dans des balises "code" depuis ton environnement de développement, là tu dois savoir faire :-), tu es en bon chemin. Cependant ton algorithme n'est pas complet car il ne dessine qu'un côté du triangle, et il manque les espaces éventuels après le premier côté, le côté opposé, le retour à la ligne à la fin de chaque ligne, et la gestion de la base, qui doit être particulière.

Avec ton papier et ton crayon, détermine la méthode à suivre et code là.


Dal
0
Utilisateur anonyme
9 oct. 2013 à 16:52
salut
oui....j'ai oublié
 mais pour votre commentaire fiddy , Nous écrivons toujours main() en notre TP .Nous n'avons pas écrit que vous m'avez dit, mais lorsque nous utilisons Borland C++ on écrit: int main(void) Le triangle doit être comme suite: si le nombre de ligne 3:


*
* *
*****

je ne suis pas une chemine!. Je sais que le programme est erroné. Le professeur m'a dit que je trouvais l'idée presque, mais J'ai essayé de trouver la vraie solution.
mon pgm:

#include<stdio.h>
main()
{
int nbl;
int i;
int nbs
int j;

do
{
printf("Entrer le Nombre de lignes : ");
scanf("%d", &nbl);
}
while (nbl<1 || nbl>20);

for (i=0 ; i<nbl ; i++)
{
nbs = nbl-i-1;
for (j=0 ; j<nbs ; j++)
printf(" ");
for (j=0 ; j<2*i+1 ; j++)
printf("*");
printf("\n");
}
}
mais n'est pas valide
0
Utilisateur anonyme
9 oct. 2013 à 19:29
Je te propose la logique suivante:
Regarde les longueurs de chaque ligne (espaces + *)
Pour chaque ligne, tu affiches des caractères tant que tu n'es pas à la fin de la ligne, tu as le choix entre deux caractères, tu choisis lequel afficher en fonction de ta position sur la ligne.
"je ne suis pas à la fin de la ligne, donc j'affiche, (sinon retour à la ligne).
-> Je suis à telle position de telle ligne, donc j'affiche tel caractère."

Tu as pris le problème autrement et ça te compliques la tâche.
Tu fais "j'affiche tant de fois tel caractère puis tant de fois tel autre caractère puis ...."

Saisis-tu la nuance?
0