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

В массиве М(45) найти максимальный - C++

Восстановить пароль Регистрация
 
Dasha180893
0 / 0 / 0
Регистрация: 25.12.2011
Сообщений: 39
01.07.2012, 14:33     В массиве М(45) найти максимальный #1
В массиве М(45) найти максимальный среди отрицательных элементов и число нулевых элементов стоящих после него
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Петррр
 Аватар для Петррр
5923 / 3360 / 333
Регистрация: 28.10.2010
Сообщений: 5,926
01.07.2012, 14:47     В массиве М(45) найти максимальный #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
#include <iostream>
#include <ctime>
#include <limits>
 
int main()
{
    enum { size = 10 };
    int array[size];
    int max = INT_MIN;
    int pos = -1;
    int zerocount = 0;
    srand(time(NULL));
    // Заполнение и вывод
    for(int i = 0; i < size; i++)
        std::cout << (array[i] = rand() % 21 - 10) << ' ';
    for(int i = 0; i < size; i++)
        if (array[i] < 0 && array[i] > max)
            max = array[pos = i];
    std::cout << std::endl << "Max: " << max << ", pos: " << pos << std::endl;
    // Подсчет нулей после после максимального
    for(int i = pos; i < size; i++)
        if (array[i] == 0)
            zerocount++;
    std::cout << "Zero count: " << zerocount << std::endl;
 
    system("pause");
    return 0;
}
Andrey.K
 Аватар для Andrey.K
340 / 261 / 15
Регистрация: 14.11.2010
Сообщений: 480
01.07.2012, 14:48     В массиве М(45) найти максимальный #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
#include <iostream>
#include <conio.h>
#include <ctime>
#include <cstdlib>
using namespace std;
const int n=45;
int main()
{
    setlocale(0,"Rus");
    int mas[45],min=-10,max=10,Max,pos,zero=0;
    srand((unsigned)time(NULL));
    cout<<"Исходный массив: "<<endl;
    for(int i=0;i<n;i++)
    {
        mas[i]=rand() % (max - min + 1) + min;
        cout<<mas[i]<<" ";
        if(mas[i]<0) { Max=mas[i];pos=i; }
    }
    cout<<endl;
    for(int i=0;i<n;i++)
    {
        if(mas[i]>Max && mas[i]<0) { Max=mas[i]; pos=i; }
    }
    cout<<"Максимальный элемент: "<<Max<<endl;
    for(int i=pos;i<n;i++)
    {
        if(mas[i]==0) zero++;
    }
    cout<<"Нулевый элементов: "<<zero<<endl;
    getch();
    return 0;
}
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4248 / 2780 / 219
Регистрация: 12.12.2009
Сообщений: 7,109
Записей в блоге: 1
Завершенные тесты: 1
01.07.2012, 15:46     В массиве М(45) найти максимальный #4
Не претендую на то, что мой код будет самым полезным для ТС, просто хотел попробовать с <random> поработать
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 <ctime>
#include <array>
#include <random>
#include <algorithm>
 
int main()
{
    const size_t SIZE = 45;
    const int MIN_VAL = -100, MAX_VAL = 100;
    std::array<unsigned, SIZE> arr;
 
    std::mt19937 eng; 
    eng.seed(time(NULL));
    std::uniform_int_distribution<int> dist(MIN_VAL, MAX_VAL);
    
    std::generate(arr.begin(), arr.end(), [&]() {return dist(eng);});
 
    std::array<unsigned, SIZE>::iterator it = std::max_element(arr.begin(), arr.end());
    std::cout << "Max = " << static_cast<int>(*it) << std::endl;
 
    int zeroCount = std::count_if(it, arr.end(), std::bind1st(std::equal_to<unsigned>(),0));
    std::cout << "Number of nulls after max element = " << zeroCount << std::endl;
   
    return 0;
}
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
5647 / 3126 / 353
Регистрация: 29.11.2010
Сообщений: 8,376
01.07.2012, 15:58     В массиве М(45) найти максимальный #5
Поиск отменили?
В массиве М(45) найти максимальный среди отрицательных элементов и число нулевых элементов стоящих после него
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <algorithm>
#include <iterator>
#include <random>
#include <cstddef>
 
int main()
{
    const std::size_t N = 45;
    int arr[N];
    std::random_device rd;
    std::mt19937 gen(rd());
    std::uniform_int_distribution<> uid(-20, 20);
    std::generate(arr, arr + N, [&uid, &gen] {return uid(gen); } );
    std::copy(arr, arr + N, std::ostream_iterator<int> (std::cout, " ") );
    int *pint = std::max_element(arr, arr + N, [](const int x, const int y) {return x < y && y < 0; } );
    std::cout<< std::endl<< "Max among negative: "<< *pint<< std::endl
             << "Zeros after: "<< std::count(pint, &arr[N], 0);
    return 0;
}
http://liveworkspace.org/code/e709ae...0330a21fc63806
Kastaneda
01.07.2012, 16:03
  #6

Не по теме:

Цитата Сообщение от Kastaneda Посмотреть сообщение
std::count_if(it, arr.end(), std::bind1st(std::equal_to<unsigned>(),0));
Цитата Сообщение от MrGluck Посмотреть сообщение
std::count(pint, &arr[N], 0);
чет я опять сам себя перехитрил

MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
5647 / 3126 / 353
Регистрация: 29.11.2010
Сообщений: 8,376
01.07.2012, 16:04     В массиве М(45) найти максимальный #7
Kastaneda, не хватает #include <functional>. Да и count_if спокойно на count меняется.

Не по теме:

опоздал)

xADMIRALx
01.07.2012, 16:08
  #8

Не по теме:

Препадователь иностранец ? или переводил задания с помощью translete.google.ru ?

Не знаю как вы догадались что надо,лично я вообще ничего не понял

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.07.2012, 16:09     В массиве М(45) найти максимальный
Еще ссылки по теме:

C++ Найти сумму и максимальный элемент в массиве
C++ В одномерном массиве найти максимальный элемент
C++ В заданном массиве найти максимальный элемент
C++ В массиве найти максимальный элемент
C++ В заданном массиве найти максимальный элемент

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

Или воспользуйтесь поиском по форуму:
Kastaneda
01.07.2012, 16:09     В массиве М(45) найти максимальный
  #9

Не по теме:

Цитата Сообщение от MrGluck Посмотреть сообщение
Kastaneda, не хватает #include <functional>
ага точно, а MSVS, собака, так компилирует)

Yandex
Объявления
01.07.2012, 16:09     В массиве М(45) найти максимальный
Ответ Создать тему
Опции темы

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