2013-12-19 4 views
0

Итак, я получил этот код для работы, потому что, к счастью, я вспомнил прототипы функций! Я довольно новичок в C++. Мне очень любопытно, как бы я превратил этот поворот в реальный треугольник, используя пробелы где-то. Я признаю, что я не работал неутомимым, чтобы попытаться понять этот вопрос. Я просто ищу его до не похоже на картинку, , но фактический треугольник. Большая помощь будет оценена.Создание треугольника треугольника в cmd для C++

enter image description here

// 

#include "stdafx.h" 
#include <iostream> 
#include <algorithm> 
#include <vector> 
#include <iterator> 

void genPyrN(int rows) 
{ 
    if (rows < 0) return; 
    // save the last row here 
    std::vector<int> last(1, 1); 
    std::cout << last[0] << std::endl; 

    for (int i = 1; i <= rows; i++) { 
    // work on the next row 
    std::vector<int> thisRow; 
    thisRow.reserve(i+1); 
    thisRow.push_back(last.front()); // beginning of row 
    std::transform(last.begin(), last.end()-1, last.begin()+1, std::back_inserter(thisRow), std::plus<int>()); // middle of row 
    thisRow.push_back(last.back()); // end of row 

    for (int j = 0; j <= i; j++) 
     std::cout << thisRow[j] << " "; 
    std::cout << std::endl; 

    last.swap(thisRow); 
    } 
} 

int _tmain(int argc, _TCHAR* argv[]) 
{ 
    using namespace std; 

    genPyrN(9); 
    cin.get(); 
    cin.get(); 
    return 0; 
} 

ответ

1

В дополнение к использованию iomanip «ы setw, вы можете добавить несколько пространств на основе строки в начале каждой строки, чтобы получить равнобедренный структурировать треугольника

for (int k = i; k < rows; ++k) 
{ 
    std::cout << " "; 
} 

Например, если вы знаете, что ваши значения будут соответствовать трем цифрам:

#include "stdafx.h" 
#include <iostream> 
#include <iomanip> 
#include <algorithm> 
#include <vector> 
#include <iterator> 

void genPyrN(int rows) 
{ 
    if (rows < 0) return; 
    // save the last row here 
    std::vector<int> last(1, 1); 
    for (int k = 0; k < rows; ++k) 
    { 
    std::cout << " "; 
    } 
    std::cout << std::setw(3) << last[0] << std::endl; 

    for (int i = 1; i <= rows; i++) { 
    // work on the next row 
    std::vector<int> thisRow; 
    thisRow.reserve(i+1); 
    thisRow.push_back(last.front()); // beginning of row 
    std::transform(last.begin(), last.end()-1, last.begin()+1, std::back_inserter(thisRow), std::plus<int>()); // middle of row 
    thisRow.push_back(last.back()); // end of row 

    for (int k = i; k < rows; ++k) 
    { 
     std::cout << " "; 
    } 
    for (int j = 0; j <= i; j++) 
    { 
     std::cout << std::setw(3) << thisRow[j] << " "; 
    } 
    std::cout << std::endl; 

    last.swap(thisRow); 
    } 
} 
Смежные вопросы