Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Breezeblocks
0 / 0 / 2
Регистрация: 01.11.2016
Сообщений: 81
#1

Найти в массиве количество четных чисел, сумма цифр в которых не превышает заданного числа P - C++

27.12.2016, 16:20. Просмотров 258. Ответов 8
Метки нет (Все метки)

Найти количество четных чисел, сумма цифр в которых не превышает заданного числа P.
При вводе Р=11 все считает правильно , но стоит ввести другое число, то количество считает не правильно.Что не так ?
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<stdio.h>
#include<stdlib.h>
#include <iostream>
using namespace std;
 
int Count(int *a, int P);
 
int main()
{
    int a[5] = {345,2620,14492,1450,12206};
    int P;
    cout << "LABA_3_ZAD_1" << endl;
    cout << "P="; cin >> P;
    for (int i = 0; i<5; i++)
        cout << a[i] << endl;
        cout << "\n-------------" << endl;
 
    cout << "count=" << Count(a, P) << endl;
    system("pause");
}
 
 
int Count(int *a, int P)
{
    int d, Sum, counter = 0;
 
    for (int i = 0; i<5; i++)//Идем по всем элементам массива
    {
        Sum = 0;
        d = a[i];
        if (!(a[i] % 2))//Определяем четность
        {
            while (d % 10)
            {
                Sum += d % 10;
                d /= 10;
            }
            if (Sum <= P)
            {
                counter++;
                cout << a[i] << endl;
            }
        }
 
    }
    return counter;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.12.2016, 16:20
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Найти в массиве количество четных чисел, сумма цифр в которых не превышает заданного числа P (C++):

В заданном массиве найти количество элементов, для которых отклонение от заданного числа А не превышает величины Р
В заданном массиве найти количество элементов, для которых отклонение от...

Найти n первых простых чисел, сумма цифр у которых меньше заданного числа
Помогите написать программу! Условие: найти n первых простых чисел, сумма цифр...

Выбрать максимальное количество чисел в массиве, сумма которых не превышает заданное
Доброго времени суток!Помогите написать или найти готовую программу.Дан набор...

Найти количество первых целых положительных чисел, сумма которых не превышает S
Найти количество первых целых положительных чисел, сумма которых не превышает...

Найти максимальную сумму чисел, произведение которых не превышает заданного числа.
Вводим массив(статический).Найти максимальную сумму чисел, произведение которых...

Найти количество первых целых положительных чисел, сумма которых не превышает S. Значение S вводить с клавиатуры
Найти количество первых целых положительных чисел, сумма которых не превышает...

8
Peoples
1271 / 776 / 730
Регистрация: 06.02.2016
Сообщений: 2,085
Записей в блоге: 15
Завершенные тесты: 4
27.12.2016, 16:32 #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
    vector<int>v {345,2620,14492,1450,12206,10,13,14};
    int p;
    cin>>p;
    cout<<count_if(v.cbegin(),v.cend(),[&p](const int &x) {
        int sum=0;
        string s1=to_string(x);
        for_each(s1.cbegin(),s1.cend(),[&sum](const char &c) {
            string cc {c};
            sum+=stoi(cc);
        });
        return x%2==0 && sum<=p;
    });
}
0
Breezeblocks
0 / 0 / 2
Регистрация: 01.11.2016
Сообщений: 81
27.12.2016, 16:37  [ТС] #3
Peoples, а мою как то можно чтобы через функцию осталось нахождение ?

Добавлено через 32 секунды
изменить*
0
likehood
930 / 789 / 378
Регистрация: 25.12.2016
Сообщений: 2,627
Завершенные тесты: 3
27.12.2016, 16:50 #4
Замени в 33 строке:
C++
1
while (d > 0)
0
Breezeblocks
0 / 0 / 2
Регистрация: 01.11.2016
Сообщений: 81
27.12.2016, 16:57  [ТС] #5
likehood, помогло частично, если скажем ввести 50 должны все числа почситать но нет , не могу понять в чем ошибка?
0
likehood
930 / 789 / 378
Регистрация: 25.12.2016
Сообщений: 2,627
Завершенные тесты: 3
27.12.2016, 16:59 #6
Так у тебя первое число нечётное, вот оно и не учитывается.
0
MrGluck
Модератор
Эксперт CЭксперт С++
8022 / 4865 / 1425
Регистрация: 29.11.2010
Сообщений: 13,251
27.12.2016, 17:14 #7
Peoples, создавать строку из одного символа, чтобы потом вызвать stoi - явно не нужно.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <algorithm>
#include <iostream>
#include <numeric>
#include <string>
 
int main()
{
    const int a[] = {345, 2620, 14492, 1450, 12206, 10, 13, 14}, p = 11;
    std::cout << std::count_if(std::begin(a), std::end(a), [&p](const int &x)
    {
        const std::string s = std::to_string(x);
        return std::accumulate(s.begin(), s.end(), 0) - '0' * s.length() <= p;
    });
}
0
Nemovok
237 / 84 / 86
Регистрация: 30.10.2015
Сообщений: 521
Завершенные тесты: 1
27.12.2016, 17:29 #8
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>
 
int main()
{
  unsigned short result = 0;
  unsigned short sum = 0;
  unsigned short backup = 0;
 
  const unsigned short SIZE = 5;
  const unsigned short P = 10;
 
  unsigned short array[SIZE] = {16, 32, 64, 128, 256};
 
  for (size_t i = 0; i < SIZE; i++) {
    sum = 0;
    if (array[i] % 2 == 0) { // Проверить на четность
      backup = array[i]; // Записать число в отдельную переменную
      sum += backup % 10; // Сложить последнюю цифру с суммой
      while (backup /= 10) { // Пока есть цифры в числе
        sum += backup % 10;   // Складываем их (с конца)
      }
      if (sum >= P) {
        std::cout << array[i] << " "  << sum << std::endl;
        ++result;
      }
    }
  }
 
  std::cout << "Result: " << result << std::endl;
 
  return 0;  
}
0
MrGluck
Модератор
Эксперт CЭксперт С++
8022 / 4865 / 1425
Регистрация: 29.11.2010
Сообщений: 13,251
27.12.2016, 17:39 #9
С проверкой чётности
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <algorithm>
#include <iostream>
#include <numeric>
#include <string>
 
int main()
{
    const int a[] = {345, 2620, 14492, 1450, 12206, 10, 13, 14}, p = 11;
    std::cout << std::count_if(std::begin(a), std::end(a), [&p](const int &x)
    {
        const std::string s = std::to_string(x);
        return !(x & 1) && std::accumulate(s.begin(), s.end(), 0) - '0' * s.length() <= p;
    });
}
1
27.12.2016, 17:39
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.12.2016, 17:39
Привет! Вот еще темы с решениями:

Найти количество первых целых положительных чисел, сумма которых не превышает S. Значение S вводить с клавиатуры.
Найти количество первых целых положительных чисел, сумма которых не превышает...

Найти количество четных цифр заданного натурального числа
Привет, всем))помогите пожалуйста написать код для задачи: найти количество...

Найти количество четных цифр заданного натурального числа
Дано натуральное число: найти количество четных цифр этого числа; верно ли,...

Найти все простые числа, не превосходящие заданного числа, сумма цифр которых, также является простым числом
Срочно нужен код программы в C++ (желательно с комментариями). Я бы разобрался...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru