С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

максимальный из элементов встречающийся в матрице более 1 раза - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Перегрузка оператора ввода вывода http://www.cyberforum.ru/cpp-beginners/thread850615.html
Есть два хэдера(header.h и Array.h) и исполняемая программа main.cpp в которой я как раз и обращаюсь к оператору ввода Array.h #pragma once #include <iostream> #include "header.h" class Array:...
C++ Эти треугольники являются подобными числа a и b выражают длинны катетов одного прямоугольного треугольника,с и d - другого. Эти треугольники являются подобными. помогите в этих программах я 0 http://www.cyberforum.ru/cpp-beginners/thread850614.html
C++ Использование LAPACK на c++
Здравствуйте! Помогите разобраться с установкой LAPACk на проект c++. Нужно реализовать алгоритмы разложений матриц. Подкиньте рабочий проект, а я уж сам потом разберусь Заранее спасибо
Передача массива в функцию по ссылке C++
Здравствуйте. Есть функция: void f(int &a) { int *p=&a; p=1; } Но почему-то при попытке передать ей массив ругается дебаггер: ...|10|error: invalid initialization of non-const...
C++ Структура в стеке http://www.cyberforum.ru/cpp-beginners/thread850572.html
Я наверное уже всех задолбал со своим стеком, но всё же мне еще нужна помощь)) Код, который ниже должен запрашивать у пользователя ввод структуры, которая после помещается в стеке. Так же программа...
C++ Работа с указателями Расскажите как работает каждая строка в коде char *A = "123456789"; unsigned B = 1; char *X = A + B; char *Y = A - (- B); подробнее

Показать сообщение отдельно
daslex
1287 / 531 / 109
Регистрация: 02.08.2011
Сообщений: 2,750
09.05.2013, 01:45
Туся111, а вот вам и тот вариант, который я предлагал как вариант с другим подходом.

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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
#include <iostream>
#include <ctime>
 
using namespace std;
 
/*ЗАПОЛНЕНИЕ ДВУМЕРНОГО ДИНАМИЧЕСКОГО МАССИВА*/
void fillmas(int *mas[],const int N,const int M)
{
    srand(time(NULL)); //Генератор псевдослучайных значений включаем
    for (int i=0;i<N;i++)
    {
        for (int j=0;j<M;j++)
        {
            mas[i][j]=rand()%20+1; //Генерируем элементы
        }
    }
}
 
/*ПОКАЗЫВАЕМ ИСХОДНЫЙ МАССИВ НА ЭКРАНЕ*/
void showmas(int *mas[],const int N,const int M)
{
    for (int i=0;i<N;i++)
    {
        for (int j=0;j<M;j++)
        {
            cout<<mas[i][j]<<"\t";
        }
        cout<<"\n";
    }
}
 
/*ВОТ ВАША ЗАДАЧА */
void search_double_max(int *mas[],const int N,const int M)
{
    int *temp=new int[N*M]; //Создаем одномерный массив для копирования в него элементов двумерного
    int count=0; //Будущий индекс одномерного массива 
    bool flag=false; //Признак того, что в массиве есть дважды встречающийся элемент
 
    /*КОПИРУЕМ ДАННЫЕ ИЗ ДВУМЕРНОГО МАССИВА В ОЛНОМЕРНЫЙ*/
    for (int i=0;i<N;i++)
    {
        for (int j=0;j<M;j++)
        {
            temp[count]=mas[i][j];
            count++;
        }
    }
 
    /*АНАЛИЗ ДУБЛИКАТОВ И ОПРЕДЕЛЕНИЕ МАКСИМУМА*/
    int max=0; //в эту переменную запишем максимальный элемент, встречающийся более 1 раза
 
    /*БРУТФОРС МАССИВА, СРАВНИВАЕМ ЭЛЕМЕНТЫ*/
    for (int i=0;i<N*M-1;i++)
    {
        for (int j=i+1;j<N*M;j++)
        {
            if (temp[i]==temp[j]) //Если найден дубликат, то 
            {
                if (false==flag) //Сначала определяем был ли дубликат найден ранее, если нет
                {
                    flag=true; //Обозначаем, что дубликат уже один раз был найден
                    max=temp[i]; //Записываем значение как максимум. В дальнейшем его сравниваем и при необходимости перезаписываем
                }
                else //если дубликат ранее уже определялся, то
                {
                    if (max<temp[i]) max=temp[i]; //Сравниваем текущий максимум с элементом из массива и определяем, что из них больше. При необходимости обновляем максимум.
                }
            }
        }
    }
 
    cout<<"\n";
 
    
    delete []temp; //Очищаем память от динамически созданного одномерного массива
 
    if (flag) cout<<"МАКСИМУМ = "<<max<<"\n"; //Если признак дубликатов был изменен, выводим максимум
    else cout<<"В массиве не было найдено подходящих значений\n"; //Иначе выводим сообщение о неуспешном поиске
}
 
void main()
{
    system("CHCP 1251"); //Это для кодировки (при шрифте lusidia console)
    int **mas=NULL; //Анализируемый двумерный массив
    int N=3,M=3; //Число колонок и строк массива
 
    /*ВЫДЕЛЕНИЕ ПАМЯТИ ПОД ДВУМЕРНЫЙ МАССИВ*/
    mas=new int*[N]; 
    for (int i=0;i<N;i++) mas[i]=new int[M];
 
 
       fillmas(mas,N,M); //Заполнение массива
       showmas(mas,N,M); //Показываем массив
       search_double_max(mas,N,M); //Ищем максимум, встречаемый более чем 1 раз
 
    /*ОЧИСТКА ПАМЯТИ ОД ДВУМЕРНОГО МАССИВА*/
    for (int i=0;i<N;i++) delete []mas[i];
    delete []mas;
 
    cin.get();
}
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.