unm

озАдачили

Oct 04, 2005 02:32

меня тут озАдачили...
реализовать циклом:
...да и всё равно бесоница

*****
_***_
__*__
_***_
*****
,колличество символов в строке и число строк задается числом k (в данном примере k=5)

Вариант в лоб:

int z,i,j;
for ( i = 0 ; i < k ; i++ )
{
if ( 2 * i < k )
z = i;
else
z = k - i - 1;
for ( j = 0 ; j < z ; j ( Read more... )

hardcore, dead_end, insomnia, coding

Leave a comment

Comments 5

programist October 4 2005, 13:54:30 UTC
хех :) ИМХО в лоб тут будет самым рациональным методом, ну или почти в лоб. Мне придумалось два способа, второй был бы симпатичнее, если бы не инициализации строк. Но, я еще подумаю :)

#include
#include

using std::cout;
using std::endl;

void first(int k) {
for (int i = -k/2; i <= k/2; i++) {
for (int j = -k/2; j <= k/2; j++) {
((abs(j) > abs(i)) ? cout <<"_" : cout <<"*");//macroses are evil :)
}
cout << endl;
}
}

void second(int k) {
std::string a,b;
for (int i = 0; i < k; i++) {
a += "_";
b += "*";
}
int j = 0;
for (int i = -k/2; i <= k/2; i++) {
cout <= 0 ? j-- : j++);
}
}

int main() {
int k = 9; //should be odd
first(k);
cout << endl;
second(k);
}

Reply

programist October 4 2005, 13:56:03 UTC
да, картинка как у тебя будет только в случае нечетного k, для того, чтобы работало и с четными k - нужно трохи модифицировать.

Reply

unm October 4 2005, 14:26:33 UTC
haltura :)

Reply

programist October 6 2005, 09:26:31 UTC
сам ты халтура :) если рисунок нужен такой как у тебя изображен - то k неможет быть четным - в случае четного k не будет ряда с одно * но будет два ряда с двумя *.

Reply


Leave a comment

Up