#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include <string>
//drawTriangle: Called on to draw the triangle
void drawTriangle( int size, char direction, char pattern) ;
void ScanInputChar( std:: string prompt, char & input, std:: string expected)
{
do
{
std:: string strInput;
std:: cout << prompt;
std:: cin >> strInput;
input = tolower ( strInput.c_str ( ) [ 0 ] ) ;
}
while ( expected.find ( input) == std:: string :: npos ) ;
}
void ScanInputNum( std:: string prompt, int & input, int expectedmin, int expectedmax)
{
do
{
std:: string strInput;
std:: cout << prompt;
std:: cin >> strInput;
input = atoi ( strInput.c_str ( ) ) ;
}
while ( input < expectedmin || input > expectedmax) ;
}
int main( ) {
//Variables which will be filled by user
int size;
char direction, pattern;
//Getting input from user
ScanInputNum( "Please enter the size of your triangle (Must be between 1-15)\n " , size, 0 , 15 ) ;
ScanInputChar( "Please enter the direction of your triangle (Either F or B)\n " , direction, "fb" ) ;
ScanInputChar( "Please enter the pattern for your triangle (V for vertical, H for horizontal, or N for none)\n " , pattern, "vhn" ) ;
printf ( "\n \n Here is your triangle:\n \n " ) ;
//Calling drawTirangle and sending the user input
drawTriangle( size, direction, pattern) ;
system ( "pause" ) ;
return 0 ;
}
//drawTriangle: Draws the triangle using the users parameters
void drawTriangle( int size, char direction, char pattern)
{
int iPos = 0 ;
int iIncrement = 0 ;
bool bDirection = ( direction == 'b' ) ; //true if backward
if ( bDirection)
iIncrement = - 1 ;
else
iIncrement = 1 ;
for ( int i = 0 ; i < size; ++ i, iPos+ = iIncrement)
{
if ( bDirection)
{
for ( int k = size- i; k> 1 ; k-- )
printf ( " " ) ;
}
for ( int j = 0 ; j ! = iPos + iIncrement; j+ = iIncrement)
{
if ( bDirection)
printf ( " " ) ;
if ( pattern == 'v' )
{
if ( ( j + ( ( i% 2 ) * bDirection) ) % 2 == 0 )
printf ( "#" ) ;
else
printf ( "*" ) ;
}
else if ( pattern == 'h' )
{
if ( i% 2 == 0 )
printf ( "#" ) ;
else
printf ( "*" ) ;
}
else
{
printf ( "*" ) ;
}
if ( ! bDirection)
printf ( " " ) ;
}
printf ( "\n " ) ;
}
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgoKLy9kcmF3VHJpYW5nbGU6IENhbGxlZCBvbiB0byBkcmF3IHRoZSB0cmlhbmdsZQp2b2lkIGRyYXdUcmlhbmdsZShpbnQgc2l6ZSwgY2hhciBkaXJlY3Rpb24sIGNoYXIgcGF0dGVybik7Cgp2b2lkIFNjYW5JbnB1dENoYXIoc3RkOjpzdHJpbmcgcHJvbXB0LCBjaGFyICZpbnB1dCwgc3RkOjpzdHJpbmcgZXhwZWN0ZWQpCnsKCWRvCgl7CgkJc3RkOjpzdHJpbmcgc3RySW5wdXQ7CgkJc3RkOjpjb3V0PDxwcm9tcHQ7CgkJc3RkOjpjaW4+PnN0cklucHV0OwoJCWlucHV0ID0gdG9sb3dlcihzdHJJbnB1dC5jX3N0cigpWzBdKTsKCX0KCXdoaWxlKGV4cGVjdGVkLmZpbmQoaW5wdXQpID09IHN0ZDo6c3RyaW5nOjpucG9zKTsKfQoKdm9pZCBTY2FuSW5wdXROdW0oc3RkOjpzdHJpbmcgcHJvbXB0LCBpbnQgJmlucHV0LCBpbnQgZXhwZWN0ZWRtaW4sIGludCBleHBlY3RlZG1heCkKewoJZG8KCXsKCQlzdGQ6OnN0cmluZyBzdHJJbnB1dDsKCQlzdGQ6OmNvdXQ8PHByb21wdDsKCQlzdGQ6OmNpbj4+c3RySW5wdXQ7CgkJaW5wdXQgPSBhdG9pKHN0cklucHV0LmNfc3RyKCkpOwoJfQoJd2hpbGUoaW5wdXQgPCBleHBlY3RlZG1pbiB8fCBpbnB1dCA+IGV4cGVjdGVkbWF4KTsKfQoKaW50IG1haW4oKSB7CiAgICAvL1ZhcmlhYmxlcyB3aGljaCB3aWxsIGJlIGZpbGxlZCBieSB1c2VyCiAgICBpbnQgc2l6ZTsKICAgIGNoYXIgZGlyZWN0aW9uLCBwYXR0ZXJuOwoKICAgIC8vR2V0dGluZyBpbnB1dCBmcm9tIHVzZXIKCVNjYW5JbnB1dE51bSgiUGxlYXNlIGVudGVyIHRoZSBzaXplIG9mIHlvdXIgdHJpYW5nbGUgKE11c3QgYmUgYmV0d2VlbiAxLTE1KVxuIiwgc2l6ZSwgMCwgMTUpOwoJU2NhbklucHV0Q2hhcigiUGxlYXNlIGVudGVyIHRoZSBkaXJlY3Rpb24gb2YgeW91ciB0cmlhbmdsZSAoRWl0aGVyIEYgb3IgQilcbiIsIGRpcmVjdGlvbiwgImZiIik7CglTY2FuSW5wdXRDaGFyKCJQbGVhc2UgZW50ZXIgdGhlIHBhdHRlcm4gZm9yIHlvdXIgdHJpYW5nbGUgKFYgZm9yIHZlcnRpY2FsLCBIIGZvciBob3Jpem9udGFsLCBvciBOIGZvciBub25lKVxuIiwgcGF0dGVybiwgInZobiIpOwoKICAgIHByaW50ZigiXG5cbkhlcmUgaXMgeW91ciB0cmlhbmdsZTpcblxuIik7CgogICAgLy9DYWxsaW5nIGRyYXdUaXJhbmdsZSBhbmQgc2VuZGluZyB0aGUgdXNlciBpbnB1dAogICAgZHJhd1RyaWFuZ2xlKHNpemUsIGRpcmVjdGlvbiwgcGF0dGVybik7CgoJc3lzdGVtKCJwYXVzZSIpOwogICAgCglyZXR1cm4gMDsKfQoKLy9kcmF3VHJpYW5nbGU6IERyYXdzIHRoZSB0cmlhbmdsZSB1c2luZyB0aGUgdXNlcnMgcGFyYW1ldGVycwp2b2lkIGRyYXdUcmlhbmdsZShpbnQgc2l6ZSwgY2hhciBkaXJlY3Rpb24sIGNoYXIgcGF0dGVybikgCnsKCWludCBpUG9zID0gMDsKCWludCBpSW5jcmVtZW50ID0gMDsKCWJvb2wgYkRpcmVjdGlvbiA9IChkaXJlY3Rpb24gPT0gJ2InKTsgLy90cnVlIGlmIGJhY2t3YXJkCgoJaWYoYkRpcmVjdGlvbikKCQlpSW5jcmVtZW50ID0gLTE7CgllbHNlCgkJaUluY3JlbWVudCA9IDE7CgoJZm9yKGludCBpID0gMDsgaSA8IHNpemU7ICsraSwgIGlQb3MrPWlJbmNyZW1lbnQpCgl7CgkJaWYoYkRpcmVjdGlvbikKCQl7CgkJCWZvcihpbnQgayA9IHNpemUtaTtrPjE7IGstLSkKCQkJCXByaW50ZigiICAiKTsKCQl9CgoJCWZvcihpbnQgaiA9IDA7IGogIT0gaVBvcyArIGlJbmNyZW1lbnQ7IGorPWlJbmNyZW1lbnQpCgkJewoJCQlpZihiRGlyZWN0aW9uKQoJCQkJcHJpbnRmKCIgIik7CgoJCQlpZihwYXR0ZXJuID09ICd2JykKCQkJewkKCQkJCWlmKChqICsgKChpJTIpKmJEaXJlY3Rpb24pKSUyPT0wKQoJCQkJCXByaW50ZigiIyIpOwoJCQkJZWxzZQoJCQkJCXByaW50ZigiKiIpOwoJCQl9CgkJCWVsc2UgaWYocGF0dGVybiA9PSAnaCcpCgkJCXsKCQkJCWlmKGklMj09MCkKCQkJCQlwcmludGYoIiMiKTsKCQkJCWVsc2UKCQkJCQlwcmludGYoIioiKTsKCQkJfQoJCQllbHNlCgkJCXsKCQkJCXByaW50ZigiKiIpOwoJCQl9CgkJCQoJCQlpZighYkRpcmVjdGlvbikKCQkJCXByaW50ZigiICIpOwoJCQkKCQl9CgkJcHJpbnRmKCJcbiIpOwoJfQp9Cg==