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

максимальный из элементов встречающийся в матрице более 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); подробнее

Показать сообщение отдельно
Genn55
374 / 221 / 41
Регистрация: 26.12.2012
Сообщений: 724
09.05.2013, 00:55
Туся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
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
#include<iostream>
#include<stdlib.h>
#include<time.h>
#include<Windows.h>
 
using namespace std;//пространство имен
 
int main()//главная функция
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);//русский
 
    srand(time(NULL));//для правильной работы рандомизатора
 
         int n=0,m=0,label,flag=1;//необходимые переменные
for (;;)
{
    cout <<"Введите количество строк"<<"\n";
    cin >> n;
    cout<<"Введите количество столбцов"<< "\n";
    cin >> m;
    // динамическое создание двумерного массива
    int **A = new int* [n]; // строк в массиве
    for (int i = 0; i < n; i++)
        A[i] = new int [m]; // столбцов
    // заполнение массива и вывод на экран
    /////////////////////////////////////////////////////////////////
//каким образом будем заполнять массив
cout << "  Заполнение массива : случайно - 0, вручную - 1 "<<"\n";
cin >> label;
cout << "\n";
//если будем заполнять вручную, вводим с клавиатуры
 if(label==1)
 {
    cout<<"введите элементы массива";
    cout << "\n";
   for(int i=0;i<n;i++)
    {
        for(int j=0;j<m;j++)
         {
           cin >> A[i][j];
         }
     }
 
 }
 //чтобы не умереть за клавиатурой при вводе больших массивов
// заполняем рандомно
    else
     for(int i=0;i<n;i++)
    {
        for(int j=0;j<m;j++)
         {
            A[i][j]=rand()%100-50;//заполняем в интервале -50 +50
            cout<<A[i][j]<<"\t";// выводим сформированный массив
         }
        cout<<"\n";
    }
 
///////////////////////////////////////////////////
//ищем не нулевые строки
 int mark=0,count=0;
    for(int i=0; i<n; i++)// перебираем отдельные строки
    {
        mark = 0;//обнуляем при каждом входе в цикл
        for(int j=0; j<m; j++)//
        {
            if(A[i][j]==0)// считаем элементы, которые равны 0
            mark++;
        }
        if(mark==0)// считаем строки, в которых нет нулевых элементов
            count++;
    }
    cout<<"\n\n";
    cout<<"Количество строк, не содержащих ни одного нулевого элемента: "<<count<<"\n\n";
    ///////////////////////////////////////////////////////////////////////
   int *B=new int[n*m]; //одномерный массив
   int namber=0; //индексы одномерного массива
 
  //Копируем данные двумерного массива в одномерный
   for (int i=0;i<n;i++)
   {
       for (int j=0;j<m;j++)
       {
          B[namber]=A[i][j];
          namber++;
       }
   }
 /////////////////////////////////////////////////////////////
 //контрольный вывод для работы не нужен только для теста
 for (int i=0;i<n*m;i++)
 cout<<B[i]<<",";
 cout<<"\n\n";
 /////////////////////////////////////////////////////////////////////////
  // Удаление массива
    for (int i = 0; i < n; i++)
    {
        delete[]A[i]; // Удаляем каждый элемент
    }
    delete [] A; // А потом массив
    ///////////////////////////////////////////////////////////////////////
     //сортируем пузырьком
 for (int i = 1; i < n*m; i++)//внешний цикл
 for (int j = 0; j < n*m - 1; j++)//внутренний цикл
    if (B[j] > B[j + 1])
      {
        int temp = B[j];
            B[j] = B[j + 1];//заменяем элементы
            B[j + 1] = temp;
      }
 ////////////////////////////////////////
  //контрольный вывод для работы не нужен только для теста
//выводим на экран отсортированный массив
for (int k = 0; k < n*m; k++)
cout << B[k] << ",";
cout<<"\n\n";
 
/////////////////////////////////////////////////////////////////////////////////
//ищем максимальный элемент, встречающийся более одного раза
 bool var = 0;
   for (int i=n*m;i>=0;i--)//проходим массив с конца все макс в конце
   {
       if (B[i]==B[i-1])
       {
           cout <<"Максимальный элемент, встречающийся более одного раза =  "<< B[i]<<"\n\n";
          var = 1;//если есть меняем флаг
           break;
       }
    }
   if (var == 0)
 cout <<"В массиве нет элементов, встречающийся более одного раза  "<<"\n\n";
 var = 0;//меняем при выходе из цикла
    // Удаление массива
   delete [] B;
 cout << "Повторить? да нажми 1 нет нажми 0 " << endl; // вывод сообщения на экран
cin>> flag;//если 1 возвращаемся в начало
if (flag ==0)//завершение программы
break;
}
    /////////////////////////////////////////////////////////////////////////
return 0;
}
Я вам ее разбил на отдельные блоки.Контрольные выводы хотите удаляйте,хотите нет на работе это не скажется никак.
P.S Не забывайте про кнопочку люди старались для вас.
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.