Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.01.2010, 20:43   #1
Anohorett
Пользователь
 
Регистрация: 17.03.2009
Сообщений: 21
По умолчанию Считать область матрицы.

Народ, подскажите пожалуйста как считать заштрихованную обдасть матрицы. Чтото я сам смысл не пойму... мне кажется что нуна с шагом цикла чтото делать...
Изображения
Тип файла: bmp image002.bmp (21.4 Кб, 157 просмотров)
Anohorett вне форума Ответить с цитированием
Старый 02.01.2010, 21:09   #2
ROD
Linux C++ Qt ARM
Старожил
 
Аватар для ROD
 
Регистрация: 30.11.2008
Сообщений: 3,030
По умолчанию

Есть идейка:
Считаешь по строкам с 0+i до n-1-i элемента строки (i - текущая строка, предполагается индексация массива с нуля), затем, дойдя до середины, наоборот делаешь.
Дилетант широкого профиля.

"Слова ничего не стоят - покажите мне код!" © Линус Торвальдс
ROD вне форума Ответить с цитированием
Старый 02.01.2010, 21:36   #3
Дырдин
Пользователь
 
Аватар для Дырдин
 
Регистрация: 26.09.2009
Сообщений: 81
По умолчанию

Попробуй искать разницу элементов главной и побочной диагонали... То, что между ними, то и считаем

З.Ы.: А какой размерности матрица?
Дырдин вне форума Ответить с цитированием
Старый 02.01.2010, 21:38   #4
Anohorett
Пользователь
 
Регистрация: 17.03.2009
Сообщений: 21
По умолчанию

Спасибо, я так же предпологал. но с вашей идее тоже немного помогло...
вот набросал как считать половину... вот со второй немного не разберусь..
Код:
   k=0;
  for(i=0; i< row; i++)
    {
             for(j=0+k; j< col-k; j++)
             printf("%3d", a[i][j]);
             printf("\n");
             k++;
    }
Anohorett вне форума Ответить с цитированием
Старый 02.01.2010, 21:39   #5
RoS
Форумчанин
 
Аватар для RoS
 
Регистрация: 13.12.2009
Сообщений: 272
По умолчанию

я думаю как-то так - если razmer - размер матрицы (как ни странно)

for (i=0;i<razmer;i++)
for (j=0;j<razmer;j++)
{
if (( j>=i )&&( j<=(razmer - i) )) ... //берем элемент из верхней части
if (( j<=i )&&( j>=(razmer - i) )) ... //из нижнего клина
}
Если я помог вам - порадуйте меня, нажмите на весы слева
RoS вне форума Ответить с цитированием
Старый 02.01.2010, 21:41   #6
Anohorett
Пользователь
 
Регистрация: 17.03.2009
Сообщений: 21
По умолчанию

"З.Ы.: А какой размерности матрица?"
размерность n, матрица квадратная.
"набросал как считать половину..." - точнее вывел пока на экран
Anohorett вне форума Ответить с цитированием
Старый 03.01.2010, 01:19   #7
Anohorett
Пользователь
 
Регистрация: 17.03.2009
Сообщений: 21
По умолчанию

хм.. ето все конечно очень интересно.. я мног овсяких вариантов перепробовал но так и не получилось того что нужно... будьте добры код показать.
либо подскажите как дорисовать второй треугольник .. первый все нормально рисуется ...
Код:
  k=0;
  for(i=0; i< row; i++)
    {
             for(j=0+k; j< col-k; j++)
             printf("%3d", a[i][j]);
             printf("\n");
             k++;
    }
Anohorett вне форума Ответить с цитированием
Старый 03.01.2010, 12:58   #8
RoS
Форумчанин
 
Аватар для RoS
 
Регистрация: 13.12.2009
Сообщений: 272
По умолчанию

Цитата:
Сообщение от Anohorett Посмотреть сообщение
хм.. ето все конечно очень интересно.. я мног овсяких вариантов перепробовал но так и не получилось того что нужно... будьте добры код показать.
либо подскажите как дорисовать второй треугольник .. первый все нормально рисуется ...
Код:
  k=0;
  for(i=0; i< row; i++)
    {
             for(j=0+k; j< col-k; j++)
             printf("%3d", a[i][j]);
             printf("\n");
             k++;
    }
А ты мой - то вариант проверил? или ты так и оставил с "..." вместо вывода на экран и говоришь, что код нерабочий?
Если я помог вам - порадуйте меня, нажмите на весы слева
RoS вне форума Ответить с цитированием
Старый 04.01.2010, 00:11   #9
Anohorett
Пользователь
 
Регистрация: 17.03.2009
Сообщений: 21
По умолчанию

Цитата:
Сообщение от RoS Посмотреть сообщение
А ты мой - то вариант проверил? или ты так и оставил с "..." вместо вывода на экран и говоришь, что код нерабочий?
Код:
for (i=1;i<=n;i++)
    {
    for (j=1;j<=n;j++)
        {
        if (( j>=i )&&( j<=(n - i+1) ))
         fprintf(f,"%d ",a[i][j]); 
        if ( ( j>=(n-i+1) )&&( j<=i)and(i!=n/2+1) )
         fprintf(f,"%d ",a[i][j]); 
         if(a[i][j]>max)
        max=a[i][j];
        } 
  fprintf (f,"\n"); 
  }
вроде как работает...
Anohorett вне форума Ответить с цитированием
Старый 04.01.2010, 12:47   #10
RoS
Форумчанин
 
Аватар для RoS
 
Регистрация: 13.12.2009
Сообщений: 272
По умолчанию

А зачем ты самую остроту клина-то вырезаешь?
Хотя постой, точно, я ее два раза вывожу пардон, согласен
Если я помог вам - порадуйте меня, нажмите на весы слева
RoS вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Залить цветом область. gusluk Мультимедиа в Delphi 3 31.10.2009 05:58
входение точки в область, с++ tipilat Помощь студентам 7 19.09.2009 00:42
Область компромиссов Sweta Помощь студентам 0 03.09.2009 11:31
Попадание точки в область С++ Geg[C/c++] Помощь студентам 3 03.05.2009 12:58
область видимости ? artem779 Общие вопросы Delphi 3 14.09.2007 09:34