Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > Задача с матрицей


Автор: Azza 26.4.2011, 14:36
Матрицу М(m, n) заполнить натуральными числами от 1 до m*n по спирали, начинающейся в левом верхнем углу и закрученной почасовой стрелке
1 2 3 4 5
16 17 18 19 6
15 24 25 20 7
14 23 22 21 8
13 12 11 10 9
Вот моя программа, но она не работает, как надо, не могу исправить

Код
#include<iostream.h>
#include<stdlib.h>
#include<conio.h>
#include<math.h>
main()
{
int n,m;
int i,imax,imin,j,jmax,jmin,k;
cin>> m;
cin >> n;
int**a;
a=new int*[m];
for(i=0; i<m; i++)
a[i]=new int[n];     
jmin=1;
jmax=n;
imin=2;
imax=m;
k=0;
for(j=jmin; j<jmax; j++)
{
k++;
a[imin-1][j]=k;
}
for(i=imin; i<imax; i++)
{
k++;
a[i][jmax]=k;
}
imax--;
for(i=imax; i>imin; i--)
{
k++;
a[i][jmin]=k;
}
imin++;
jmin++;
while(k>=m*n)
for(i=1; i<m; i++)
{
cout<<endl;
for(j=1; j<n; j++)
cout<<a[i][j]<<"";
}
getch();
}

Автор: borisbn 26.4.2011, 16:45
Azza, воспользуйся кнопкой Код для нормального форматирования кода, а то читать совершенно невозможно

Автор: Azza 26.4.2011, 16:50
Теперь должно быть нормально

Автор: bsa 26.4.2011, 17:03
Azza, почитай http://forum.vingrad.ru/forum/topic-269805/kw-faq-coding-style-%D1%81%D1%82%D0%B8%D0%BB%D1%8C-%D0%BA%D0%BE%D0%B4%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F.html. Возможно, если последуешь указанному там совету, то получится найти ошибки.  smile 

Автор: borisbn 26.4.2011, 18:42
Цитата(Azza @  26.4.2011,  16:50 Найти цитируемый пост)
Теперь должно быть нормально

ничего не изменилось. (я думал, что без кнопки код твоё форматирование съёдается html-рендерингом, а его, оказывается, просто не было).
воспользуйся советом bsa и почитай ту статью, затем приведи код хоть в какой-нибудь порядок - а затем поможем. не вопрос. просто сейчас это как каракули врачей разбирать.

Автор: borisbn 26.4.2011, 23:45
Azza, подсказываю: как лучше читаемо ?
так:
Код

for(i=1; i<m; i++)
{
cout<<endl;
for(j=1; j<n; j++)
cout<<a[i][j]<<"";
}

или так:
Код

for ( i = 1; i < m; i++ )
{
    cout << endl;
    for ( j = 1; j < n; j++ )
    {
        cout << a[ i ][ j ] << "";
    }
}


P.S. Я уже решил задачу, но не выкладываю, т.к. помогать человеку с таким отношением к другим не хоццца  smile 

Автор: Azza 27.4.2011, 07:23
Дело в том, что правильному оформлению кода нас, к сожалению, не учат, препод говорит, что ему плевать, как мы оформляем, хоть в одну строчку..

Автор: borisbn 27.4.2011, 08:26
Цитата(Azza @  27.4.2011,  07:23 Найти цитируемый пост)
препод говорит, что ему плевать, как мы оформляем, хоть в одну строчку..

как только закончишь курс у этого препода (не раньше) - скажи ему, что он м..дак, т.к. код в разы на порядки чаще читается, чем компилируется.

ок. лови. но всё-таки, прочитай статью и отформатируй код. не будь неблагодарным ... (сам подбери эпитет)
http://liveworkspace.org/code/d612a83b80446d7f1b615e24f7928d59

Автор: borisbn 27.4.2011, 08:57
вот ещё вариант. IMHO попроще.
http://liveworkspace.org/code/59ee22cd775568d22803cebde83d5a97

выбирай

Автор: Dov 27.4.2011, 19:08
Цитата(borisbn @  27.4.2011,  08:57 Найти цитируемый пост)
вот ещё вариант. IMHO попроще.http://liveworkspace.org/code/59ee22cd7755...803cebde83d5a97

smile 

Здесь без напильника не обойтись...  smile 

Автор: borisbn 27.4.2011, 19:12
Цитата(Dov @  27.4.2011,  19:08 Найти цитируемый пост)
Здесь без напильника не обойтись...

уупс smile
http://liveworkspace.org/code/4c772211f2631541bd72fda6be8066db

P.S. Хотя лучше б это ТС нашёл smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)