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

Поиск минимального и максимального элементов массива - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 19, средняя оценка - 4.95
Lexis2
1 / 1 / 0
Регистрация: 01.12.2010
Сообщений: 15
06.12.2010, 16:51     Поиск минимального и максимального элементов массива #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
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
//---------------------------------------------------------------------------
#include <cmath>
#include <iostream>
#pragma hdrstop
#include <stdio.h>
#include <math.h>
#include <limits.h>
#include <values.h>
#include <conio.h>
#include <iostream.h>
#include <stdlib.h>
#include <cstdlib>
#include <stdlib.h>
#include <VCL.h>
 
int main()
{
int i,z;
int k=0;
//int max_X = 100;
//int min_X = -100;
float mas[10];
randomize();
//float sr2 = 10;
float n = 0;
 
int x,y;
cout<<"vvedite razmernost masiva "<<endl;
cin>>z;
z = z -1;
float sr = 0;
srand((unsigned)time(NULL));
for(i = 0; i <= z; i++)
{
mas[i]=(random(10)-5);
}
 
for (i = 0; i <= z; i++) {
cout<<"elementi massiva = "<<mas[i]<<endl;
}
 
 
for (i = 0; i <= z; i++)
{
sr = sr + mas[i];
n = n+1;
}
sr = (sr)/(n);
cout << "\n crednee arifmeticheckoe mas[i] : " <<sr<<endl;
 
float max_X = mas[0];
k = 0;
for (i = 0; i <= z; i++)  {
if (mas[i] >= max_X)
{
max_X = mas[i];
k = i ;
}
}
cout << "\n max_X : " <<max_X<<endl;
cout << "k = " <<k<<endl;
 
int k1 = 0;
float min_X = mas[0];
for (i = 0; i <= 9; i++)  {
if (mas[i] <= min_X)
{
min_X = mas[i];
k1 = i ;
}
}
cout << "\n min_X : " <<min_X<<endl;
cout << "k1 =  " <<k1<<endl;
 
 
 
 
 
 
 
 
 
 
 
 
float m;
m = fabs(mas[0]-sr);
int b=0;
 
for (i = 0; i <= z; i++) {
if (m > fabs(mas[i]-sr)) {
m = fabs(mas[i]-sr);
b = i;
}
 
}
cout << "\n Camij blizkij element k sr aref : " <<mas[b]<<endl;
cout << "\n Nomer Camogo blizkogo elementa k sr aref : " <<b<<endl;
 
 
//cout << "Camij blizkij element k sr aref : " <<m<<endl;
//cout << "Ego nomer : " <<d<<endl;
 
 
 
 
 
 
 
 
 
 
 
getch();
 
}
Добавлено через 1 минуту
кто сможет помочь помогите!
1условие знаю вот
C++
1
2
3
if (mas[i] >= max_X)
{
max_X = mas[i];
C++
1
2
3
if (mas[i] <= min_X)
{
min_X = mas[i];
а как найти 2макс и минимум
условие не знаю(((
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.12.2010, 16:51     Поиск минимального и максимального элементов массива
Посмотрите здесь:

C++ Сумма минимального и максимального элементов массива
Поиск максимального и минимального элементов массива C++
C++ Поиск максимального и минимального элементов в матрице
C++ с++ dos box,64 разрядная платформа - Выполнить поиск максимального и минимального элементов массива
C++ Вычислить сумму элементов вещественного массива, находящихся до минимального и после максимального элементов
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
06.12.2010, 17:36     Поиск минимального и максимального элементов массива #2
Вот как искать два максимальных елемента в масиве
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
 
int main ()
{
    int m[10] = {4, 7, 45, 3, 6, 5, 43, 76, 46, 65};
    int max_1 =  0, max_2 = 0;
    for(int i = 0; i < 10; i++)
    {
        if(m[i] > max_1)
        {
            max_1 = m[i];
        }
        else if(m[i] != max_1)
        {
            if(m[i] > max_2)
            {
                max_2 = m[i];
            }
        }
    }
    std::cout << max_1 << ' ' << max_2;
    return 0;
}
Минимальные - аналогично.
norge_goth
62 / 62 / 7
Регистрация: 27.01.2009
Сообщений: 279
06.12.2010, 17:52     Поиск минимального и максимального элементов массива #3
полная прога 2 максимума + минимум
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
#include <iostream>
#include <stdio.h>
#include <time.h>
 
using namespace std;
 
 
int  main()
{
    int z = -1, *mas, *vect;
    int max_1 = 0, max_2 = 0;
    int min = 0;
 
    cout << "vvedite razmernost masiva " << endl;
    cin >> z;
 
    if (z >= 0)
    {
        try
                {
            mas = new int[z];
        } catch (bad_alloc ba)
        {
            cout << "cannot allocate mas in memory " << z << " elements" << endl;
            system("PAUSE");
            exit(1);
        }
    }
 
    else
    {
        cout << "cannot create mas with " << z << " elements" << endl;
        system("PAUSE");
        exit(1);
    }
 
    vect = mas;
 
    srand((unsigned)time(NULL));
 
    for(int i = 0; i < z; ++i, ++vect)
        *vect = (rand() % 100);
 
    vect -= z;
 
    for(int i = 0; i < z; ++i)
        cout << vect[i] << endl;
 
    cout << endl;
 
    max_1 = 0;
    max_2 = 1;
    min = z - 1;
 
    for(int i = 1, j = z - 2; i < z && j >= 0; ++i, --j)
    {
        if (vect[i] > vect[max_1])
        {
            max_2 = max_1;
            max_1 = i;
        }
 
        else if (vect[i] > vect[max_2])
            max_2 = i;
 
        if (vect[j] < vect[min])
            min = j;
    }
 
    cout << vect[max_1] << endl << vect[max_2] << endl << vect[min] << endl;
 
    system("PAUSE");
    return 0;
}
Напильнег
480 / 120 / 10
Регистрация: 30.09.2010
Сообщений: 473
06.12.2010, 18:07     Поиск минимального и максимального элементов массива #4
Цитата Сообщение от asics Посмотреть сообщение
Вот как искать два максимальных елемента в масиве
А вот так можно задать контр-пример для Вашего решения:
C++
1
    int m[10] = {4, 7, 45, 3, 6, 5, 43, 65, 46, 76};
asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
06.12.2010, 18:13     Поиск минимального и максимального элементов массива #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
#include <iostream>
 
int main ()
{
    int m[10] = {4, 7, 45, 3, 6, 5, 43, 65, 46, 76};
    int max_1 =  0, max_2 = 0;
    for(int i = 0; i < 10; i++)
    {
        if(m[i] > max_1)
        {
            max_1 = m[i];
        }
    }
 
    for(int i = 0; i < 10; i++)
    {
        if(m[i] != max_1)
        {
            if(m[i] > max_2)
            {
                max_2 = m[i];
            }
        }
    }
    std::cout << max_1 << ' ' << max_2;
    return 0;
}
Напильнег
480 / 120 / 10
Регистрация: 30.09.2010
Сообщений: 473
06.12.2010, 18:24     Поиск минимального и максимального элементов массива #6
asics, лень ковыряться, поэтому пока тупо так:
C++
1
    int m[10] = {-4, -7, -45, -3, -6, -5, -43, -65, -46, -76};


Добавлено через 1 минуту
После третьей попытки уйду к соседям
norge_goth
62 / 62 / 7
Регистрация: 27.01.2009
Сообщений: 279
06.12.2010, 18:27     Поиск минимального и максимального элементов массива #7
Цитата Сообщение от Напильнег Посмотреть сообщение
asics, лень ковыряться, поэтому пока тупо так:
C++
1
    int m[10] = {-4, -7, -45, -3, -6, -5, -43, -65, -46, -76};


Добавлено через 1 минуту
После третьей попытки уйду к соседям
а вы проникательный
тут над эти переменные всего лишь индексами сделать, кстати, мой алгоритм вроде недает сбоя
Напильнег
480 / 120 / 10
Регистрация: 30.09.2010
Сообщений: 473
06.12.2010, 19:24     Поиск минимального и максимального элементов массива #8
Вроде не дает. Только я не понял, зачем для поиска минимума второй индекс гнать.

И вот тут:
C++
1
    if (z >= 0)
явно напрашивается хотя бы так:
C++
1
    if (z > 0)
И выделенную через new память желательно освобождать.

Добавлено через 4 минуты
Да, еще - Lexis2, как понять "найти 2макс"?

Для такого набора: { 2, 2, 1, 1, 1 }

должно возвращаться max_1 = 2, max_2 = 2

или max_1 = 2, max_2 = 1?

Это разные задачи, уточни условие.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.12.2010, 19:30     Поиск минимального и максимального элементов массива
Еще ссылки по теме:

Определить индексы максимального и минимального элементов массива C++
Исключение из массива максимального и минимального элементов C++
Найти среднее арифметическое элементов массива без учёта максимального и минимального элементов C++

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

Или воспользуйтесь поиском по форуму:
norge_goth
62 / 62 / 7
Регистрация: 27.01.2009
Сообщений: 279
06.12.2010, 19:30     Поиск минимального и максимального элементов массива #9
1. как-то так сложилось
2. да тут завтык надо по нулю проверять
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
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
#include <iostream>
#include <stdio.h>
#include <time.h>
 
using namespace std;
 
 
int  main()
{
    int z = -1, *mas, *vect;
    int max_1 = 0, max_2 = 0;
    int min = 0;
 
    cout << "vvedite razmernost masiva " << endl;
    cin >> z;
 
    if (z > 0)
    {
        try
                {
            mas = new int[z];
        } catch (bad_alloc ba)
        {
            cout << "cannot allocate mas in memory " << z << " elements" << endl;
            system("PAUSE");
            exit(1);
        }
    }
 
    else
    {
        cout << "cannot create mas with " << z << " elements" << endl;
        system("PAUSE");
        exit(1);
    }
 
    vect = mas;
 
    srand((unsigned)time(NULL));
 
    for(int i = 0; i < z; ++i, ++vect)
        *vect = (rand() % 100);
 
    vect -= z;
 
    for(int i = 0; i < z; ++i)
        cout << vect[i] << endl;
 
    cout << endl;
 
    max_1 = 0;
    max_2 = 1;
    min = z - 1;
 
    for(int i = 1, j = z - 2; i < z && j >= 0; ++i, --j)
    {
        if (vect[i] > vect[max_1])
        {
            max_2 = max_1;
            max_1 = i;
        }
 
        else if (vect[i] > vect[max_2])
            max_2 = i;
 
        if (vect[j] < vect[min])
            min = j;
    }
 
    cout << vect[max_1] << endl << vect[max_2] << endl << vect[min] << endl;
 
    delete [] mas;
    system("PAUSE");
    return 0;
}
Yandex
Объявления
06.12.2010, 19:30     Поиск минимального и максимального элементов массива
Ответ Создать тему
Опции темы

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