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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [C++] работа с векторами в матрице 
:(
    Опции темы
bboy7
  Дата 6.12.2007, 02:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 6.12.2007
Где: Ukraine | Donetsk

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



Вот собственно задание smile , помогите плз., заранее спс.

Присоединённый файл ( Кол-во скачиваний: 27 )
Присоединённый файл  _______.JPG 28,74 Kb
PM MAIL ICQ Skype   Вверх
baldina
Дата 6.12.2007, 02:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Ну что же вам не спится?

Положим матрица NxN задана как некий класс, имеющий операцию operator() (int i, int j) const для доступа на чтение к элементу матрицы i,j 

Например, это может быть такой класс:

Код

template <size_t N>
class matrix {
  double m[N][N];
  public:
    size_t size () const { return N; }
    double operator() (size_t i, size_t j) const { return m[i][j]; }
    double& at (size_t i, size_t j) { return m[i][j]; }
};



теперь определим функцию вычисления длины вектора, который является столбцом вышеупомянутой матрицы

Код

template <typename M>
double L (const M& m, size_t column)
{
   double l = 0;
   for (size_t i=0; i < m.size(); ++i)
     l += m(i,column)*m(i,column);

  return sqrt (l);
}


наконец, функция вычисления номера столбца

Код

template <typename M>
size_t max_column (const M& m)
{
   size_t n = 0;
   double l = L (m,0);
   for (size_t i=1; i < m.size(); ++i)
   {
      double new_l = L(m,i);
      if (new_l > l)
      {
         n = i;
         l = new_l;
      }
   }

   return n;
}



И чтоб вам совсем легко жилось, программа, которая все это использует:

Код

int main ()
{
  matrix<3> m;
  // заполняем какими то значениями
  for (size_t i=0; i < 3; ++i)
    for (size_t j=0; j < 3; ++j)
      m.at(i,j) = i+j;
  
  size_t n = max_column (m);

  std::cout << "Наибольшая длина " << L(m,n) << " у вектора-столбца под номером " << n << std::endl;
  return 0;
}


Это сообщение отредактировал(а) baldina - 6.12.2007, 02:49
PM MAIL   Вверх
bboy7
Дата 6.12.2007, 05:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 6.12.2007
Где: Ukraine | Donetsk

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



О,спс.smile smile  Радует что есть умные люди, а не спиццо -работа... smile 
PM MAIL ICQ Skype   Вверх
bboy7
Дата 6.12.2007, 05:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 6.12.2007
Где: Ukraine | Donetsk

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



Сори,не хочу показаться наглым, ну не моё это... smile ,помогите с последним заданием еще smile 

Присоединённый файл ( Кол-во скачиваний: 14 )
Присоединённый файл  lab6_z1.JPG 40,74 Kb
PM MAIL ICQ Skype   Вверх
DigitSphinx
Дата 6.12.2007, 07:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



bboy7,тебе в Центр Помощи

baldina, такая лаба это уровень 1-го курса, так что писать её через шаблон просто палево! 


--------------------
Чтобы пробить стену лбом нужен или большой разбег, или много лбов.
(Альберт Эйнштейн)
Умен ты или глуп, велик ты или мал, не знаем мы, пока ты слова не сказал.
(Альберт Эйнштейн)
user posted image
PM MAIL ICQ   Вверх
Earnest
Дата 6.12.2007, 08:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

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



Для домашних заданий, курсовых, существует "Центр Помощи".

Тема перенесена! 


--------------------
...
PM   Вверх
baldina
Дата 6.12.2007, 09:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



А што, на первом курсе темплейты не проходят? А когда? И какие предположения делать о представлении матрицы?
Во-вторых, если студент не дундук, сообразит что с этим делать (или товарисчи подскажут). А если дундук, так ему и без темплейтов не поможет.
В третьих сделано именно по студенчески. Профессионал написал бы не так.
Наконец, шибко умные могут свой вариант привести.

Добавлено через 6 минут и 59 секунд
Цитата(bboy7 @ 6.12.2007,  05:55)
Сори,не хочу показаться наглым, ну не моё 

Работать пора, да и лениво из пустого в порожнее. DigitSphinx прав, если вы этого не понимаете, то только палиться.
Так что ограничусь советом. У вас есть вышепреведенная функция L. Переделайте её, запихнув вместо вычисления длины вектора формулы из второго задания. 


Это сообщение отредактировал(а) baldina - 6.12.2007, 09:05
PM MAIL   Вверх
Rodman
Дата 6.12.2007, 10:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

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




M
Rodman
Модератор: Название темы должно отражать ее суть!

PM MAIL WWW Skype GTalk YIM MSN   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

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

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


 




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


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

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