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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.83
alex-net
3 / 3 / 1
Регистрация: 27.11.2012
Сообщений: 171
30.01.2013, 10:47     Найти максимальный элемент в массиве и подсчитать количество #1
Найти максимальный по модулю элемент в массиве и подсчитать количество элементов, больших, чем полученное значение:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
include <iostream>
include <cstring>
 
using namespace std;
 
int main()
{
int n, i, l;
int a[i];
cin << a[i];
   for (i = 0; i < n; i++)
      if (max < a[i]) max = a[i]
cout << "Максимальный элемент массива: " <<max;
l=a.length;
if (l > max)
cout << "Количество символов: " << l;
return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.01.2013, 10:47     Найти максимальный элемент в массиве и подсчитать количество
Посмотрите здесь:

Найти максимальный элемент в массиве C++
C++ Найти в массиве максимальный и минимальный элементы в массиве и их количество
C++ Найти максимальный элемент в массиве
Дан массив целых чисел. Найти В этом массиве минимальный элемент т и максимальный элемент м. Вывести сумму элементов от минимального до максимального C++
C++ Классы. В массиве чисел размером 6х6 элементов найти максимальный элемент, минимальный элемент и их индексы
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
30.01.2013, 11:12     Найти максимальный элемент в массиве и подсчитать количество #2
Найти максимальный по модулю элемент в массиве и подсчитать количество элементов, больших, чем полученное значение
Это прошу прощения, как? Максимальный по модулю элемент в любом случае будет максимальным, больше него значений не будет.
alex-net
3 / 3 / 1
Регистрация: 27.11.2012
Сообщений: 171
30.01.2013, 11:19  [ТС]     Найти максимальный элемент в массиве и подсчитать количество #3
Задание такое.
Экзаменационный билет.
Я написал как знаю.
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
30.01.2013, 11:29     Найти максимальный элемент в массиве и подсчитать количество #4
А ок... Не совсем верно я понял видимо. Тогда так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
#include <vector>
#include <algorithm>
 
int main()
{
   std::vector<int> v = {-1, 1, -5, 2, -2};
   int value = *std::max_element(v.begin(), v.end(),
   [](int f, int s) { return abs(f) < abs(s);});
   std::cout << "array has " <<
   std::count_if(v.begin(), v.end(), [value](int i)
   {
      return i > value;
   }) << " elements greater than " << value << std::endl;
}
alex-net
3 / 3 / 1
Регистрация: 27.11.2012
Сообщений: 171
30.01.2013, 11:33  [ТС]     Найти максимальный элемент в массиве и подсчитать количество #5
Спасибо большое!
Но с векторами препод не примет.
Можно, именно как для начинающих написать код?
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
30.01.2013, 11:38     Найти максимальный элемент в массиве и подсчитать количество #6
alex-net, Поправьте под себя, в чем проблема?
alex-net
3 / 3 / 1
Регистрация: 27.11.2012
Сообщений: 171
30.01.2013, 11:42  [ТС]     Найти максимальный элемент в массиве и подсчитать количество #7
ForEveR, чтобы подсчитывало количество элементов, нужно счетчик же написать? Одного l=a.length недостаточно?
-=ЮрА=-
Заблокирован
Автор FAQ
30.01.2013, 11:43     Найти максимальный элемент в массиве и подсчитать количество #8
alex-net, вот так это можно сделать без STL (ИМХО для этой задачи алгоритмы вообще не нужны)
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
#include <iostream>
using namespace std;
 
int main()
{
    int *arr = NULL;
    int max_mod_index = -1;//Г€Г*äåêñ Г¬Г*ГЄГ±ГЁГ¬Г*ëüГ*îãî ГЇГ® ìîäóëþ
    int max_val_index = -1;//Г€Г*äåêñ Г¬Г*ГЄГ±ГЁГ¬Г*ëüГ*îãî ГЇГ® âåëè÷èГ*ГҐ
    int n = 0;//×èñëî ýëåìåГ*òîâ
    int k = 0;//×èñëî ºëåìåГ*òîâ áîëüøèõ Г¬Г*ГЄГ±ГЁГ¬Г*ëüГ*îãî ГЇГ® ìîäóëþ ýëåìåГ*ГІГ*
    cout<<"n = ";cin>>n;
    arr = new int[n];
    cout<<"\nArray :"<<endl;
    //ГђГ*Г*äîìГ*îå Г§Г*ïîëГ*ГҐГ*ГЁГҐ ГЇГҐГ·Г*ГІГј ГЁ ïîäñò÷¸ò
    for(int i = 0; i < n; i++)
    {
        if(max_mod_index == -1)
            max_mod_index = i;
        if(max_val_index == -1)
            max_val_index = i;
        //ÝëåìåГ*ГІГ» Гў äèГ*ГЇГ*çîГ*ГҐ -5...5
        cout<<(arr[i] = rand() % 10 - 5)<<" ";
        if(abs(arr[max_mod_index]) < abs(arr[i]))
            max_mod_index = i;
        if(arr[max_val_index] < arr[i])
            max_val_index = i;
        if(arr[max_mod_index] < arr[max_val_index])
            k = k + 1;
    }
    cout<<"\nOutput"<<endl;
    cout<<"Max module element : "<<arr[max_mod_index]<<endl;
    cout<<"Max value  element : "<<arr[max_val_index]<<endl;
    cout<<"Num elements more then Max module element : "<<k<<endl;
    delete [] arr;
    return 0;
}
Миниатюры
Найти максимальный элемент в массиве и подсчитать количество  
Ev[G]eN
Эксперт С++
 Аватар для Ev[G]eN
5093 / 1531 / 381
Регистрация: 23.01.2011
Сообщений: 3,148
30.01.2013, 11:43     Найти максимальный элемент в массиве и подсчитать количество #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
#include <iostream>
#include <cstdlib>
#include <ctime>
 
int main()
{
    srand(time(0));
    const int size = 20;
    int array[size];
    
    int maximal = 0;
    std::cout << "Array: " << std::endl;
    for (int i = 0; i < size; i++) {
        std::cout << (array[i] = rand() % 25 - 25) << " ";
        maximal = (abs(array[i]) > abs(array[maximal])) ? i : maximal;
    }
    std::cout << "\nMaximal: " << array[maximal] << std::endl;
    
    int counter = 0;
    for (int i = 0; i < size; i++) 
        counter += (array[i] > array[maximal]) ? 1 : 0;
    std::cout << "Count of elements greater than maximal: " << counter << std::endl;
    
    system("pause");
    return 0;
}
-=ЮрА=-
Заблокирован
Автор FAQ
30.01.2013, 11:45     Найти максимальный элемент в массиве и подсчитать количество #10
Цитата Сообщение от alex-net Посмотреть сообщение
Можно, именно как для начинающих написать код?
- вот как раз вверху в посте8 - мой код для начинающего

Не по теме:

PS:

Цитата Сообщение от ForEveR Посмотреть сообщение
Это прошу прощения, как? Максимальный по модулю элемент в любом случае будет максимальным,
-5 в массиве -5 4 3 тоже максимальный по модулю и одновременно минимальный по абсолютному значению

ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
30.01.2013, 11:50     Найти максимальный элемент в массиве и подсчитать количество #11
-=ЮрА=-, На тему ИМХО: зачем писать велосипеды, когда можно использовать алгоритмы, что будет ненамного медленнее, а то и быстрее?) В данном конкретном случае мой код будет медленнее из-за двух проходов, не более того.

