Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2034 connectés 

  FORUM HardWare.fr
  Programmation
  C

  Besoin d'aide pour un escalier

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Besoin d'aide pour un escalier

n°1946599
chocapic66
Posté le 02-12-2009 à 13:28:34  profilanswer
 

Voila je débute en C et j'aimerais construire un escalier de cette forme :
 
*****
       *****
               *****
                       *****
                               **********
                                               *****
                                                       *****      
                                                               *****
                                                                       *****
 
explications : l'utilisateur peut choisir le nombre de marche voulu par  d'étage voulu (nombre de marche par étage) le nombre d'étoile par marche ainsi que le nombre d'étage .
A chaque fin d'étage se trouve un palier qui fait 2 fois la longueur d'une marche. j'ai pratiquement reussi sauf que arrivé aux autres étages le décalage n'y est plus et mon second étage revient au début . Voici mon code :
 
#include <stdio.h>
#include <stdlib.h>
int l,cptl,esp,cptesp,h,cpth,cptet,et,cptpal,pal,es,cptes;
int main()
{
  printf("%s","entrez la valeur de la largeur d'une marche et la hauteur d'un etage et le nombre d'etage souhaite" );
  scanf("%d%d%d",&l,&h,&es);
   
  /*répétition d'un étage*/
  cptes=0;
  while(cptes<es){
  /*Faire un étage*/
  cpth=1;
  while(cpth<h+1){
  esp=(cpth*(l-1));
  /*largeur d'une marche*/
  cptl=0;
  while(cptl<l){
  printf("%s","*" );
  cptl=cptl+1;
  }
  printf("\n" );
   
  cptesp=0;
  while(cptesp<esp){
  printf("%s"," " );
  cptesp=cptesp+1;
  }
  cpth=cpth+1;
  }
  /*fin de l'étage*/
  /*palier*/
  pal=(l*2);
  cptpal=0;
  while(cptpal<pal){
  printf("%s","*" );
  cptpal=cptpal+1;
  /*fin palier*/
}
cptes=cptes+1;
}                
  printf("\n" );
  system("PAUSE" );  
  return 0;
}
 
 
je travail avec dev c++ et programme en c.
 
Merci d'avance de votre aide.
 

mood
Publicité
Posté le 02-12-2009 à 13:28:34  profilanswer
 

n°1946600
chocapic66
Posté le 02-12-2009 à 13:32:15  profilanswer
 

désolé le code posé ce dessus était incomplet il manqué une ligne voici le bon code :
 
#include <stdio.h>
#include <stdlib.h>
int l,cptl,esp,cptesp,h,cpth,cptet,et,cptpal,pal,es,cptes;
int main()
{
  printf("%s","entrez la valeur de la largeur d'une marche et la hauteur d'un etage et le nombre d'etage souhaite" );
  scanf("%d%d%d",&l,&h,&es);
   
  cptes=0;
  while(cptes<es){
  /*Faire un étage*/
  cpth=1;
  while(cpth<h+1){
  esp=(cpth*(l-1));
  /*largeur d'une marche*/
  cptl=0;
  while(cptl<l){
  printf("%s","*" );
  cptl=cptl+1;
  }
  printf("\n" );
   
  cptesp=0;
  while(cptesp<esp){
  printf("%s"," " );
  cptesp=cptesp+1;
  }
  cpth=cpth+1;
  }
  /*fin de l'étage*/
  /*palier*/
  pal=(l*2);
  cptpal=0;
  while(cptpal<pal){
  printf("%s","*" );
  cptpal=cptpal+1;
  /*fin palier*/
}
  printf("\n" );
  cptes=cptes+1;
}                
  printf("\n" );
  system("PAUSE" );  
  return 0;
}

n°1946695
ptitchep
Posté le 02-12-2009 à 16:39:17  profilanswer
 

Salut
 
en vrac:
utilise les balises code

Code :
  1. printf("%s","*" );

est equivalent à

Code :
  1. printf("*" );


Code :
  1. cptesp=0;
  2.   while(cptesp<esp){
  3.   printf("%s"," " );
  4.   cptesp=cptesp+1;
  5.   }

est equivalent à

Code :
  1. for (cptesp = 0; cptesp<esp; cptesp++)
  2.     printf(" " );


Quels profs te font utiliser des variables globales?

Code :
  1. system("PAUSE" );

berk, voici le résultat chez moi:

Citation :

sh: PAUSE: command not found


 
Bon pour répondre au problème, moi je stockerais dans une variable (locale ;) ) appelée nbEspaces (par ex) le nombre d'espaces à afficher avant une marche/palier. A chaque marche j'ajouterais largeurMarche à cette variable et à chaque palier je lui ajouterais 2*largeurMarche.
Puis avant chaque affichage de marche/palier, j'aficherais nbEspaces espaces
En gros je pense que cela correspond à ta variable esp sauf qu'il faut en conserver sa valeur et simplement l'augmenter à chaque marche.
 


---------------
deluser --remove-home ptitchep
n°1946709
chocapic66
Posté le 02-12-2009 à 17:41:03  profilanswer
 

je dois donc sourtir la valeur espace de la boucle?

n°1946714
theshockwa​ve
I work at a firm named Koslow
Posté le 02-12-2009 à 17:48:03  profilanswer
 

ptitchep a écrit :

Code :
  1. printf("%s","*" );

est equivalent à

Code :
  1. printf("*" );



 
tant qu'à faire, autant utiliser puts, dans ce genre de cas, ou même putchar


---------------
last.fm
n°1946726
ptitchep
Posté le 02-12-2009 à 19:09:23  profilanswer
 

putchar oui, mais puts ajoute un retour à la ligne.
 
Oui tu dois la "sortir de la boucle", elle ne doit pas être réinitialisée mais sa valeur doit augmenter constamment.


---------------
deluser --remove-home ptitchep

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  Besoin d'aide pour un escalier

 

Sujets relatifs
Demande d'aide à la programmationAide pour parcourir un XML
Aide exercice langage algorithmiquebesoin de conseils pour un projet de CMS
besoin d'aide en c++Besoin aide recuperation liens html
j'ai besoin de faire un programm c++ utilisant enum et switch .a l'aide: creation d'un objet prix et un serveur en JAVA
Plus de sujets relatifs à : Besoin d'aide pour un escalier


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR