Chyba o to chodziło:
#include <iostream>
#include <math.h>
using namespace std;
void fillLine(size_t length, char mark){
for(size_t i=0 ; i<length ; i++)
cout << mark;
cout << endl;
}
void drawDoubleXline(size_t length, char markX, char markDot){
cout << markX;
for(size_t i=1 ; i<length - 1 ; i++)
cout << markDot;
cout << markX << endl;
}
void drawDoubleDotLine(size_t length, char markX, char markDot){
for(size_t i=0 ; i<length ; i++)
if(i==1 || i==length-2)
cout << markDot;
else
cout << markX;
cout << endl;
}
void drawFourXline(size_t length, char markX, char markDot){
for(size_t i=0 ; i<length ; i++)
if(i==0 || i==2 || i==length-1 || i==length-3)
cout << markX;
else
cout << markDot;
cout << endl;
}
int main()
{
char markX = 'X';
char markDot = '.';
size_t n, dots = 0;
cin >> n;
float lineWithFourX = 0.4f * n;
float lineWithDoubleX = (0.2f * n) / 2;
float lineWithDoubleDot = (0.2f * n) / 2;
fillLine(n, markX);
for(size_t i=0 ; i<lineWithDoubleX ; i++){
drawDoubleXline(n, markX, markDot);
dots+=(n-2);
}
for(size_t i=0 ; i<lineWithDoubleDot ; i++){
drawDoubleDotLine(n, markX, markDot);
dots+=2;
}
for(size_t i=0 ; i<lineWithFourX ; i++){
drawFourXline(n, markX, markDot);
dots+=(n-4);
}
for(size_t i=0 ; i<lineWithDoubleDot ; i++){
drawDoubleDotLine(n, markX, markDot);
dots+=2;
}
for(size_t i=0 ; i<lineWithDoubleX ; i++){
drawDoubleXline(n, markX, markDot);
dots+=(n-2);
}
fillLine(n, markX);
cout << dots << endl;
return 0;
}