#include<iostream.h>
#include<conio.h>
void main()
{
const col = 5;
const row = 5;
int mass [col][row];
int num = 0;
for(int i = col-1; i != 0; i--)
{
for(int j = row-1; j != 0; j--)
{
mass[j] = num++;
if(mass[j] < 10)
cout<<" "<<mass[j];
else
cout<<" "<<mass[j];
}
cout<<endl;
}
getch();
}
Помогите с двухмерным массивом!
Массив необходимо заполнить против часовой стрелки по строкам, начиная с последнего.
Цитата:
Массив необходимо заполнить против часовой стрелки по строкам, начиная с последнего.
Сложно понять что ты хочешь конкретно (формируй вопрос более понятно)...
Насколько я понял, ты хочешь сделать это:
Код:
Хотя может понял и неправильно, но в этом я думаю твоя вина...:p
Насколько я понял, ты хочешь сделать это:
Код:
#include<iostream.h>
#include<conio.h>
void main()
{
const col = 5;
const row = 5;
int mass [col][row];
int num = 0;
for(int i = col-1; i >= 0; i--)
{
for(int j = row-1; j >= 0; j--)
{
mass[j] = num++;
if(mass[j] < 10)
cout<<" "<<mass[j];
else
cout<<" "<<mass[j];
}
cout<<endl;
}
getch();
}
#include<conio.h>
void main()
{
const col = 5;
const row = 5;
int mass [col][row];
int num = 0;
for(int i = col-1; i >= 0; i--)
{
for(int j = row-1; j >= 0; j--)
{
mass[j] = num++;
if(mass[j] < 10)
cout<<" "<<mass[j];
else
cout<<" "<<mass[j];
}
cout<<endl;
}
getch();
}
Хотя может понял и неправильно, но в этом я думаю твоя вина...:p[/quote]
Поправка ( != на >=)
Зря правил. != правильнее. Если несогласен - пиши на паскале, там всё тормозит одинаково.
Конечно не согласен. Что теперь писать на паскале? Почему. Обоснуй и обьясни пожалуйста свои слова.
Специально для Тебя простая задачка:
Код:
for(int x=10; x!=0; x--)
и
Код:
for(int x=10; x>=0; x--)
Внимание вопрос:
каким будет последнее значение переменной x в первом и втором примере?
[SIZE=2][COLOR=#0000ff][/COLOR][/SIZE][SIZE=2]
[/SIZE]
Хотя может понял и неправильно, но в этом я думаю твоя вина...:p[/QUOTE]
А что не понятно? Массив нужно заполнить против часовой стрелки по строкам, начиная с последнего...
Головоломка... :o Например: массив 5X5
5 4 3 2 1
6 19 18 17 16
7 20 25 24 15
8 21 22 23 14
9 10 11 12 13
Называется - а кому слабо? Мне слабо! Пока....... :eek:
Головоломка... :o Например: массив 5X5
5 4 3 2 1
6 19 18 17 16
7 20 25 24 15
8 21 22 23 14
9 10 11 12 13
Называется - а кому слабо? Мне слабо! Пока....... :eek:[/quote]
То что тебе понятно, я не сомневаюсь. Но другим твое обьяснение никак не одназначно. Я к примеру понял его так:
07 06 05 04
08 15 14 03
09 16 13 02
10 11 12 01
Да, согласен, писал на скорую руку, ночь, и упустил момент... Спасибо что исправил...
А теперь об этом...
[QUOTE= FoxMALDER]А что не понятно? Массив нужно заполнить против часовой стрелки по строкам, начиная с последнего...
Головоломка... Например: массив 5X5
5 4 3 2 1
6 19 18 17 16
7 20 25 24 15
8 21 22 23 14
9 10 11 12 13
Называется - а кому слабо? Мне слабо! Пока....... [/QUOTE]
Блин! конечно слабо! Ты даже вопрос сразу правильно сформулировать не можешь... Запомни, то что тебе очевидно, еще не означает, что это очевидно всем (твои мысли читать никто не умеет...). Так чо вопрос излагай сразу точно и без двухзначностей... Это так, замечание на будущее:cool:
А вот и нужный код:
Код:
#include<iostream.h>
#include<conio.h>
void main()
{
const col = 5;
const row = 5;
int mass [col][row];
int num = 0;
bool ValDown = true;
bool OnRow = true;
int StartCol = 0;
int StartRow = 0;
int EndCol = 5;
int EndRow = 5;
while(num < col*row)
{
if(ValDown && OnRow)
{
for(int i = EndCol-1; i >= StartCol; i--)
{
mass[StartRow] = num++;
}
StartRow++;
OnRow = !OnRow;
ValDown = !ValDown;
}
else if(!ValDown && OnRow)
{
for(int i = StartCol; i < EndCol; i++)
{
mass[EndCol-1] = num++;
}
EndRow--;
//CountCol++;
OnRow = !OnRow;
ValDown = !ValDown;
}
else if(ValDown && !OnRow)
{
for(int i = EndRow-1; i >= StartRow; i--)
{
mass[EndCol-1] = num++;
}
EndCol--;
//CountCol++;
OnRow = !OnRow;
}
else if(!ValDown && !OnRow)
{
for(int i = StartRow; i < EndRow; i++)
{
mass[StartCol] = num++;
}
StartCol++;
OnRow = !OnRow;
}
}
for(int i = 0; i < row; i++)
{
for(int j = 0; j < col; j++)
{
if(mass[j] < 10)
cout<<" "<<mass[j];
else
cout<<" "<<mass[j];
}
cout<<endl;
}
getch();
}
#include<conio.h>
void main()
{
const col = 5;
const row = 5;
int mass [col][row];
int num = 0;
bool ValDown = true;
bool OnRow = true;
int StartCol = 0;
int StartRow = 0;
int EndCol = 5;
int EndRow = 5;
while(num < col*row)
{
if(ValDown && OnRow)
{
for(int i = EndCol-1; i >= StartCol; i--)
{
mass[StartRow] = num++;
}
StartRow++;
OnRow = !OnRow;
ValDown = !ValDown;
}
else if(!ValDown && OnRow)
{
for(int i = StartCol; i < EndCol; i++)
{
mass[EndCol-1] = num++;
}
EndRow--;
//CountCol++;
OnRow = !OnRow;
ValDown = !ValDown;
}
else if(ValDown && !OnRow)
{
for(int i = EndRow-1; i >= StartRow; i--)
{
mass[EndCol-1] = num++;
}
EndCol--;
//CountCol++;
OnRow = !OnRow;
}
else if(!ValDown && !OnRow)
{
for(int i = StartRow; i < EndRow; i++)
{
mass[StartCol] = num++;
}
StartCol++;
OnRow = !OnRow;
}
}
for(int i = 0; i < row; i++)
{
for(int j = 0; j < col; j++)
{
if(mass[j] < 10)
cout<<" "<<mass[j];
else
cout<<" "<<mass[j];
}
cout<<endl;
}
getch();
}
Хотя, это я думаю, не однозначное решение, а набросок...
Возможно есть и другие варианты...
Код:
template <class T>
void fillHelix(T& matrix, int size)
{
int y = size;
int x = size - 1;
int d = -1;
int counter = 1;
for(int i=x; i>=0;)
{
for(int j=i; j>=0; --j) {
y += d;
matrix[x][y] = counter++;
}
--i;
for(int j=i; j>=0; --j) {
x += d;
matrix[x][y] = counter++;
}
d *= -1;
}
}
void fillHelix(T& matrix, int size)
{
int y = size;
int x = size - 1;
int d = -1;
int counter = 1;
for(int i=x; i>=0;)
{
for(int j=i; j>=0; --j) {
y += d;
matrix[x][y] = counter++;
}
--i;
for(int j=i; j>=0; --j) {
x += d;
matrix[x][y] = counter++;
}
d *= -1;
}
}
Код:
template <class T>
void fillHelix(T& matrix, int size)
{
int y = size;
int x = size - 1;
int d = -1;
int counter = 1;
for(int i=x; i>=0;)
{
for(int j=i; j>=0; --j) {
y += d;
matrix[x][y] = counter++;
}
--i;
for(int j=i; j>=0; --j) {
x += d;
matrix[x][y] = counter++;
}
d *= -1;
}
}
void fillHelix(T& matrix, int size)
{
int y = size;
int x = size - 1;
int d = -1;
int counter = 1;
for(int i=x; i>=0;)
{
for(int j=i; j>=0; --j) {
y += d;
matrix[x][y] = counter++;
}
--i;
for(int j=i; j>=0; --j) {
x += d;
matrix[x][y] = counter++;
}
d *= -1;
}
}
Блин, это конечно флуд, но не мог не написать... БЛЕСК... Очень красивое решение!