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

Найти минимальный из неповторяющихся элементов двумерного массива - C++

Восстановить пароль Регистрация
 
vetal0007
27 / 27 / 0
Регистрация: 11.02.2012
Сообщений: 299
21.05.2013, 21:00     Найти минимальный из неповторяющихся элементов двумерного массива #1
Найти минимальный из неповторяющихся элементов двумерного массива.

Массив организовал, как найти минимальный из неповторяющихся элементов?

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
#include "stdafx.h"
#include <iostream>
#include <math.h>
#include <time.h>
#include <stdlib.h>
#define n 3
#define m 4
using namespace std;
int main()
 
{ 
 
int B[n][m];
srand ( time(NULL) );
for(int i=0;i<n;i++)
for(int j=0;j<m;j++)
B[i][j]=rand()%9;
for(int i=0;i<n;i++)
{
        for(int j=0;j<m;j++)
        cout<<"B["<<i<<"]["<<j<<"]="<<B[i][j]<<"\n";
}
 
system ("pause");
return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zss
Модератор
Эксперт С++
 Аватар для zss
5942 / 5547 / 1783
Регистрация: 18.12.2011
Сообщений: 14,155
Завершенные тесты: 1
21.05.2013, 21:28     Найти минимальный из неповторяющихся элементов двумерного массива #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
int bminold=bmin=b[0][0];
for(int i=0;i<n;i++)
for(j=0;j<m;j++)
{
   if(b[i][j]==bmin)// повторяющийся
   {
      bmin=bold; // возвращаем старое
   }else
   if(b[i][j]<bmin)// новый меньший
   {
      bold=bmin;  // запоминаем старое
      bmin=b[i][j]; // запоминаем меньший
   }
}
vetal0007
27 / 27 / 0
Регистрация: 11.02.2012
Сообщений: 299
21.05.2013, 21:43  [ТС]     Найти минимальный из неповторяющихся элементов двумерного массива #3
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
#include "stdafx.h"
using namespace std;
int main()
 
{ 
 
int B[n][m]; int min; int bmin;
srand ( time(NULL) );
for(int i=0;i<n;i++)
for(int j=0;j<m;j++)
B[i][j]=rand()%9;
for(int i=0;i<n;i++)
{
        for(int j=0;j<m;j++)
        cout<<"B["<<i<<"]["<<j<<"]="<<B[i][j]<<"\n";
}
int bminold=bmin=B[0][0];
for(int i=0;i<n;i++)
for(int j=0;j<m;j++)
{
   if(B[i][j]==bmin)// повторяющийся
   {
      bmin=bminold; // возвращаем старое
   }
   else
   if(B[i][j]<bmin)// новый меньший
   {
      bminold=bmin;  // запоминаем старое
      bmin=B[i][j]; // запоминаем меньший
   }
}
cout<<"\n"<<"Min:"<<bmin;
system ("pause");
return 0;
}
Добавлено через 3 минуты
Все, понял, спасибо!
zss
Модератор
Эксперт С++
 Аватар для zss
5942 / 5547 / 1783
Регистрация: 18.12.2011
Сообщений: 14,155
Завершенные тесты: 1
21.05.2013, 21:51     Найти минимальный из неповторяющихся элементов двумерного массива #4
17 строка:
bold=bmin=B[0][0];

И еще - программа не сработает, если b[0][0] - минимальный элемент (но повторяющийся).
Genn55
341 / 188 / 37
Регистрация: 26.12.2012
Сообщений: 658
23.05.2013, 00:45     Найти минимальный из неповторяющихся элементов двумерного массива #5
Эта работает
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
//#include "stdafx.h"
#include <iostream>
#include <math.h>
#include <time.h>
#include <stdlib.h>
#define n 3
#define m 4
using namespace std;
int main()
 
{
 
int B[n][m];
srand ( time(NULL) );
for(int i=0;i<n;i++)
for(int j=0;j<m;j++)
B[i][j]=rand()%9;
for(int i=0;i<n;i++)
{
        for(int j=0;j<m;j++)
        cout<<"B["<<i<<"]["<<j<<"]="<<B[i][j]<<"\n";
}
//////////////////////////////////////////////
   int *A=new int[n*m]; //одномерный массив
   int namber=0; //индексы одномерного массива
 
  //Копируем данные двумерного массива в одномерный
   for (int i=0;i<n;i++)
   {
       for (int j=0;j<m;j++)
       {
          A[namber]=B[i][j];
          namber++;
       }
   }
///////////////////////////////////////////////
//находим мин и проверяем на повторния
int label=0,i_min = -1;
for (int i = 0; i < n*m; i++)
{
    label=0;//обнуляем при новом входе в цикл
    for (int j = 0; j < n*m; j++)
        if(A[i]==A[j])
            label++;//наращиваем если элементы равны
    if((label==1)&&(A[i_min]>A[i]))
 
                i_min=i;//находим мин если элементы не повторяются
  }
 if (i_min==-1)
     cout<<"NO"<<"\n";// это случай когда в массиве нет неповторяющихся элементов
 else
     cout<<"min element =  "<<A[i_min]<<"\n";// вывод минимального
//////////////////////////////////////////////
    // Удаление массива
   delete [] A;
//system ("pause");
return 0;
}
Yandex
Объявления
23.05.2013, 00:45     Найти минимальный из неповторяющихся элементов двумерного массива
Ответ Создать тему
Опции темы

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