Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Alias_ru
0 / 0 / 0
Регистрация: 13.07.2014
Сообщений: 3
#1

Найти три наименьших элемента произвольного одномерного массива - C++

13.07.2014, 23:59. Просмотров 879. Ответов 6
Метки нет (Все метки)

1 Найти 3 наименьших элемента произвольного одномерного массива.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.07.2014, 23:59
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Найти три наименьших элемента произвольного одномерного массива (C++):

Найти три наименьших элемента произвольного одномерного массива
Найти три наименьших элемента произвольного одномерного массива....

Найти пять наименьших элементов одномерного массива
Найти пять наименьших элементов одномерного массива целых чисел,напишите код на...

Найти минимальный элемент произвольного одномерного массива
найти минимальный элемент произвольного одномерного массива

Найти наибольший общий делитель для элементов произвольного одномерного массива
Найти наибольший общий делитель для элементов произвольного одномерного массива...

Найти минимальные элементы в каждом столбце произвольного двумерного массива и записать их в виде одномерного
Найти минимальные элементы в каждом столбце произвольного двумерного массива и...

Найти три максимальных аэлемента одномерного массива
нужна помощь. просто не могу понять в чём ошибка. + нужно ещё ввести сам массив...

6
Croessmah
++Ͻ
14146 / 8071 / 1512
Регистрация: 27.09.2012
Сообщений: 19,905
Записей в блоге: 3
Завершенные тесты: 1
14.07.2014, 08:53 #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <algorithm>
#include <vector>
#include <iterator>
 
int main()
{
    std::vector < int > vec ( std::istream_iterator<int>(std::cin) , std::istream_iterator<int>() ) ;
    if ( vec.size() < 3 )
    {
        std::cerr << "Error\n" << std::endl ;
        return 1 ;
    }
    std::nth_element ( vec.begin() , vec.begin() + 2 , vec.end() ) ;
    std::copy ( vec.begin() , vec.begin() + 3 , std::ostream_iterator<int>(std::cout, " ") ) ;
}
1
SatanaXIII
Супер-модератор
Эксперт С++
5765 / 2763 / 374
Регистрация: 01.11.2011
Сообщений: 6,717
Завершенные тесты: 1
14.07.2014, 10:52 #3
Pascal
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
Uses crt;
 
Const M = 3;
 
Type ArrTp = Array [1..1] of Integer;
     PArr = ^ArrTp;
 
Var Arr : PArr;
    Count, i, j : Integer;
    Min : Array [1..M] of Integer;
 
Label EndLoop;
 
Begin
clrscr;
 
Write( 'N=' );
ReadLn( Count );
 
If Count > M then
  begin
  GetMem( Arr, Count * SizeOf( pArr ) );
 
  Randomize;
  For i:=1 to Count do
    Arr^[i] := Random( 100 );
 
  For i:=1 to M do
    Min[i] := Arr^[i];
 
  For i:=1 to Count do
    begin
    For j:= 1 to M do
      If Arr^[i] = Min[j] then
        Goto EndLoop;
 
    For j:= 1 to M do
      If Arr^[i] < Min[j] then
        begin
        Min[j] := Arr^[i];
        Break;
        end;
    EndLoop:
    end;
  FreeMem( Arr, Count * SizeOf( pArr ) );
 
  For j:= 1 to M do
    WriteLn( 'Min[', j, ']=', Min[j] );
  end;
Readln;
End.
0
Тамика
14.07.2014, 10:56
  #4

Не по теме:

Паскаль?..Зачем Паскаль?

0
volvo
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
25595 / 17148 / 6819
Регистрация: 22.10.2011
Сообщений: 30,344
Записей в блоге: 6
14.07.2014, 13:04 #5
Цитата Сообщение от Тамика Посмотреть сообщение
Паскаль?..Зачем Паскаль?
Уточняю вопрос: зачем ТАКОЙ Паскаль?

SatanaXIII, хотелось показать, как грубо выглядит код на Паскале в сравнении с С++? А научиться писать нормальный, а не г...код - не пробовал? Попробуй, возможно, у тебя даже получится... Ну, скажем:

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
{$mode objfpc}
uses math, FGL;
 
type
  T = specialize TFPGList<Integer>;
 
function MySort(const v1, v2: Integer) : Integer;
begin Result := CompareValue(v1, v2); end;
 
var i : Integer;
 
begin
  with T.Create do
  try
    while not eoln do
    begin read(i); Add(i) end;
 
    Sort(@MySort);
    for i := 0 to 2 do writeln(Items[i]);
 
  finally
    Free;
  end;
end.
0
SatanaXIII
Супер-модератор
Эксперт С++
5765 / 2763 / 374
Регистрация: 01.11.2011
Сообщений: 6,717
Завершенные тесты: 1
14.07.2014, 13:09 #6
Тубропаскаль не знать о такая директиве:
Цитата Сообщение от UI Посмотреть сообщение
{$mode objfpc}


Добавлено через 66 секунд
Цитата Сообщение от UI Посмотреть сообщение
хотелось показать, как грубо выглядит код на Паскале в сравнении с С++?
Откуда такие мысли вообще? Телепат все ж пробудился, я гляжу?
0
IrineK
Заблокирован
14.07.2014, 15:32 #7
Впору разбрасывать тему по разным разделам )

Можно не сортировать весть массив (~N logn), а упорядочивать выбранную тройку (от 2 до 4 сравнений)
За один проход можно управиться (~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
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>
 
//---------------------------------------------------------------
int *CreateRandomArray (int N)
{
    int *arr = new int [N];
    for (int i = 0; i<N; i++)
        arr[i] = rand()%100;
 
    return arr;
}
 
void PrintArray (char *name, int *arr, int N)
{
    std::cout <<"\n"<<name <<":\n";
    for (int i = 0; i<N; i++)
        std::cout << *(arr+i) << "  ";
    std::cout <<"\n";
}
//-----------------------------------------------------------------
 
typedef struct trio
{
    int min,middle,max;
}TRIO;
 
 
void ArrangeTrio (TRIO *order)
{
    int a = order->min, b = order->middle, c= order->max;
    if(a>b)
    {   if(b>c)
        {   order->min = c;
            order->middle = b;
            order->max = a;
        }
        else if(a>c)
        {   order->min = b;
            order->middle = c;
            order->max = a;
        }
        else
        {   order->min = b;
            order->middle = a;
            order->max = c;
        }
    }
    else
    {   if(b<c)
        {   order->min = a;
            order->middle = b;
            order->max = c;
        }
        else if(a<c)
        {   order->min = a;
            order->middle = c;
            order->max = b;
        }
        else
        {   order->min = c;
            order->middle = a;
            order->max = b;
        }
    }
}
 
void GetTrio (int *arr, int M, TRIO *res)
{
    for (int i = 4; i<M; i++)
        if (arr[i]<res->max)
        {   res->max = arr[i];
            ArrangeTrio(res);
        }
}
 
//----------------------------------------------------------------------------
int main()
{   
    srand ((unsigned int)time (NULL));
    
    int M = 15;
    int *arr = CreateRandomArray (M);
    PrintArray ("Array", arr, M);
 
    TRIO *res = new TRIO;
    res->min = arr[0];
    res->middle = arr[1];
    res->max = arr[2];
    ArrangeTrio(res);
    
    GetTrio (arr,M,res);
 
    std::cout<< '\n'<< res->min<<'\t'<<res->middle<<'\t'<<res->max;
 
    delete []arr;
    delete res;
 
    std::cin.get();
    return 0;
}
0
14.07.2014, 15:32
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.07.2014, 15:32
Привет! Вот еще темы с решениями:

Найти два минимальных элемента одномерного массива
Доброе время суток, подскажите, как найти 2 самых маленьких элемента! За ранее...

В однородном массиве вещественных чисел три наименьших элемента заменить нулями.
В однородном массиве вещественных чисел три наименьших элемента заменить...

Сумма элементов произвольного одномерного массива
Помогите составить программу, которая находит сумму элементов произвольного...

Найти сумму элементов одномерного массива расположенных до последнего положительного элемента
Найти сумму элементов одномерного массива, расположенных до последнего...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

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