Не по теме:

Ну я же уже написал, что неверно понял и предоставил верный код... Для чего еще раз пояснять?)

-=ЮрА=-
Заблокирован
Автор FAQ
30.01.2013, 12:03     Найти максимальный элемент в массиве и подсчитать количество #12
Цитата Сообщение от ForEveR Посмотреть сообщение
Ну я же уже написал, что неверно понял и предоставил верный код... Для чего еще раз пояснять?)
- я сижу с модема 20 Кб/сек и пока все постят у меня страница даже не обновляется. При этом не приследовал никаих целей (о котрых ты явно подумал) и думал наоброт подтолкнуть наглядным примером что подразумевает задание.

Не по теме:

Цитата Сообщение от ForEveR Посмотреть сообщение
, На тему ИМХО: зачем писать велосипеды, когда можно использовать алгоритмы, что будет ненамного медленнее, а то и быстрее?)
- затем что в инстах на малых курсах STL не приемлют и ТС сам об этом написал выше.
Не знаю но думаю по моим постам за 3 года на форуме у любого старожила должно появиться хотя бы отдалённое понимание, что там где можно просто - я пишу просто, а когда надо навернуть я могу и навернуть дай бог...



Добавлено через 4 минуты

Не по теме:

PS:ForEveR, для STL я бы два раза отсортировал по модулям и величинам да подсчитал бы разность между сортированным мо абсолютам до величины макс по модулю, это тоже моё ИМХО

alex-net
3 / 3 / 1
Регистрация: 27.11.2012
Сообщений: 171
30.01.2013, 12:08  [ТС]     Найти максимальный элемент в массиве и подсчитать количество #13
-=ЮрА=-, тут ошибка:
C++
1
cout«(arr[i] = rand() % 10 - 5)«" ";
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
30.01.2013, 12:12     Найти максимальный элемент в массиве и подсчитать количество #14
-=ЮрА=-,

