Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 5.00/9: Рейтинг темы: голосов - 9, средняя оценка - 5.00
2 / 1 / 1
Регистрация: 18.12.2019
Сообщений: 57
1

Найти число одномерного массива, в котором содержится максимальное число нулей

25.05.2021, 16:23. Показов 1756. Ответов 21

Author24 — интернет-сервис помощи студентам
Дан одномерный массив, элементы которого ограничены пользователем. Найти число с наибольшим количеством нулей.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.05.2021, 16:23
Ответы с готовыми решениями:

Найти такое число в двоичной записи которого содержится минимальное число нулей
Среди простых чисел, не превосходящих заданного N, найти такое, в двоичной записи которого...

Найти такое число в двоичной записи которого содержится минимальное число нулей
Среди простых чисел, не превосходящих заданного N, найти такое, в двоичной записи которого...

Найти количество строк массива, не содержащих нулей и максимальное число, встречающееся более одного раза
Написать программу как можно проще 1. Консольный ввод/вывод целочисленного массива размером 5*5....

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

21
Заблокирован
25.05.2021, 16:42 2
Цитата Сообщение от CatGamer Посмотреть сообщение
с наибольшим количеством нулей
О какой системе счисления идёт речь?
И чо делать, если таких числе в массиве окажется 2 или более?

Где вы все берёте эти дурацкие задачи, а?
Кликните здесь для просмотра всего текста
0
2 / 1 / 1
Регистрация: 18.12.2019
Сообщений: 57
25.05.2021, 16:43  [ТС] 3
Verevkin, о десятичной. Ну вообще, как угодно, я понимаю. В условии не сказано же
0
1709 / 1109 / 337
Регистрация: 25.01.2019
Сообщений: 2,910
25.05.2021, 16:44 4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
    std::mt19937 g(time(0));
    std::uniform_int_distribution<int> gen(-(2e+9), 2e+9);
    auto rnd = [&g, &gen](){ return gen(g); };
 
    size_t n;
    std::cin >> n;
 
    std::vector<int> arr(n);
    std::generate(arr.begin(), arr.end(), rnd);
 
    for(auto i : arr) std::cout << i << " ";
 
    auto zero_count = [](int num){ num = abs(num); size_t count = 0; while(num){ count += !(num % 10); num /= 10; } return count; };
    auto res = std::max_element(arr.begin(), arr.end(), [&zero_count](int a, int b){ return zero_count(a) < zero_count(b); });
 
    std::cout << "\n\nResult: " << *res << "\n\n";
Цитата Сообщение от CatGamer Посмотреть сообщение
элементы которого ограничены пользователем
Эт что значит?
1
Заблокирован
25.05.2021, 16:52 5
Цитата Сообщение от CatGamer Посмотреть сообщение
о десятичной. Ну вообще, как угодно, я понимаю. В условии не сказано же
Сам-то понял, чо сказал?


Добавлено через 6 минут
Folian, я в С++ не шарю, но, имхо, у тебя там баг в коде. Подправь:
C++
1
auto zero_count = [](int num){ if (!num) return 1; num = abs(num); size_t count = 0; while(num){ count += !(num % 10); num /= 10; } return count; };
2
1709 / 1109 / 337
Регистрация: 25.01.2019
Сообщений: 2,910
25.05.2021, 16:56 6
Цитата Сообщение от Verevkin Посмотреть сообщение
у тебя там баг в коде. Подправь:
Ага, есть такое.
0
Заблокирован
25.05.2021, 16:59 7
По-колхозному я б так написал (шоб у препода глаза не закровоточили):
C++
1
2
3
4
5
6
7
// подсчёт десятичных нулей в числе
unsigned zero_count(long long x)
{
  unsigned zc = 0;
  do zc += !(x % 10), x /= 10; while (x);
  return zc;
}
2
2 / 1 / 1
Регистрация: 18.12.2019
Сообщений: 57
25.05.2021, 17:00  [ТС] 8
Цитата Сообщение от Folian Посмотреть сообщение
Эт что значит?
Каждый элемент массива не превышает заданного числа
0
1709 / 1109 / 337
Регистрация: 25.01.2019
Сообщений: 2,910
25.05.2021, 17:07 9
Цитата Сообщение от Verevkin Посмотреть сообщение
я б так написал
Тож об таком подумал
C++
1
2
3
4
5
6
7
    auto zero_count = [](int num)
    { 
        num = abs(num); 
        size_t count = 0; 
        do { count += !(num % 10); num /= 10; } while(num); 
        return count; 
    };
Цитата Сообщение от CatGamer Посмотреть сообщение
не превышает заданного числа
По модулю? А элементов сколько?
1
2 / 1 / 1
Регистрация: 18.12.2019
Сообщений: 57
25.05.2021, 17:12  [ТС] 10
Цитата Сообщение от Folian Посмотреть сообщение
По модулю? А элементов сколько?
1. Нет
2. Можно и самому ввести кол-во элементов, а можно и задать любое число прям в коде
0
Заблокирован
25.05.2021, 17:13 11
Цитата Сообщение от Folian Посмотреть сообщение
Тож об таком подумал
это лишнее:
C++
1
num = abs(num);
В данном случае пох, какой знак будет у остатка.

Добавлено через 40 секунд
CatGamer, И чо делать, если таких чисел в массиве окажется 2 или более?
0
1709 / 1109 / 337
Регистрация: 25.01.2019
Сообщений: 2,910
25.05.2021, 17:19 12
Лучший ответ Сообщение было отмечено CatGamer как решение

Решение

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>
#include <ctime>
 
