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

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

27.12.2016, 16:20. Просмотров 283. Ответов 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
Ответы с готовыми решениями:

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

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

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

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

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

8
Peoples
1347 / 836 / 749
Регистрация: 06.02.2016
Сообщений: 2,232
Записей в блоге: 17
Завершенные тесты: 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 / 0
Регистрация: 01.11.2016
Сообщений: 81
27.12.2016, 16:37  [ТС] 3
Peoples, а мою как то можно чтобы через функцию осталось нахождение ?

Добавлено через 32 секунды
изменить*
0
likehood
965 / 814 / 390
Регистрация: 25.12.2016
Сообщений: 2,691
Завершенные тесты: 3
27.12.2016, 16:50 4
Замени в 33 строке:
C++
1
while (d > 0)
0
Breezeblocks
0 / 0 / 0
Регистрация: 01.11.2016
Сообщений: 81
27.12.2016, 16:57  [ТС] 5
likehood, помогло частично, если скажем ввести 50 должны все числа почситать но нет , не могу понять в чем ошибка?
0
likehood
965 / 814 / 390
Регистрация: 25.12.2016
Сообщений: 2,691
Завершенные тесты: 3
27.12.2016, 16:59 6
Так у тебя первое число нечётное, вот оно и не учитывается.
0
MrGluck
Модератор
Эксперт CЭксперт С++
8087 / 4940 / 1431
Регистрация: 29.11.2010
Сообщений: 13,398
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
289 / 120 / 104
Регистрация: 30.10.2015
Сообщений: 679
Завершенные тесты: 2
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Эксперт С++
8087 / 4940 / 1431
Регистрация: 29.11.2010
Сообщений: 13,398
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 вводить с клавиатуры
Найти количество первых целых положительных чисел, сумма которых не превышает...

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

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


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

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

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