Accueil > Forum > > > > boucle imbriquée et pyramide de nombres
boucle imbriquée et pyramide de nombres
dimanche 20 septembre 2009 à 14:19:58 |
boucle imbriquée et pyramide de nombres

Smanyx
|
Salut!
Je voudrais arriver à écrire un programme en C qui affiche la pyramide ci-dessous:
----------1
---------232
--------34543
-------4567654
------567898765
-----67890109876
----7890123210987
---890123454321098
--90123456765432109
-0123456789876543210
Après plusieurs tentatives, je n' y arrive toujours pas. Je joins le code que j'ai pu écrire à ce point:
#include<stdio.h>
#include<stdlib.h>
int main()
{ int i,j,k;
for(i=1; i<=10; i++)
{
for (j=1; j<=10-i; j++)
printf(" ");
for (k=1; k<=2*i-1; k++)
printf("%d", k);
printf("\n");
}
system("pause");
return 0;
}
Merci de votre aide.
Smanyx
|
|
dimanche 20 septembre 2009 à 18:52:58 |
Re : boucle imbriquée et pyramide de nombres
|
lundi 21 septembre 2009 à 14:53:55 |
Re : boucle imbriquée et pyramide de nombres

Smanyx
|
rt15,
Merci de votre intervention.
A ce stade, le programme que j'ai écrit ne marche que partiellement. La partie gauche de la pyramide est parfaite. C'est la partie droite qui me fait tourner la tête...
Pourriez-vous me pointer sur la bonne direction? Quelle doit être la condition pour la boucle de droite?
for (s=k-1; s>= 2*i-1; s--) ??????
Je me perds dans ma reflection...
#include<stdio.h>
#include<stdlib.h>
int main()
{ int i,j,k,s;
for(i=0; i<10; i++) //gère le passage à la ligne suivante
{
for (j = 1; j < 10-i;j++) //gère les espaces vides sur chaque ligne
{
printf(" ");
}
for (k=i+1; k<= 2*i+1;k++) //partie ascendante (gauche)
{
printf("%d", k % 10);
}
for (s=k-1; s>= 2*i-1; s--) //partie descendante (droite)
{
printf("%d", s % 10 );
}
printf("\n");
}
//system("pause");
return 0;
}
No worries, i'll get there...
|
|
lundi 21 septembre 2009 à 17:50:40 |
Re : boucle imbriquée et pyramide de nombres
|
mardi 22 septembre 2009 à 14:39:39 |
Re : boucle imbriquée et pyramide de nombres

Smanyx
|
>En fait, j'ai écrit la solution en blanc. Blanc >sur blanc ça ne ce voit pas ! Pour le voir, >suffit de sélectionner le texte.
Merci d'avoir clarifié cela pour moi puisque là, je n'y voyais que du bleu...
Cela dit, j'ai pu dévoiler votre code. Et lorsque je le tourne, déjà j'ai pu noter que vous avez omis un printf juste après le if (k== 1) delta =-1;
sans lequel le pgm n'affiche que 0...
donc j'ai ajouté printf("%d", val);
Cependant, l'affiche se présente comme suit:
---------1
--------2
-------3
------4
-----5
----6
---7
--8
-9
00
Ce qui,déjà pointe sur la bonne direction mais n'est pas encore tout à fait l'affichage désiré.
Qu'en pensez-vous?
|
|
mercredi 23 septembre 2009 à 08:09:44 |
Re : boucle imbriquée et pyramide de nombres
|
mercredi 23 septembre 2009 à 08:56:57 |
Re : boucle imbriquée et pyramide de nombres

Smanyx
|
Réponse acceptée !
Merci beaucoup rt15,
Je suis désolé d'avoir mentionné une omission qui n'en était pas une.
J'ai pu tourner votre code, l'affichage est celui désiré.
Au même moment, j'ai aussi pu, suivant ma logique (voir le code posté précedemment arriver au même résultat), trouver la condition de la boucle de droite (partie descendante de la pyramide).
for (k=2*i; k>= i+1; k--)
Voici mon code complet:
#include<stdio.h>
#include<stdlib.h>
int main()
{ int i,j,k;
for(i=0; i<10; i++) //gère le passage à la ligne suivante
{
for (j = 1; j < 10-i; j++) //gère les espaces vides sur chaque ligne
{
printf(" ");
}
for (k=i+1; k<= 2*i+1; k++) //partie ascendante (gauche)
{
printf("%d", k % 10);
}
for (k=2*i; k>= i+1; k--) //partie descendante (droite)
{
printf("%d", k % 10 );
}
printf("\n");
}
printf("\n\n\n\n\n");
system("pause");
return 0;
}
Deux approches différentes, même résultats. Cela m'enrichit en plus...
Cependant, j'ai une petite question concernant votre remarque sur
> system("pause");
généralement je l'utilise pour voir l'affichage de mon programme à l'écran, parfois j'utilise scanf("%*c");
J'avoue que j'ai pas bien saisie votre remarque. Je suis encore en pleine formation, et à voir votre code vous n'utilisez aucune de ces deux instructions. Qu'utilisez-vous pour voir l'affichage à l'écran?
Une fois de plus, merci.
|
|
mercredi 23 septembre 2009 à 09:57:06 |
Re : boucle imbriquée et pyramide de nombres