int main()
{
    srand(time(0));
 
    int n;
    int dist;
    std::cin >> dist >> n;
 
    int *arr = new int[n];
    for(int i = 0; i < n; ++i)
    {
        arr[i] = rand()%dist + 1;
        std::cout << arr[i] << " ";
    }
 
    int imax = 0;
    int max = 0;
    for(int i = 0; i < n; ++i)
    {
        int x = arr[i];
        int count = 0;
        do
        {
            count += !(x % 10);
            x /= 10;
        } while(x);
 
        if(max < count)
        {
            count = max;
            imax = i;
        }
    }
 
    std::cout << "\n\nRes: " << arr[imax] << "\n\n";
 
    delete [] arr;
 
    system("pause");
    return 0;
}
Цитата Сообщение от Verevkin Посмотреть сообщение
это лишнее:
Автопилот - наше всё!
1
2 / 1 / 1
Регистрация: 18.12.2019
Сообщений: 57
25.05.2021, 17:27  [ТС] 13
Цитата Сообщение от Verevkin Посмотреть сообщение
CatGamer, И чо делать, если таких чисел в массиве окажется 2 или более?
Любое вывести, оба же подходят. Ну вообще максимальное, полагаю

Добавлено через 2 минуты
Folian,
Цитата Сообщение от Folian Посмотреть сообщение
#include <iostream>
#include <ctime>
int main()
{
    srand(time(0));
int n;
    int dist;
    std::cin >> dist >> n;
int *arr = new int[n];
    for(int i = 0; i < n; ++i)
    {
        arr[i] = rand()%dist + 1;
        std::cout << arr[i] << " ";
    }
int imax = 0;
    int max = 0;
    for(int i = 0; i < n; ++i)
    {
        int x = arr[i];
        int count = 0;
        do
        {
            count += !(x % 10);
            x /= 10;
        } while(x);
if(max < count)
        {
            count = max;
            imax = i;
        }
    }
std::cout << "\n\nRes: " << arr[imax] << "\n\n";
delete [] arr;
system("pause");
    return 0;
}
Спасибо большое, так и представлял задачу
0
Заблокирован
25.05.2021, 17:45 14
Цитата Сообщение от CatGamer Посмотреть сообщение
Любое вывести, оба же подходят. Ну вообще максимальное, полагаю
Мне на работе официально разрешено любого заказчика посылать на 3 буквы за такую постановку задачи.
Прикинь, у тебя массив {0, 10, 20, 30}. Во всех числах массива максимально количество нулей.
0
2 / 1 / 1
Регистрация: 18.12.2019
Сообщений: 57
25.05.2021, 17:47  [ТС] 15
Цитата Сообщение от Verevkin Посмотреть сообщение
Мне на работе официально разрешено любого заказчика посылать на 3 буквы за такую постановку задачи.
Отличная работа получается, такое мало где пройдет
0
Заблокирован
25.05.2021, 17:49 16
Цитата Сообщение от CatGamer Посмотреть сообщение
Отличная работа получается, такое мало где пройдет
Завидуй молча.
1
2 / 1 / 1
Регистрация: 18.12.2019
Сообщений: 57
25.05.2021, 18:01  [ТС] 17
Цитата Сообщение от Verevkin Посмотреть сообщение
Прикинь, у тебя массив {0, 10, 20, 30}. Во всех числах массива максимально количество нулей.
Ну и ведь можно вывести 30, двойное условие нииикто не отменял
Люди, которые задачку придумали, полагаю, импровизацию не запрещали
0
Заблокирован
25.05.2021, 18:36 18
Цитата Сообщение от CatGamer Посмотреть сообщение
двойное условие нииикто не отменял
Его никто и не вводил. Вот формулировка:
Найти число одномерного массива, в котором содержится максимальное число нулей

Цитата Сообщение от CatGamer Посмотреть сообщение
Люди, которые задачку придумали, полагаю, импровизацию не запрещали
Предположение — мать провала!
Запомни это, а лучше запиши.
0
2 / 1 / 1
Регистрация: 18.12.2019
Сообщений: 57
25.05.2021, 19:28  [ТС] 19
Цитата Сообщение от Verevkin Посмотреть сообщение
Его никто и не вводил. Вот формулировка:
Это, блин логика простая, уф
0
Заблокирован
25.05.2021, 19:42 20
Цитата Сообщение от CatGamer Посмотреть сообщение
Это, блин логика простая, уф

Сравни то, что в задании – "Найти число с наибольшим количеством нулей" и то, что ты родил своей дедукцией (которая в программировании недопустима) - "Среди чисел с наибольшим количеством нулей найти максимальное число".

Мож скажешь, что это то же самое, а?
0
25.05.2021, 19:42
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.05.2021, 19:42
Помогаю со студенческими работами здесь

Найти слово, содержащее максимальное число нулей
При написании программ использовать нуль–терминированные строки и работать только с типом char *....

Найти в текстовом файле число, содержащее максимальное количество нулей
Здравствуйте! Помогите пожалуйста у меня не получается, как только не пытался. Видимо опыта...

Как достать из одномерного массива чисел максимальное число?
Прошу совета

Написать программу, которая определяет максимальное чётное число, при котором сумма последовательности не превышает 60. Первое число - 6
Написать программу, которая определяет максимальное чётное число, при котором сумма...

Среди простых чисел, не превосходящих заданного N, найти такое, в двоичной записи которого содержится максимальное число единиц
Помогите с задачами в C++, желательно с &lt;stdio.h&gt;. Была бы признательна за объяснения! 1.Среди...

Yайти максимальное и минимальное число и его индекс одномерного массива с использованием указателей
Дано одномерный массив найти максимальное и минимальное число и его индекс с использованием...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru