Форум программистов, компьютерный форум CyberForum.ru

2мерный массив - C++

Войти
Регистрация
Восстановить пароль
 
ALXS
6 / 6 / 6
Регистрация: 12.04.2011
Сообщений: 34
26.11.2011, 19:48     2мерный массив #1
Всем привет!

В поиске не нашел ничего кроме пустых тем с 1-2 постами по данному вопросу (хотя во многих сборниках задач видел это задание), поэтому создаю новую тему.

Сабж:
"Пусть целочисленная матрица размером nxm содержит информацию об учениках некоторого класса из n человек. В первом столбце проставлена масса (кг), во втором — рост (см), в третьем — успеваемость (средний балл). Ученик называется среднестатистическим по k-му параметру (уникальным по k-му параметру), если на нем достигается минимум (максимум) модуля разности среднего арифметического чисел из k-гo столбца и значения k-гo параметра этого ученика. Ученик называется самым уникальным (самым средним), если он уникален (является среднестатистическим) по самому большому количеству параметров. По данной матрице определить самых уникальных учеников и самых средних."

Может кто-то сталкивался, исходник припас, а может просто поможет заново решить, так как во многих сборниках эта задача есть то многим может пригодиться, прошу помочь с задачей.
Не то, что бы вообще не мог ее решить, но сессия делает свое серьезным ежедневным головняком, так что времени практически нет
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.11.2011, 19:48     2мерный массив
Посмотрите здесь:

2мерный массив C++
C++ 2мерный массив
C++ Массив: Сформируйте массив C[n+m], состоящий из элементов массивов А и В, упорядоченный по возрастанию.
Массив: Составить массив из двух исходных по заданному принципу заполнения C++
Массив: Переписать элементы одномерного массива A, попадающие в интервал [2, 6], в массив B. C++
C++ Указатель на 2мерный массив в функцию
C++ Найти ошибку. Записать 20 целых чисел в массив. Переписать отрицательные в массив А, а положительные в Б
Файлы и массив (сделать так, чтобы массив заполнялся значениями из этого же файла) C++
опп класс и массив (создать массив указателей по выборке животных, участвующих в забеге) C++
C++ Включить новый элемент в массив, упорядоченный по возрастанию, с сохранением упорядоченности. (рандомный массив)
Записать все положительные элементы матрицы в массив arrP, а отрицательные - в массив arrN C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Day
 Аватар для Day
1151 / 956 / 57
Регистрация: 29.10.2009
Сообщений: 1,384
26.11.2011, 20:59     2мерный массив #2
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
double a[N][M]; // Характеристики
double s[M]; // Средние баллы
int u[M];  // Номера уникальных
int m[M]; // Номера средних
int SupU[N], SupM[N]; //  =1 если Самый уникальный, Средний
double t;
int kU, kM, kT, kS;
for(j=0; j<M; j++) {
  t = 0;
  for(i=0; i<N; i++) t += a[i][j];
  s[j] = t / N;
  u[j] = m[j] = 0;
  for(i=1; i<N; i++) {
     if (fabs(a[j][i] - s[j]) > fabs(a[j][u[j]] - s[j])) u[j] = i; 
     if (fabs(a[j][i] - s[j]) < fabs(a[j][m[j]] - s[j])) m[j] = i; 
  }
}
kU = kM = 0;
for(i=0; i<N; i++) {
  SupM[i] = SupU[i] = 0;
  for(kT=kS=j=0; j<M; j++) { // Вычисляем максимумы средноты и уникальности
     if (j==u[j]) kT ++;
     if (j==m[j]) kS ++;
  }
  if (kT > kU) kU = kT;
  if (kS > kM) kM = kS;
}
for(i=0; i<N; i++) {
  for(kT=kSj=0; j<M; j++) {
     if (j==u[j]) kT ++;
     if (j==m[j]) kS ++;
  }
  if (kT==kU) SupU[i] = 1;
  if (kS==kM) SupM[i] = 1;
}
 // Теперь в массивах SupU, SupM стоят 1 для самых
}
У этого алгоритма по крайней мере один недостаток. Если несколько ребят имеют одинаковый показатель, то в средние или уникальные попадет только один из них.
Исправляется некоторым усложнением алгоритма.
Первым проходом находим меньшую и большую разность, а потом заполняем шкалы наподобие Sup-шкал. Тогда u, m должны быть массивами [N][M]
Код не проверял, возможны описки и ошибки.
Возможны и более элегантные решения, это, что называется, в лоб.
Надеюсь, разберешься.
Удачи!
ALXS
6 / 6 / 6
Регистрация: 12.04.2011
Сообщений: 34
27.11.2011, 00:39  [ТС]     2мерный массив #3
Спасибо большое, разобраться\дописать легче думаю будет, чем писать заново

Надеюсь не мне одному поможет это начинание.
Yandex
Объявления
27.11.2011, 00:39     2мерный массив
Ответ Создать тему
Опции темы

Текущее время: 13:11. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru