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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.82
ramsey
0 / 0 / 0
Регистрация: 30.10.2011
Сообщений: 47
#1

Найти номер последней из ее строк,содержащих максимальное количество одинаковых элементов. - C++

11.11.2011, 15:54. Просмотров 1381. Ответов 14
Метки нет (Все метки)

Дана целочисленная матрица M x N. Найти номер последней из ее строк,содержащих максимальное количество одинаковых элементов.
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
#include <iostream.h>
#define n 10
#define m 10
#include <stdlib.h>
void main ()
{
    int a[n][m],b[m],i,j;
    for(i=0; i<n; i++)
    for(j=0; j<m; j++)
        a[i][j]=rand()%9-1;
        for(i=0; i<n; i++)
    for(j=0; j<m; j++)
        cout<<a[i][j]<<"  "<<'\t';
     cout<<endl;
        for(i=0; i<n; i++)
{   
        for(j=0; j<m; j++)
        b[a[i][j]]+=1;}
    for(i=0; i<10; i++)
    {
        for(j=0; j<m; j++)
        if(b[i]>0)
            cout<<i<<"  "<<"count"<<"  "<<b[i]<<endl;}
}
Помогите...
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.11.2011, 15:54
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Найти номер последней из ее строк,содержащих максимальное количество одинаковых элементов. (C++):

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

Дана целочисленная матрица. Найти номер первого из ее столбцов, содержащих минимальное количество одинаковых элементов - C++
помогите пожалуйста, мне завтра сдавать, а то зачет не поставят =/

Найти номер последней из строк, содержащих хотя бы один ненулевой элемент - C++
int main() { setlocale(LC_ALL, &quot;Russian&quot;); printf(&quot;Матрица \n&quot;); printf(&quot;\n&quot;); int** A = new int*; for (int i = 0; i &lt; N;...

Найти номер последней из строк матрицы, содержащих только четные числа. - C++
Matrix34. Дана целочисленная матрица размера M × N. Найти номер последней из ее строк, содержащих только четные числа. Если таких строк...

дана целочисленная матрица размера М*N.найти номер последней из строк,содержащих только четные числа - C++
дана целочисленная матрица размера М*N.найти номер последней из строк,содержащих только четные числа.Если таких строк нет,то вывести 0. ...

Дана целочисленная матрица размера M × N. Найти номер последней из ее строк, содержащих только четные числа - C++
Matrix34. Дана целочисленная матрица размера M × N. Найти номер последней из ее строк, содержащих только четные числа. Если таких строк...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
lemegeton
2923 / 1352 / 135
Регистрация: 29.11.2010
Сообщений: 2,725
11.11.2011, 16:18 #2
Уточняющий вопрос.
Как считать количество одинаковых элементов?

Если вопрос сложный, то сколько одинаковых элементов в следующих массивах?
1 2 2 = ?
1 2 1 2 = ?
1 1 2 1 2 = ?
1 2 1 2 1 2 = ?
1 2 3 2 3 = ?
ramsey
0 / 0 / 0
Регистрация: 30.10.2011
Сообщений: 47
11.11.2011, 16:22  [ТС] #3
Мне преподаватель сказал что бы вот так сделал
C++
1
2
3
4
5
6
7
8
9
10
11
# include <iostream.h>
# define HB 8
void main ()
{
    int a[HB]={3,7,2,3,7,5,9,3},i;
    int b[10]={0,0,0,0,0,0,0,0};
    for(i=0; i<HB; i++)
        b[a[i]]+=1;
    for(i=0; i<10; i++)
        if(b[i]>0)
            cout<<i<<"  "<<"count"<<"  "<<b[i]<<endl;}
только с матрицей.
lemegeton
2923 / 1352 / 135
Регистрация: 29.11.2010
Сообщений: 2,725
11.11.2011, 16:32 #4
Это будет вообще не то же самое, что в описанном задании.

Если нужно (как по тексту задания) найти строку с максимальным "количеством одинаковых элементов", то необходимо знать, как вычислить "количество одинаковых элементов" для любой строки. Чисто чтобы было, что сравнивать.
ramsey
0 / 0 / 0
Регистрация: 30.10.2011
Сообщений: 47
11.11.2011, 16:34  [ТС] #5
я просто новичок , и много чего не понимаю толком. ТОлько образно знаю что как, но не могу делать.
lemegeton
2923 / 1352 / 135
Регистрация: 29.11.2010
Сообщений: 2,725
11.11.2011, 16:45 #6
Просто образно ответь на вопрос, сколько одинаковых чисел в каждой из нижеприведенных строк и как ты их считал.
1 2 2 = ?
1 2 1 2 = ?
1 1 2 1 2 = ?
1 2 1 2 1 2 = ?
1 2 3 2 3 = ?
ramsey
0 / 0 / 0
Регистрация: 30.10.2011
Сообщений: 47
11.11.2011, 16:49  [ТС] #7
1) две двойки
2) две однёрки, две двойки
3) три однёрки , две двойки
4)три однёрки, три двойки
5)две двойки , две тройки
lemegeton
2923 / 1352 / 135
Регистрация: 29.11.2010
Сообщений: 2,725
11.11.2011, 16:53 #8
Характеризуйте, пожалуйста, количество одинаковых чисел в каждой строке одним и только одним числом.
ramsey
0 / 0 / 0
Регистрация: 30.10.2011
Сообщений: 47
11.11.2011, 16:56  [ТС] #9
извените я не могу понять
Nameless One
Эксперт С++
5771 / 3420 / 255
Регистрация: 08.02.2010
Сообщений: 7,447
11.11.2011, 17:10 #10
Судя по коду в посте #3 (в котором, кстати, выход за пределы массива), для каждого элемента считается число вхождений (и подразумевается, что диапазон значений ограничен отрезком [0, N-1], где N - это длина строки), а число одинаковых элементов - это количество значений в результирующем массиве вхождений, которые больше единицы (т.е. количество значений в строке матрицы, которые повторяются более одного раза)
Получаем:
  1. 1
  2. 2
  3. 2
  4. 2
  5. 2
Хотя могу и ошибаться
lemegeton
2923 / 1352 / 135
Регистрация: 29.11.2010
Сообщений: 2,725
11.11.2011, 17:23 #11
Цитата Сообщение от ramsey Посмотреть сообщение
извените я не могу понять
Тут какая штука. Нужен критерий, чтобы сравнивать, что больше -- "две однёрки, две двойки" или "две двойки , две тройки" или "одна двойка, три тройки", а может даже "четверка нулей". Вот с этим бы надо бы определиться.


Моим best guess было бы суммирование значения счетчиков вхождения, отличных от единицы.
1. 2
2. 4
3. 5
4. 6
5. 4

Альтернативно -- максимальное значение среди счетчиков вхождений.
1. 2
2. 2
3. 3
4. 3
5. 2
ramsey
0 / 0 / 0
Регистрация: 30.10.2011
Сообщений: 47
11.11.2011, 17:25  [ТС] #12
извените но для меня это тяжело
lemegeton
2923 / 1352 / 135
Регистрация: 29.11.2010
Сообщений: 2,725
11.11.2011, 17:42 #13
зайдем с другого боку. Применим реверс-инжиниринг.
Какие из этих строк содержат максимальное количество одинаковых элементов?
1 2 2 = ?
1 2 1 2 = ?
1 1 2 1 2 = ?
1 2 1 2 1 2 = ?
1 2 3 2 3 = ?
ramsey
0 / 0 / 0
Регистрация: 30.10.2011
Сообщений: 47
11.11.2011, 17:47  [ТС] #14
4 строка
lemegeton
2923 / 1352 / 135
Регистрация: 29.11.2010
Сообщений: 2,725
11.11.2011, 18:30 #15
Теперь, будьте любезны, расскажите, как вы это выяснили. Почему не третья?

Добавлено через 4 минуты
Оукей, теперь будем уточнять.

Тот же вопрос среди следующих строк.
2 1 1 2 2 1
1 2 1 2 1 2
2 2 2 2 1 1

Добавлено через 25 минут
Вот то, что непонятно образно делает то, что ты непонятно образно описал.
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
int countSames(int *array, int width) {
  int i;
  int *counters = (int*)malloc(width * sizeof(int));
  // можно функцией memset
  for (i = 0; i < width; ++i) counters[i] = 0;
  for (i = 0; i < width; ++i) ++counters[array[i]];
 
  int result = 0;
  for (i = 0; i < width; ++i)
    if (counters[i] > 1)
      result += counters[i];
 
  free(counters);
  return result;
}
 
int main(int argc, char *argv[]) {
  srand(time(0));
  int height = 7 + rand() % 5;
  int width = 7 + rand() % 5;
  
  int i, j;
  int **matrix = (int **)malloc(height * sizeof(int*));
  
  for (i = 0; i < height; ++i) {
    matrix[i] = (int *)malloc(width *sizeof(int));
    printf("Row %3d:", i + 1);
    for (j = 0; j < width; ++j)
      printf("%3d", matrix[i][j] = rand() % width);
    int same = countSames(matrix[i], width);
    printf(" | %3d same", same);
    printf("\n");
  }
 
  int maxSameRowId = 0;
  int maxSameRowValue = countSames(matrix[maxSameRowId], width);
  for (i = 1; i < height; ++i) {
    int same = countSames(matrix[i], width);
    if (same >= maxSameRowValue) {
      maxSameRowId = i;
      maxSameRowValue = same;
    }
  }
 
  printf("\nMaximum same numbers %d are in row number %d\n",
    maxSameRowValue, maxSameRowId + 1);
 
  for (i = 0; i < height; ++i)
    free(matrix[i]);
  free(matrix);
 
  return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.11.2011, 18:30
Привет! Вот еще темы с ответами:

Найти количество строк массива, не содержащих нулей и максимальное число, встречающееся более одного раза - C++
Написать программу как можно проще 1. Консольный ввод/вывод целочисленного массива размером 5*5. 2. Определение количества строк, не...

Дан целочисленный массив размера N. Найти максимальное количество его одинаковых элементов - C++
//Дан целочисленный массив размера N. //Найти максимальное количество его одинаковых элементов.

2) Дан целочисленный массив размера N. Найти максимальное количество его одинаковых элементов - C++
2) Дан целочисленный массив размера N. Найти максимальное количество его одинаковых элементов.

Найти номер последнего из ее столбцов, содержащих равное количество положительных и отрицательных элементов - C++
#include &lt;iostream&gt; using namespace std; int main() { int n, m, h, s, j, i, a; cout &lt;&lt; &quot;n = &quot;; cin &gt;&gt; n; ...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
11.11.2011, 18:30
Ответ Создать тему
Опции темы

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