Следующая программа печатает ромб и квадрат в соответствии с пользовательским вводом строк и длины соответственно. Формы - это строки с \ n для разрывов строк. Мне было интересно, есть ли способ отобразить объединение и пересечение двух фигур следующим образом:
// Example program
#include <iostream>
#include <string>
using namespace std;
int main()
{
int n, i, j, space = 1;
cout<<"enter n for diamond ";
cin>>n;
string dia = "";
space = n - 1;
for (j = 1; j <= n; j++)
{
for (i = 1; i <= space; i++)
{
dia = dia + " ";
}
space--;
for (i = 1; i <= 2 * j - 1; i++)
{
dia=dia+ '*' ;
}
dia = dia+ '\n' ;
}
space = 1;
for (j = 1; j <= n - 1; j++)
{
for (i = 1; i <= space; i++)
{
dia = dia + " ";
}
space++;
for (i = 1; i <= 2 * (n - j) - 1; i++)
{
dia=dia+ '*' ;
}
dia = dia+ '\n' ;
}
cout<<dia;
cout<<"enter s for square ";
int sides;
cin>>sides;
string square = "";
for(int i = 0; i<= sides-1; i++){
if ( i != 0){
square = square + '\n';
}
for (int j = 0; j<=sides-1; j++){
square = square + '*';
}
}
cout<<square;
string intersect = "";
cout<<""<<endl;
}
Выход
enter n for diamond: 3
*
***
*****
***
*
enter s for square: 4
****
****
****
****
Требуемый выход для объединения и пересечения:
Union:
****
****
*****
****
*
Intersection:
*
***
****
***