Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> последний раз) помогите) 
V
    Опции темы
capitas
Дата 22.11.2011, 02:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 34
Регистрация: 4.11.2011

Репутация: нет
Всего: нет



Дана действительная квадратная матрица порядка N (N-нечетное), все элементы которой различны. Найти наибольшие элементы среди стоящих на главное и побочной диагоналях и поменять его местами с элементом, стоящим на пересечении этих диагоналей.



вот что у меня получилось. проверьте пожалуйста.

Код

#include <stdio.h>
#include <locale.h>
#include <iostream.h>
#include <conio.h>
#include <stdio.h>
#include <string.h>

#define SIZE 5

int main ()
{
printf ("Matrix \n\n");
int matrix[SIZE][SIZE]={ {1, 10, 15, 16, 21},
                   {2, 9, 14, 17, 24},
                   {3, 8, 13, 18, 23},
                   {4, 7, 12, 19, 25},
                   {5, 6, 11, 20, 22}   };

   int max = matrix[0][0];
   int i;
   int j;
  for(i = 0; i <SIZE; ++i)
            {for (j = 0; j < SIZE; ++j)
               {  if (max<matrix[i][j]&& (i=j))
                     max=matrix[i][j];
               }
            }
      printf ("max= %d", max);

      int middle = matrix[SIZE/2][SIZE/2];


matrix[SIZE/2][SIZE/2] = matrix[i][j];
matrix[i][j] = middle;
            getch();
}



но есть проблема в выводе на экран. мне бы хотелось, наглядности ради, что бы выводилась матрица ДО и ПОСЛЕ. вставляю принтф но чушь какая то получается..
PM MAIL   Вверх
borisbn
Дата 22.11.2011, 09:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 21
Всего: 135



Ты ищешь только на главной диагонали...
Код

for (i = 0; i < SIZE; ++i )
{
    if ( max < matrix[ i ][ i ] )
        max = matrix[ i ][ i ];
    if ( max < matrix[ i ][ SIZE - 1 - i ] )
        max = matrix[ i ][ SIZE - 1 - i ];
}

вот так - на обеих диагоналях.

Если вынесешь матрицу из main(), то вот ф-ция её печати. Вызывай её ДО и ПОСЛЕ
Код

void printMatrix()
{
    for (i = 0; i < SIZE; ++i )
    {
        for (j = 0; j < SIZE; ++j )
        {
            printf( "%2d ", matrix[ i ][ j ] );
        }
        printf( "\n" );
    }
}




--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
bsa
Дата 22.11.2011, 10:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



Цитата(capitas @  22.11.2011,  03:42 Найти цитируемый пост)
#include <locale.h>
#include <iostream.h>
Объясни, зачем ты подключил эти хидеры. А так же, зачем stdio.h подключен дважды?
PM   Вверх
capitas
Дата 22.11.2011, 10:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 34
Регистрация: 4.11.2011

Репутация: нет
Всего: нет



подскажите как правильно вынести матрицу из main(), потому что я по любому делаю что то  не то:

Код

#include <stdio.h>
#include <locale.h>
#include <iostream.h>
#include <conio.h>
#include <string.h>

#define SIZE 5


void printMatrix();
{
for (i = 0; i < SIZE; ++i )
{
for (j = 0; j < SIZE; ++j )
{
printf( "%2d ", matrix[ i ][ j ] );
}
printf( "\n" );
}

}

int main ()
{
printf ("Matrix: \n\n");
int matrix[SIZE][SIZE]={ {1, 10, 15, 16, 21},
                         {2, 9, 14, 17, 24},
                         {3, 8, 13, 18, 23},
                         {4, 7, 12, 19, 25},
                         {5, 6, 11, 20, 22}   };

printfMatrix();

   int max = matrix[0][0];
   int i;
   int j;
  for (i = 0; i < SIZE; ++i )
{
    if ( max < matrix[ i ][ i ] )
        {max = matrix[ i ][ i ];
          if ( max < matrix[ i ][ SIZE - 1 - i ] )
           max = matrix[ i ][ SIZE - 1 - i ];
        }
}
printf ("max= %d", max);

int middle = matrix[SIZE/2][SIZE/2];
matrix[SIZE/2][SIZE/2] = matrix[i][j];
matrix[i][j] = middle;

printfMatrix();

            getch();
}




подключил я эти хидеры видать по ошибке) у меня что не компилировалось вот я и понаставлял чтоб наверняка как говорится) да и дело было поздней ночью, плохо соображал)
PM MAIL   Вверх
borisbn
Дата 22.11.2011, 13:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 21
Всего: 135



Цитата(capitas @  22.11.2011,  10:47 Найти цитируемый пост)
подскажите как правильно вынести матрицу из main()

перенести int matrix[SIZE][SIZE]={ и все циферки перед функцией printMatrix
Цитата

if ( max < matrix[ i ][ i ] )
        {max = matrix[ i ][ i ];
          if ( max < matrix[ i ][ SIZE - 1 - i ] )
           max = matrix[ i ][ SIZE - 1 - i ];
        }

у тебя получается, что только в случае, когда очередной элемент на главной диагонали больше max будет проверяться соотв. условие для неглавной диагонали. Посмотри внимательно (!!!), как я это написал.

и ещё
user posted image
неужели самому не противно читать так отформатированный код ?

Добавлено через 1 минуту и 51 секунду
Впечатление, что ты какую-то картинку отступами рисуешь  smile 


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
capitas
Дата 22.11.2011, 14:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 34
Регистрация: 4.11.2011

Репутация: нет
Всего: нет



ну мне как то так понятнее, когда видно к чему что относится)
ну это не важно уже) сдал я сегодня все) закончились мои пытки)) не знаю что бы я без вас делал, вы оказали мне неоценимую помощь! спасибо вам Огромнейшее! вы наверно хороший отец) так расжовано без нервов все объясняете) хотя может и не без нервов)))
АрхиСпасибо вам еще раз!)искренне желаю вам удачи во всем!
PM MAIL   Вверх
borisbn
Дата 22.11.2011, 22:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 21
Всего: 135



Цитата(capitas @  22.11.2011,  14:42 Найти цитируемый пост)
вы наверно хороший отец)

надеюсь. будет у Вас сын 12-ти летний - будете таким же толерантным (блин, в последнее время из этого слова сделали синоним какого-то извращенца  smile 


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
Dov
Дата 22.11.2011, 23:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


аСинизатор
***


Профиль
Группа: Завсегдатай
Сообщений: 1721
Регистрация: 10.5.2003
Где: Эрец-Исраэль

Репутация: 11
Всего: 88



Цитата(capitas @  22.11.2011,  09:47 Найти цитируемый пост)
int middle = matrix[SIZE/2][SIZE/2];
matrix[SIZE/2][SIZE/2] = matrix[i][j];
matrix[i][j] = middle;

А это ещё что за байда? 



--------------------
Тут вечности запах томительный,
И свежие фрукты дешевые, 
А климат у нас – изумительный, 
И только соседи – #уевые. 
                           Игорь Губерман.
PM   Вверх
borisbn
Дата 23.11.2011, 08:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 21
Всего: 135



Цитата(Dov @  22.11.2011,  23:32 Найти цитируемый пост)
А это ещё что за байда? 

Вот тебе и нетолерантное, но верное замечание smile

Dov, хотел сказать, что ты ошибся, а я просмотрел, что в выражении matrix[ i ][ j ] i и j указывают в никуда. 
Нужно так
Код

#include <stdio.h>
#include <conio.h>

#define SIZE 5

int matrix[SIZE][SIZE]={ {1, 10, 15, 16, 21},
                         {2, 9, 14, 17, 24},
                         {3, 8, 13, 18, 23},
                         {4, 7, 12, 19, 25},
                         {5, 6, 11, 20, 22}   };

void printMatrix();
{
  for (i = 0; i < SIZE; ++i )
  {
    for (j = 0; j < SIZE; ++j )
    {
        printf( "%2d ", matrix[ i ][ j ] );
    }
    printf( "\n" );
  }
}

int main ()
{
   printf ("Matrix: \n\n");
   printfMatrix();

   int max = matrix[0][0];
   int i, i_max = 0, j_max = 0;
   for ( i = 0; i < SIZE; ++i )
   {
      if ( max < matrix[ i ][ i ] )
      {
          max = matrix[ i ][ i ];
          i_max = i;
          j_max = i;
      }
      if ( max < matrix[ i ][ SIZE - 1 - i ] )
      {
          max = matrix[ i ][ SIZE - 1 - i ];
          i_max = i;
          j_max = SIZE - 1 - i;
      }
   }
   printf ("max= %d", max);

   int middle = matrix[SIZE/2][SIZE/2];
   matrix[SIZE/2][SIZE/2] = matrix[ i_max ][ j_max ];
   matrix[ i_max ][ j_max ] = middle;

   printfMatrix();
   getch();
}


Это сообщение отредактировал(а) borisbn - 23.11.2011, 08:47


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
Dov
Дата 24.11.2011, 03:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


аСинизатор
***


Профиль
Группа: Завсегдатай
Сообщений: 1721
Регистрация: 10.5.2003
Где: Эрец-Исраэль

Репутация: 11
Всего: 88



Цитата(borisbn @  23.11.2011,  07:46 Найти цитируемый пост)
Нужно так


borisbn, видать на коленке писал...   smile  smile 



--------------------
Тут вечности запах томительный,
И свежие фрукты дешевые, 
А климат у нас – изумительный, 
И только соседи – #уевые. 
                           Игорь Губерман.
PM   Вверх
borisbn
Дата 24.11.2011, 10:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 21
Всего: 135



Цитата(Dov @  24.11.2011,  03:14 Найти цитируемый пост)
видать на коленке писал... 


Dov, чего опять не так ?
кроме очепятки printfMatrix не пойму в чём ошибка ?



--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
Dov
Дата 24.11.2011, 19:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


аСинизатор
***


Профиль
Группа: Завсегдатай
Сообщений: 1721
Регистрация: 10.5.2003
Где: Эрец-Исраэль

Репутация: 11
Всего: 88



Цитата(borisbn @  24.11.2011,  09:14 Найти цитируемый пост)
кроме очепятки printfMatrix не пойму в чём ошибка ?


borisbn, а что этого мало?  smile 

Ну тогда вот ещё... строка 12  твоего кода    smile 
Код
void printMatrix();
{
  for (i = 0; i < SIZE; ++i )
  {
    for (j = 0; j < SIZE; ++j )
    {
        printf( "%2d ", matrix[ i ][ j ] );
    }
    printf( "\n" );
  }
}


Добавлено @ 19:30
А потом  чел прибежит и скажет, что не компилится у него...  smile 

Это сообщение отредактировал(а) Dov - 24.11.2011, 19:31


--------------------
Тут вечности запах томительный,
И свежие фрукты дешевые, 
А климат у нас – изумительный, 
И только соседи – #уевые. 
                           Игорь Губерман.
PM   Вверх
borisbn
Дата 25.11.2011, 09:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 21
Всего: 135



Цитата(Dov @  24.11.2011,  19:29 Найти цитируемый пост)
Ну тогда вот ещё... строка 12  твоего кода

Всё, сдаюсь. Я б не сдал тебе экзамен (в отличие от ТС)))

Цитата(Dov @  24.11.2011,  19:29 Найти цитируемый пост)
А потом  чел прибежит и скажет, что не компилится у него...

надеюсь, что нет, т.к.
Цитата(capitas @  22.11.2011,  14:42 Найти цитируемый пост)
ну это не важно уже) сдал я сегодня все) закончились мои пытки))




--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0881 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.