Не по теме:

Тогда извиняюсь.) Ничего я плохого не подумал, просто вызвало недоумение. На тему ИМХО, я не говорил, что STL разрешают использовать на малых курсах, просто я не согласен с фразой: ИМХО для этой задачи алгоритмы вообще не нужны, ведь в подавляющем большинстве случаев, в продакшене напишут именно через STL, ибо это проще, понятнее и логичнее. За сим предлагаю оффтоп закончить, мнения друг друга мы поняли - это хорошо.


2ТС

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
#include <cmath>
 
int main()
{
   int array[] = {1, -1, -5, 2, -2};
   const size_t size = sizeof(array) / sizeof(*array);
   int max = 0;
   for (size_t i = 0; i < size; ++i)
   {
      if (abs(array[i]) > abs(max))
      {
         max = array[i];
      }
   }
   int count = 0;
   for (size_t i = 0; i < size; ++i)
   {
      count += array[i] > max;
   }
   std::cout << "There are " << count << " elements greater than " << max << std::endl;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.01.2013, 12:17     Найти максимальный элемент в массиве и подсчитать количество
Еще ссылки по теме:

C++ Найти в массиве максимальный элемент и минимальный элемент, и поменять их местами
Найти в двумерном массиве максимальный элемент и удалить строку и столбцы, содержащие найденный элемент C++
C++ Найти максимальный элемент и заменить им первый элемент строки в двумерном массиве

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

Или воспользуйтесь поиском по форуму:
-=ЮрА=-
Заблокирован
Автор FAQ
30.01.2013, 12:17     Найти максимальный элемент в массиве и подсчитать количество #15
Цитата Сообщение от alex-net Посмотреть сообщение
-=ЮрА=-, тут ошибка:
Код C++
1
cout«(arr[i] = rand() % 10 - 5)«" ";
- это у тебя телефон исковеркал << и заменил потоковый ввод на симол «

Добавлено через 3 минуты
alex-net, вот попробуй код со статическим массивом http://codepad.org/v2UGspmO
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 <iostream>
using namespace std;
 
int main()
{
    int max_mod_index = -1;//Г€Г*äåêñ Г¬Г*ГЄГ±ГЁГ¬Г*ëüГ*îãî ГЇГ® ìîäóëþ
    int max_val_index = -1;//Г€Г*äåêñ Г¬Г*ГЄГ±ГЁГ¬Г*ëüГ*îãî ГЇГ® âåëè÷èГ*ГҐ
    
    
    int arr[] = {-5, 3, 2, -3, 0, 1, 4, -2, 1};
    int n = sizeof(arr)/sizeof(arr[0]);//×èñëî ýëåìåГ*òîâ
    int k = 0;//×èñëî ºëåìåГ*òîâ áîëüøèõ Г¬Г*ГЄГ±ГЁГ¬Г*ëüГ*îãî ГЇГ® ìîäóëþ ýëåìåГ*ГІГ*
    cout<<"\nArray :"<<endl;
    //ГђГ*Г*äîìГ*îå Г§Г*ïîëГ*ГҐГ*ГЁГҐ ГЇГҐГ·Г*ГІГј ГЁ ïîäñò÷¸ò
    for(int i = 0; i < n; i++)
    {
        if(max_mod_index == -1)
            max_mod_index = i;
        if(max_val_index == -1)
            max_val_index = i;
        //ÝëåìåГ*ГІГ» Гў äèГ*ГЇГ*çîГ*ГҐ -5...5
        cout<<arr[i]<<" ";
        if(abs(arr[max_mod_index]) < abs(arr[i]))
            max_mod_index = i;
        if(arr[max_val_index] < arr[i])
            max_val_index = i;
        if(arr[max_mod_index] < arr[max_val_index])
            k = k + 1;
    }
    cout<<"\nOutput"<<endl;
    cout<<"Max module element : "<<arr[max_mod_index]<<endl;
    cout<<"Max value  element : "<<arr[max_val_index]<<endl;
    cout<<"Num elements more then Max module element : "<<k<<endl;
    return 0;
}
codepad не слинковал бы будь там ошибка
Array :
-5 3 2 -3 0 1 4 -2 1
Output
Max module element : -5
Max value element : 4
Num elements more then Max module element : 8
Press any key to continue
Как видишь всё работает и с рандом тоже работало.

Не по теме:

PS:Я уже встречал такую штуку с коверканием на самсунгах, тамошний браузер форумский код коверкает для std::cout<< std::cin>>

Миниатюры
Найти максимальный элемент в массиве и подсчитать количество  
Yandex
Объявления
30.01.2013, 12:17     Найти максимальный элемент в массиве и подсчитать количество
Ответ Создать тему
Опции темы

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