rt15
|
Si tu essaies les commandes de l'invite de commande DOS, est ce qu'il font des pauses après leurs exécutions ?
Est ce que ping te demande d'appuyer sur une touche pour reprendre la main ?
Est ce que dir te demande d'appuyer sur une touche pour reprendre la main ?
...
Bah non.
Il n'y a que "pause" qui fait une pause.
Les programmes console sont faits pour être exécutés dans une invite de commande.
Si on les lances directement, ils s'exécutent tellement vite que l'on ne voit pas le résultat (Ce qui est un comportement normal).
Et soit dit en passant, faire une belle pause, ce n'est pas évident.
En effet, system("pause"); est très peu pratique.
D'une part la commande C "system" est une usine à gaz : elle lance une nouvelle instance de cmd.exe pour lui faire exécuter la commande passée en argument.
D'autre part ce n'est pas portable car la commande "pause" n'existe pas sous linux.
Faire un scanf est chiant à l'usage car il faut appuyer sur "Entrée".
Il n'y a pas de solution portable...
Par exemple, pour windows, une solution un peu propre est la suivante :
Code C/C++ : void __stdcall Console_Pause()
{
HANDLE hInput; /* Handle de l'entrée standard */
DWORD nRead; /* Nombre d'octets lus */
TCHAR buffer; /* Réception du caractère */
DWORD nOldMode; /* Sauvegarde le mode précédent pour le restituer */
hInput = GetStdHandle(STD_INPUT_HANDLE);
GetConsoleMode(hInput, &nOldMode);
SetConsoleMode(hInput, 0);
ReadConsole(hInput, &buffer, 1, &nRead, NULL);
SetConsoleMode(hInput, nOldMode);
}
Mais ça ne fonctionnera pas sous linux.
On peut aussi passer par getch de conio.h.
Mais conio.h n'est pas un header standard : aucune garantit qu'il soit disponible.
Bilan, pour faire une pause portable, il faudrait utiliser le code windows ci-dessus, trouver un code linux, et faire un ifdef pour utiliser l'un ou l'autre.
Conclusion, une pause c'est lourd à coder, et en plus ça gène l'utilisateur lorsqu'il utilise ton application.
Mais revenons à nos moutons...
Ton problème est que tu travailles dans un environement de dev, par exemple Visual Studio.
Cet environement démarre directement l'application console sans mettre de pause à la fin.
(Si tu compilais en invite de commande, tu n'aurais pas ce problème).
Déjà, Visual ou un autre permet de lancer le .exe tout en ajoutant une pause à la fin.
Sous VC6, par défaut, c'est ctrl+F5 (Execute Xxxx.exe).
Et si on est en debug, suffit de se mettre sur la dernière instruction (Le return du main en général) et placer un point d'arrêt (F9 sou VC6).
Ensuite F5 pour lancer le débogage.
|
|
Cette discussion est classée dans : boucle, printf, for, imbriquée, pyramide
Répondre à ce message
Sujets en rapport avec ce message
boucle qui ne fonctionne pas [ par florian1121 ]
Bonjour!!J'ai un probleme au niveau de mon programme, lorsque je le lance la boucle for dans les case ,ca empeche la boucle de switch de recommencer,
Probleme de boucle infinie [ par darkwhite ]
Salut à tous, abcrésultat000000100
pyramides [ par zell61 ]
bonjour j ai un petit probleme j ai reussi a faire un code pour faire une pyramide en visual c++ que voici #include void main() { int n,j,i; printf("
incrimentation dans un boucle for en C [ par liondes ]
Salut tout le monde SVP comment peut on incrimenter un poiteur i par 0.001 sachant que i de type float CAD [color=blue]step 0.001[/color]
Problème générateur de grille de sudoku en C [ par Dovah ]
Bonjour, je suis débutant en programmation, et pour m'entraîner j'ai décidé de créer un programme qui génère aléatoirement une grille de sudoku en C
besoin d'aide dans programme en c [ par houda986 ]
salut; je suis un débutante en programmation et j'ai besoin d'aide pour la résolution d'un programme en C,c'est un programme de tri par base ... j'ai
Problème de transport primal dual [ par mouradmaster ]
Bonjour tous, Je cherche un code source (en C, C++, java ou C#) concernant le problème de transport par primal dual (optimisation des coûts !). En ef
la methode d'echange [ par cleopatre1988 ]
salut bon j'essai de faire un programme qui correspond au methode d'echanged'une matrice,voila le script e
Livres en rapport
|
Derniers Blogs
IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc SHAREPOINT BLOG SITE, PROBLèME D'ARCHIVESSHAREPOINT BLOG SITE, PROBLèME D'ARCHIVES par junarnoalg
Dernièrement, nous avons migré le site
myTIC
vers un nouveau serveur SharePoint 2010. Dans les contenus que nous vouloins récupérer, nous avions un certain nombre de blogs.
Nous avons utilisé les commandes Power...
Cliquez pour lire la suite de l'article par junarnoalg
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|