Generalnie twój kod jest brzydki w cholerę. Nie wiem po co ci tyle dziwnych zmiennych, więc napisałem po prostu kod, który uzupełnia tablicę choinką.
Zauważ że nie zawsze da się zrobić choinkę z podanych wymiarów, więc u mnie definiuje się tylko wysokość, a szerokość oblicza program (height * 2 - 1).
Przeanalizuj ten kod.
#include <iostream>
using namespace std;
int main()
{
const int height = 7, width = (height * 2) - 1;
char tree[height][width];
for (int y = 0; y < height; y++) //Wypełnij tablicę pustymi znakami
for (int x = 0; x < width; x++)
tree[y][x] = ' ';
for (int y = 0; y < height; y++) { //Wypełnij tablicę choinką
int i; //Szerokość choinki na danej wysokości (wartość y to wysokość)
//int x - od którego miejsca zaczyna się choinka
for (int x = width / 2 - y, i = 0; i < 2*(y+1) - 1; x++, i++) // 2*(y+1) - 1 - szerokość choinki w podanym 'y'
tree[y][x] = 'O';
}
for (int y = 0; y < height; y++) { //Wypisz tablicę
for (int x = 0; x < width; x++)
cout << tree[y][x];
cout << '\n';
}
cin.get(); //Żeby się program nie wyłączył
return 0;
}