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

Найти третий по минимальности элемент массива - C++

Восстановить пароль Регистрация
 
DimitriyL
0 / 0 / 0
Регистрация: 15.09.2011
Сообщений: 16
25.10.2011, 09:59     Найти третий по минимальности элемент массива #1
Задан массив из 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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#include <cstdlib>
#include <iostream>
#include <time.h>
#include <stdlib.h>
#include <math.h>
 
using namespace std;
 
int main(int argc, char *argv[])
{
int n;
printf("vvedite  N");
scanf("%d",&n);
int x[n],i,a,min,b,max;
for(i=1;i<=n;i++)
{
 x[i]=rand()%50;
}
for(i=1;i<=n;i++)
{
 printf("%3d",x[i]);
    }
 printf("\n");
 
 for(i=2;i<=n;i++)
 {
    if(min>x[i])
       {
       min=x[i];         
       }
  }
printf("%d",min);
          
          
          
                  
                  
    system("PAUSE");
    return EXIT_SUCCESS;
}
что дальше?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.10.2011, 09:59     Найти третий по минимальности элемент массива
Посмотрите здесь:

C++ Получить третий массив той же размерности, каждый элемент которого равен большему из соответствующих элементов данного массива
Заменить третий положительный элемент массива на максимальный C++
Даны два массива одного размера. Получить третий массив, каждый элемент которого... C++
Сожмите массив, выбросив каждый третий его элемент, без использования дополнительного массива C++
Получите третий массив по правилу: каждый элемент нового массива равен сумме квадратов соответствующих элементов исходных C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
pincet
 Аватар для pincet
1096 / 757 / 79
Регистрация: 23.07.2010
Сообщений: 3,797
25.10.2011, 10:19     Найти третий по минимальности элемент массива #2
Я бы сортирнул массив, затем перебирал бы от первого к последнему, исключая повторы
dimcoder
Полярный
 Аватар для dimcoder
449 / 422 / 66
Регистрация: 11.09.2011
Сообщений: 1,108
25.10.2011, 12:49     Найти третий по минимальности элемент массива #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
36
37
#include <iostream.h>
#include <conio.h>
 
main ()
{
  int a[100];
  int n;
 
  cin >> n;
 
  for (int i = 0; i < n; i++)
    cin >> a[i];
  for (i = 0; i < n; i++)
     for (int j = i+1; j < n; j++)
     if (a[i] > a[j])
     {
    int k = a[i];
    a[i] = a[j];
    a[j] = k;
     }
 
  int k = 1;
  i = 2;
 
  while ((i < n) && (k < 3))
  {
      if (!(a[i] == a[i-1]))
     k += 1;
      i += 1;
  }
 
  cout << a[i-2] << endl << endl;
 
  getch();
 
  return 0;
}
igorrr37
 Аватар для igorrr37
1593 / 1221 / 118
Регистрация: 21.12.2010
Сообщений: 1,868
Записей в блоге: 7
25.10.2011, 13:12     Найти третий по минимальности элемент массива #4
Цитата Сообщение от pincet Посмотреть сообщение
Я бы сортирнул массив, затем перебирал бы от первого к последнему, исключая повторы
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
#include <iterator>
#include <set>
 
int main(){
    int arr[]{-3, 6, -3, 8, 0, 2, 0};
    std::set<int> setArr(arr, arr + sizeof(arr) / sizeof(*arr));
    std::set<int>::const_iterator it = setArr.begin();
    std::advance(it, 2);
    std::cout << *it << std::endl;
    return 0;
}
pincet
 Аватар для pincet
1096 / 757 / 79
Регистрация: 23.07.2010
Сообщений: 3,797
25.10.2011, 15:27     Найти третий по минимальности элемент массива #5
Ну, человек не заикался про контейнеры

Добавлено через 14 секунд
А так, да.
Net_Wanderer
235 / 208 / 19
Регистрация: 08.06.2011
Сообщений: 467
25.10.2011, 16:23     Найти третий по минимальности элемент массива #6
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от DimitriyL Посмотреть сообщение
Задан массив из 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
25
26
27
28
29
30
31
32
33
#include <stdio.h>
#include <stdlib.h>
#include <limits.h>
#include <time.h>
 
#define N           10
#define RANGE_MIN -100 
#define RANGE_MAX  100
#define NMINS        3
 
int main()
{
    int arr[N], mins[NMINS];
    int i, j, t;
 
    for (i = 0; i < NMINS; i++)
        mins[i] = INT_MAX;
    srand(time(NULL));
    printf("array:\n");
    for (i = 0; i < N; i++) {
        printf("%d ", 
            arr[i] = RANGE_MIN + rand() % (RANGE_MAX-RANGE_MIN+1));
        for (j = 0; j < NMINS; j++)
            if (arr[i] < mins[j]) {
                for (t = NMINS - 1; t > j; t--)
                    mins[t] = mins[t - 1];
                mins[j] = arr[i];
                break;
            }
    }
    printf("\n\nthe 3rd minimum element is %d\n", mins[NMINS-1]);
    return 0;
}
diagon
Higher
 Аватар для diagon
1920 / 1186 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
25.10.2011, 16:40     Найти третий по минимальности элемент массива #7
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Так как-то.
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
#include <stdio.h>
#include <limits.h>
#include <iso646.h>
 
int min_after( int *, int, int );
 
int main()
{
    int n = 0;
    
    while( puts("Enter size"), scanf("%d", &n) && n < 3 );
    
    puts("Enter array");
    int arr[n];
    for (int i = 0; i < n; ++i)
        scanf("%d", &arr[i]);
    
    int min_first  = min_after( arr, n, INT_MIN );
    int min_second = min_after( arr, n, min_first );
    int min_third  = min_after( arr, n, min_second );
    
    printf("answer: %d\n", min_third);
}
 
int min_after( int * arr, int size, int x )
{
    int res = INT_MAX;
    for ( int i = 0; i < size; ++i)
        if ( arr[i] > x and arr[i] < res )
            res = arr[i];
    return res;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.10.2011, 08:36     Найти третий по минимальности элемент массива
Еще ссылки по теме:

Дан массив А(12). Каждый третий элемент массива заменить суммой двух предшествующих. C++
Увеличить каждый третий элемент массива в 2 раза C++
Третий положительный элемент массива заменить средним арифметическим положительных элементов C++

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

Или воспользуйтесь поиском по форуму:
DimitriyL
0 / 0 / 0
Регистрация: 15.09.2011
Сообщений: 16
27.10.2011, 08:36  [ТС]     Найти третий по минимальности элемент массива #8
спасибо
Yandex
Объявления
27.10.2011, 08:36     Найти третий по минимальности элемент массива
Ответ Создать тему
Опции темы

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