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

Найти все максимальные элементы - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.89
badman
8 / 8 / 1
Регистрация: 19.04.2012
Сообщений: 49
18.05.2012, 17:17     Найти все максимальные элементы #1
Дан массив из n целых чисел. Найти все максимальные элементы этого массива (напечатать их номера). Затем преобразовать исходный массив по правилу: первый максимальный элемент увеличить на 1, второй — на 2 и т.д.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.05.2012, 17:17     Найти все максимальные элементы
Посмотрите здесь:

C++ Удалить из массива все максимальные элементы
в одномерном массиве А состоящем из N элементов найти максимальные элементы и все элементы равные максимальному заменить на 0. C++
C++ C++, заменить все максимальные элементы нулями
C++, Заменить все максимальные элементы нулями (при пом-щи vector) C++
C++ Массив: Сформировать третий массив, в который включить все отрицательные элементы массива А и все максимальные элементы массива В.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Andrey.K
 Аватар для Andrey.K
338 / 259 / 15
Регистрация: 14.11.2010
Сообщений: 480
18.05.2012, 17:35     Найти все максимальные элементы #2
Что значит " все максимальные" ?
Я так понимаю ,если массив дан такой: 5,14,0,-4,14,8,-3 , то 14 это и есть максмимальные элементы?
badman
8 / 8 / 1
Регистрация: 19.04.2012
Сообщений: 49
18.05.2012, 17:40  [ТС]     Найти все максимальные элементы #3
наверно
мы проходим одно,препод дает нам решать другое,я понятия не имею как это решать((
Andrey.K
 Аватар для Andrey.K
338 / 259 / 15
Регистрация: 14.11.2010
Сообщений: 480
18.05.2012, 17:47     Найти все максимальные элементы #4
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
#include <iostream>
#include <conio.h>
using namespace std;
const int n=7;
int main()
{
    int mas[n],i=0;
    do
    {
        cout<<"Vvedite "<<i<<" element: ";cin>>mas[i];
        i++;
        if(i==n) { cout<<"massiv zapolnen"<<endl<<endl; break; }
    }
    while(i<n);
    // находим макс. элемент
    int max=mas[0];
    for(i=0;i<n;i++)
        if(mas[i]>max) max=mas[i];
    //выводим позиции
    cout<<"Nomera poziciy: "<<endl;
    int count=0;// переменная для того ,чтобы увеличивать элементы массива
    for(i=0;i<n;i++)
        if(mas[i]==max) { cout<<i<<" "; count++; mas[i]+=count; }// выводим позиции и сразу увечиваем элемент
    cout<<endl;
    cout<<"New massiv: "<<endl;
    for(i=0;i<n;i++)
        cout<<mas[i]<<" ";
    cout<<endl;
    getch();
    return 0;
}
Gepar
 Аватар для Gepar
1173 / 529 / 20
Регистрация: 01.07.2009
Сообщений: 3,512
18.05.2012, 17:50     Найти все максимальные элементы #5
Цитата Сообщение от badman Посмотреть сообщение
мы проходим одно,препод дает нам решать другое,я понятия не имею как это решать((
Вопрос не в том как решать, вопрос в том как понимать условие.
Если так
Цитата Сообщение от Andrey.K Посмотреть сообщение
Я так понимаю ,если массив дан такой: 5,14,0,-4,14,8,-3 , то 14 это и есть максмимальные элементы?
то
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
#include <iostream>
#include <iomanip>
#include <vector>
#include <stdlib.h>
using namespace std;
 
int main()
{
    enum {size=10};
    int ar[size];
 
    cout<<"Array is:\n";
    for(int i=0;i<size;i++)
     cout<<setw(2)<<(ar[i]=rand()%20)<<"  ";
    cout<<endl;
 
    int maxElem=ar[0];
 
    //поиск max
    for(int i=1;i<size;i++)
     maxElem=max(maxElem,ar[i]);
 
 
    //вывод позиций max элементов и заодно их инкрементирование
    cout<<"Pos of max is:\n";
    int inc=1;
    for(int i=0;i<size;i++)
     if(ar[i]==maxElem)
      cout<<i<<'\t',ar[i]+=inc++;
 
    cout<<"\nNow array is:\n";
    for(int i=0;i<size;i++)
     cout<<setw(2)<<ar[i]<<"  ";
}
Кот Ангенс
 Аватар для Кот Ангенс
317 / 267 / 37
Регистрация: 24.05.2012
Сообщений: 629
24.05.2012, 18:06     Найти все максимальные элементы #6
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
#include <iostream>
 
using namespace std;
 
int main() {
    int n;
    cin >> n;
    int* a = new int[n];
    int i;
    for (i = 0; i < n; i++)
        cin >> a[i];
    int* ind = new int[n];
    int max = a[0];
    int maxInd = 1;
    ind[0] = 0;
    for (i = 1; i < n; i++)
        if (a[i] > max) {
            max = a[ind[0] = i];
            maxInd = 1;
        } else if (a[i] == max)
            ind[maxInd++] = i;
    max = 1;
    for (i = 0; i < maxInd; i++) {
        cout << ind[i] << endl;
        a[ind[i]] += max++;
    }
    for (i = 0; i < n; i++)
        cout << a[i] << endl;
    delete[ ] a;
    delete[ ] ind;
}
Demy85
58 / 58 / 5
Регистрация: 28.05.2012
Сообщений: 211
Завершенные тесты: 1
08.06.2012, 11:54     Найти все максимальные элементы #7
Цитата Сообщение от badman Посмотреть сообщение
Дан массив из n целых чисел. Найти все максимальные элементы этого массивы (напечатать их номера). Затем преобразовать исходный массив по правилу: первый максимальный элемент увеличить на 1, второй — на 2 и т.д.
Извини, а что значит "все максимальные элементы"? Разве максимальный элемент не один в массиве будет?
Infinity3000
 Аватар для Infinity3000
1057 / 576 / 24
Регистрация: 03.12.2009
Сообщений: 1,255
08.06.2012, 12:00     Найти все максимальные элементы #8
Demy85, есть массив 3 5 4 3 2 5 3 5 1

В нем максимальный элемент 5, таких пятерок 3, и того 3 максимальных элемента! Вот и надо найти их номера
Serejke_qq
 Аватар для Serejke_qq
150 / 108 / 9
Регистрация: 06.07.2011
Сообщений: 224
Завершенные тесты: 2
08.06.2012, 12:18     Найти все максимальные элементы #9
Как-то так:
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
#include <iostream>
 
using namespace std;
 
int main()
{
    int * array;
    int n;
 
    cout << "n = ";
    cin >> n;
 
    array = new int[n];
 
    cout << "\nМассив : \n";
 
    for(int i=0; i<n; i++)
        cin >> array[i];
 
    for(int i=0; i<n; i++)
        cout << " " << array[i];
 
    int max=array[0];
 
    for(int i=1; i<n; i++)
        if(max < array[i])  max = array[i];
 
    cout << "\nИндексы максимальных элементов : ";    // Индексация с нуля..
 
    for(int i=0; i<n; i++)
        if(array[i]==max)   cout << i << " ";
 
    int k=1;
 
    for(int i=0; i<n; i++)
        if(array[i]==max)   array[i]+=k++;
 
    cout << "\n Преобразованый массив: \n";
    for(int i=0; i<n; i++)
        cout << " " << array[i];
 
    delete[] array;
    return 0;
}
badman
8 / 8 / 1
Регистрация: 19.04.2012
Сообщений: 49
08.06.2012, 12:25  [ТС]     Найти все максимальные элементы #10
Цитата Сообщение от Serejke_qq Посмотреть сообщение
array = new int[n]
для чего здесь нужен array?
просто мы еще никогда его не использовали
Serejke_qq
 Аватар для Serejke_qq
150 / 108 / 9
Регистрация: 06.07.2011
Сообщений: 224
Завершенные тесты: 2
08.06.2012, 12:31     Найти все максимальные элементы #11
Цитата Сообщение от badman Посмотреть сообщение
для чего здесь нужен array?
array это имя массива.. можете использовать любое другое на свой вкус (например, mas, a, lol и т.д)
Если вы про строчку с new int [n] - это динамическое выделение памяти под массив
badman
8 / 8 / 1
Регистрация: 19.04.2012
Сообщений: 49
08.06.2012, 12:49  [ТС]     Найти все максимальные элементы #12
Цитата Сообщение от Serejke_qq Посмотреть сообщение
array это имя массива.. можете использовать любое другое на свой вкус (например, mas, a, lol и т.д)
Если вы про строчку с new int [n] - это динамическое выделение памяти под массив
lol)))
спасибо
badman
8 / 8 / 1
Регистрация: 19.04.2012
Сообщений: 49
12.06.2012, 20:26  [ТС]     Найти все максимальные элементы #13
Компилятор выдает ошибку
Дан массив из n целых чисел. Найти все максимальные элементы этого массивы (напечатать их номера). Затем преобразовать исходный массив по правилу: первый максимальный элемент увеличить на 1, второй — на 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
#include <iostream>
using namespace std;
 
void vvod(int a[], int n)
{
for (int i = 0; i < n; i++);
{
cout << "a[" <<i+1«"] = ";
cin >> a[i];
}
}
void print (int a[], int n)
{
cout << "\n";
for (int i = 0; i < n; i++)
cout << a[i] << " ";
}
void max(int a[], int n)
{
int max = a[0];
for (int i = 1; i < n; i++)
if (a[i] > max) max = a[i];
cout << "\nНомера максимальных элементов: ";
for (int i = 0; i < n; i++)
if (a[i] == max) cout << i+1 << " ";
}
 
void preobraz(int a[], int n)
{
int k = 1;
for (int i = 0; i < n; i++)
{ a[i]+=k; k++; }
}
int main()
{
int n = 0;
cout << "Количество элементов массива = ";
cin >> n;
int * mas;
mas = new int [n];
vvod(mas, n);
max(mas, n);
preobraz(mas, n);
print(mas, n);
return 0;
}
Kostyanych77
 Аватар для Kostyanych77
172 / 11 / 2
Регистрация: 21.12.2010
Сообщений: 66
12.06.2012, 20:31     Найти все максимальные элементы #14
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
#include <iostream>
using namespace std;
 
void vvod(int a[], int n)
{
    int i;
    for (i = 0; i < n; i++);
    {
        cout << "a[" <<i+1<<"] = ";
        cin >> a[i];
    }
}
void print (int a[], int n)
{
    cout << "\n";
    for (int i = 0; i < n; i++)
        cout << a[i] << " ";
}
void max(int a[], int n)
{
    int max = a[0];
    for (int i = 1; i < n; i++)
        if (a[i] > max) max = a[i];
    cout << "\nНомера максимальных элементов: ";
    for (int i = 0; i < n; i++)
        if (a[i] == max) cout << i+1 << " ";
}
 
void preobraz(int a[], int n)
{
    int k = 1;
    for (int i = 0; i < n; i++)
    { a[i]+=k; k++; }
}
int main()
{
    int n = 0;
    cout << "Количество элементов массива = ";
    cin >> n;
    int * mas;
    mas = new int [n];
    vvod(mas, n);
    max(mas, n);
    preobraz(mas, n);
    print(mas, n);
    return 0;
}
badman
8 / 8 / 1
Регистрация: 19.04.2012
Сообщений: 49
13.06.2012, 20:18  [ТС]     Найти все максимальные элементы #15
Дан массив из n целых чисел. Найти все максимальные элементы этого массивы (напечатать их номера). Затем преобразовать исходный массив по правилу: первый максимальный элемент увеличить на 1, второй — на 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
#include <iostream>
using namespace std;
 
void vvod(int a[], int n)
{
for (int i = 0; i < n; i++)
{
cout << "a[" <<i+1<<"] = ";
cin >> a[i];
}
}
void print (int a[], int n)
{
cout << "\n";
for (int i = 0; i < n; i++)
cout << a[i] << " ";
}
void max(int a[], int n)
{
int max = a[0];
for (int i = 1; i < n; i++)
if (a[i] > max) max = a[i];
cout << "\nNomera max elementov: ";
for (int i = 0; i < n; i++)
if (a[i] == max) cout << i+1 << " ";
}
 
void preobraz(int a[], int n)
{
int k = 1;
for (int i = 0; i < n; i++)
{ a[i]+=k; k++; }
}
int main()
{
int n = 0;
cout << "Kol-vo elementov massiva  = ";
cin >> n;
int * mas;
mas = new int [n];
vvod(mas, n);
max(mas, n);
preobraz(mas, n);
print(mas, n);
 
return 0;
}
Alt_Shift
 Аватар для Alt_Shift
50 / 50 / 2
Регистрация: 28.05.2012
Сообщений: 161
13.06.2012, 20:46     Найти все максимальные элементы #16
А где ошибка то? все вроде работает
badman
8 / 8 / 1
Регистрация: 19.04.2012
Сообщений: 49
13.06.2012, 20:58  [ТС]     Найти все максимальные элементы #17
Цитата Сообщение от Alt_Shift Посмотреть сообщение
А где ошибка то? все вроде работает
условия задачи не выполняются
kent
Нуб со стажем
 Аватар для kent
36 / 34 / 2
Регистрация: 19.02.2012
Сообщений: 118
13.06.2012, 21:28     Найти все максимальные элементы #18
badman, в функции preobraz на k увеличиваются все элементы, а не максимальные
Andrey.K
 Аватар для Andrey.K
338 / 259 / 15
Регистрация: 14.11.2010
Сообщений: 480
13.06.2012, 21:33     Найти все максимальные элементы #19
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
#include <iostream>
#include <conio.h>
using namespace std;
const int n=10;
int main()
{
    int mas[n],i=0;
    do
    {
        cout<<"Vvedite "<<i<<" element: ";cin>>mas[i];
        i++;
        if(i==n) { cout<<"massiv zapolnen"<<endl<<endl; break; }
    }
    while(i<n);
    // находим макс. элемент
    int max=mas[0];
    for(i=0;i<n;i++)
        if(mas[i]>max) max=mas[i];
    //выводим позиции
    cout<<"Nomera poziciy: "<<endl;
    int count=0;// переменная для того ,чтобы увеличивать элементы массива
    for(i=0;i<n;i++)
        if(mas[i]==max) { cout<<i<<" "; count++; mas[i]+=count; }// выводим позиции и сразу увечиваем элемент
    cout<<endl;
    cout<<"New massiv: "<<endl;
    for(i=0;i<n;i++)
        cout<<mas[i]<<" ";
    cout<<endl;
    getch();
    return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.06.2012, 21:36     Найти все максимальные элементы
Еще ссылки по теме:

C++ Удалить из массива все максимальные элементы (с помощью векторов, алгоритмов)
Массивы. Заменить все максимальные элементы нулями( C++
Задача на векторы, заменить все максимальные элементы нулями C++

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

Или воспользуйтесь поиском по форуму:
badman
8 / 8 / 1
Регистрация: 19.04.2012
Сообщений: 49
13.06.2012, 21:36  [ТС]     Найти все максимальные элементы #20
Цитата Сообщение от Andrey.K Посмотреть сообщение
do
для чего?
Yandex
Объявления
13.06.2012, 21:36     Найти все максимальные элементы
Ответ Создать тему
Опции темы

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