2010-03-04 4 views
0

J'essaie de créer un trapèze en utilisant les options entrées par l'utilisateur. Je sais que mon code n'est peut-être pas le meilleur moyen mais jusqu'à présent cela fonctionne! Mon problème est que j'ai besoin de la base du trapèze pour toucher le côté gauche de la fenêtre de sortie. Qu'est-ce que je fais mal?Création d'un trapèze à l'aide d'un caractère entré par l'utilisateur. (Console App)

#include <iostream> 
#include <iomanip> 
#include <cmath> 

using namespace std; 

int main() 
{ 
    int topw, height, width, rowCount = 0, temp; 
    char fill; 

    cout << "Please type in the top width: "; 
    cin >> topw; 

    cout << "Please type in the height: "; 
    cin >> height; 

    cout << "Please type in the character: "; 
    cin >> fill; 

    width = topw + (2 * (height - 1)); 
    cout<<setw(width); 

    for(int i = 0; i < topw;i++) 
    { 
     cout << fill; 
    } 
    cout << endl; 
    rowCount++; 
    width--; 

    temp = topw + 1; 

    while(rowCount < height) 
    { 
     cout<<setw(width); 

     for(int i = 0; i <= temp; i++) 
     { 
      cout << fill; 
     } 
     cout << endl; 

     rowCount++; 
     width--; 
     temp = temp +2; 
    } 
} 
+0

Est-ce devoir? – Xorlev

+0

Que signifie "Le meilleur du trapèze"? –

Répondre

1

setw définit la largeur de l'opération suivante, et non la ligne entière. Ainsi, la largeur d'un seul remplissage < < est définie sur la valeur. Cela vous donne le remplissage, mais vous devez définir setw à 0 pour la dernière rangée.

aussi, il semble y avoir un essai de code redondant:

int main() 
{ 
int topw, height, width, rowCount = 0, temp; 
char fill; 

cout << "Please type in the top width: "; 
cin >> topw; 

cout << "Please type in the height: "; 
cin >> height; 

cout << "Please type in the character: "; 
cin >> fill; 

width = height; 
cout<<setw(width); 

temp = topw; 

while(rowCount < height) 
{ 
    cout<<setw(width); 

    for(int i = 0; i < temp; i++) 
    { 
     cout << fill; 
    } 
    cout << endl; 

    rowCount++; 
    width--; 
    temp = temp +2; 
} 
} 
Questions connexes