Wypisanie na ekranie monitora żądanej figury

0

Witam.
Mam takie pytanie.
Próbuję zrobić ćwiczenia ze strony http://edu.i-lo.tarnow.pl/inf/utils/011_2011/0003.php
Jestem przy ćwiczeniu numer 4.
I zastanawiam się jak zrobić tą skośną linię z X-ów, bez wpisywania pozycji na sztywno, typu np. i==2(wiersz) && j==6(kolumna) itd.
W wcześniejszych ćwiczeniach robiłem to na sztywno, choć w sumie nie powinienem tak raczej robić. Później będę poprawiał.
Macie jakiś pomysł? Próbowałem z inkrementacją, dekrementacją, ale coś źle mi wychodziło, a konkretnie błędy, choć nie wiem czemu. Obecnie co do ćwiczenia 4, to brakuje mi tylko tej ukośnej linii. Żeby to jakoś wyglądało, nie zależnie czy jako n wpiszemy liczbę 10, czy 14, czy 20...
Kod do ćwiczenia nr 4:

#include<iostream>
using namespace std;
int main(){
	int i, j, n;
	cout<<"Podaj rozmiar pola, n="; cin>>n;
	cout<<endl;
	for(i=0; i<n; i++){
		for(j=0; j<n; j++){
			if(i<n/2 && j==0 || i==0 && j<n || i==n-1 && j<n || i>=n/2 && j==n-1 || i==n/2 && j>=n/2-1 || i>=n/2 && j==n/2){
				cout<<"X";
			}
			else{
				cout<<".";
			}
		}
		cout<<endl;
	}
	cout<<endl;
	return 0;
}
0

i+j+1==n

0

Sorki, że znowu zawracam głowę. Ale z tej samej strony mam problem z ćwiczeniem nr. 8. Rozchodzi się o tą ukośną linię od prawej strony do lewej co idzie, mniej więcej od połowy wysokości figury w dół. Jeżeli i to wiersze a j to kolumny to wychodzi coś takiego

dla n=10
i==5 j==9
i==6 j==8
i==7 j==7
i==8 j==6
i==9 j==5

I jak tu jakoś ustalić warunek?

dodanie znaczników <code> - fp

1

zaczyna sie od n/2
jedno zwieksza sie o jeden drugie zmenijsza sie o jeden.

petle powinienes znac. Reszte dopowiedz sobie sam ;)

0

jak zastosuje inkrementacje lub dekrementacje w warunku if, to mi błąd wywala. a przecież w nawiasie od if pętli for nie umieszcze.
Z tego co jest zapisane na stronie http://edu.i-lo.tarnow.pl/inf/utils/011_2011/0003.php to wszystko co wpisze ma być zapisane w warunku operacji if.
Więc dodatkowa pętla for raczej nie wchodzi w rachubę. fora nie umieszczę w nawiasie warunku if

1

Dobra. Udało się. i+j+1==n+n/2 && i>=n/2 && j>=n/2

1

A wystarczy tylko: 2*(y+x+1)==n

#include <iostream>
using namespace std;

int main()
  {
   const unsigned N=10;
   for(unsigned y=0;y<N;++y,cout<<endl) for(unsigned x=0;x<N;++x) cout<<(2*(y+x+1)==N?'#':'.');
   return 0;
  }

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