choinka again

0

siema. mam do zrobienia choinkę z odwróconych trójkątów, która ma się zmniejszać (w, w-1, w-2, itd.) przy czym "w" to liczba wczytana przez użytkownika(liczba linijek w jednym trójkącie)
ma to mniej więcej wyglądać tak:

xxxxxxxxx
.xxxxxxx.
..xxxxx..
...xxx...
....x....
.xxxxxxx.
..xxxxx..
...xxx...
....x....
..xxxxx..
...xxx...
....x....
...xxx...
....x....

mam już następujący kod:
#include <stdio.h>
#include <conio.h>

int main(void)
{
int w, i, j,k,l;
printf("Liczba w:\t", &w);
scanf("%d",&w);

for(k=w; k>0; w--)

{ for(i=w; i>0; i--)
{ for (j=w-i;j>0; j--) printf("");
for(j=2
i-1; j>0; j--) printf("-");
for (j=w-i;j>0; j--) printf("*");
printf("\n");
}
}
getch();
return 0;
}

Myślałam o tym, żeby dodać 2 fory przed i po pętli for(i=w; i>0; i--), która dodawałaby same kropki, ale w żaden sposób nie mogę wykombinować;/

0

3 petle starcza kazda robi jedna czesc. Najmniejsza wypisuje konkretna linie, wieksza 1 trojkat, najwieksza odpowiada za kolejne poziomy(trojkaty).

#include <iostream>

using namespace std;

int main()
{
    int width,signs,maxSigns,tmp,levels,tmp2=1,tmp3;
    cin >> width;
    maxSigns = 2*width - 1;
    signs = tmp = tmp3 = maxSigns;
    levels = signs/2;
    while(levels--)
    {
        for(int i = 0 ; i < width ; i++)
        {
            tmp--;
            for(int j = 0 ; j < maxSigns ; j++)
            {
                if(j < (maxSigns-signs)/2 || (j>tmp))
                    cout << ".";
                else cout << "x";
            }
            signs -= 2;
            cout << endl;
        }
        width--;
        signs = maxSigns - 2*tmp2;
        tmp3--;
        tmp = tmp3;
        tmp2++;
    }
    return 0;
}

Na pewno sie da bez tylu zmiennych ale mi sie myslec nie chce nad skroceniem tego.

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0