Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
1 / 1 / 0
Регистрация: 14.11.2018
Сообщений: 7

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

04.04.2019, 22:26. Показов 1343. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
всем добрый вечер, помогите, пожалуйста, разобраться с функцией perv_cifr1.

Условие задачи:
Создать дин. массив из N, взятых из диапазона А-B. Найти среднеарфимет. сумму чисел, в записи которых есть цифра из числа А.
мой ход решения:
1. Создать массив для числа А. ( один эл. массива = 1 цифре из А)
2. Удалить в массиве цифры, которые встречаются более 1 раза.

в функции perv_cifr1

передать наше рандомное число и массив с цифрами.
проверить каждую цифру рандомного числа с массивом.

к сожалению, не могу найти ошибку в функции, прошу помощи

заранее большое спасибо за любую помощь.

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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
#include "pch.h"
#include <iostream>
#include <ctime>
#include <conio.h>
#include <stdlib.h>
 
using namespace std;
 
//вывод
 
void OutMas(int *x, int n)
{
    for (int i = 0; i < n; i++)
    cout << x[i] << " ";
}
 
 
int perv_cifr1(int b, int* ar)
{
 
    int d, k;
 
    for (int i = 0; i < b; i++) {
        while (b > 9) {
 
            d = b % 10;
 
            if (d == ar[i]) {
                return 1;
                break;
            }
            else {
                b = b / 10;
                d = b % 10;
            }
            
        }
        while (b < 10) {
 
            if (b == ar[i]) {
                return 1;
                break;
            }
            return 0;
        }
        
    }
 
}
    
 
//длина A
 
int countDigit(int &number)
{
    int length = 0;
    int tmp = number;
    while (tmp > 0)
    {
        tmp = tmp / 10;
        length++;
    }
    return length;
}
 
//создать массив числа А
 
void createArray(int*array, int number, int length)
{
    {
        for (size_t i = 0; i < length; i++)
        {
            array[i] = number % 10;
            number /= 10;
        }
    }
}
 
//заполнить массив
 
int random(int a, int b) {
    if (a > 0) return a + rand() % (b - a);
    else return a + rand() % (abs(a) + b);
}
 
int main() {
    srand(time(NULL));
    setlocale(LC_ALL, "rus");
    int countDigit(int &A);
    int p = 0;
    int kol = 0; int w;  int  r = 0;
    int q = 10;
    int A = 622, B = 100000;
    int*arr;
    arr = new int[q];// массив под цифры
    int* Arr;
    Arr = new int[q]; // массив под числа
    int razmer = countDigit(A);
    createArray(arr, A, razmer);
    cout << endl;
 
    //удаляем повторяющ. эл.
 
    while (p < q - 1)
    {
        int g;
        g = p + 1;
        while (g < razmer)
            if (arr[p] == arr[g])
            {
                for (int j = g; j < razmer - 1; j++)
                    arr[j] = arr[j + 1];
                razmer--;
            }
            else g++;
        p++;
 
    };
 
    cout << endl;
 
    OutMas(arr, razmer);
 
    cout << endl;
 
    for (int i = 0; i < q; i++) {
        int c = random(A, B);
        int W = 0;
        Arr[i] = c;
        if (perv_cifr1(c, arr) == 1) {  
 
            W += c;
            kol++;
        }
        cout << W << endl;
    }
 
    
    OutMas(Arr, q);
 
    cout << endl << endl;
 
    cout << kol << endl;
    
    delete[]Arr;
    delete[]arr;
    system("pause");
 
}
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
04.04.2019, 22:26
Ответы с готовыми решениями:

Найти все натуральные числа из промежутка от 9 до 999, в записи которых есть цифры A и B
Найти все натуральные числа из промежутка от 9 до 999, в записи которых есть цифры A и B (A и B вводить с клавиатуры).

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

Найти все целые числа из промежутка 1 до 100 в десятичной записи которых есть цифры 7
Поясните пожалуйста код, добавьте комментарии. Program rb_3; var a,b,c:integer begin for a:10 to 100do begin ...

1
 Аватар для zayats80888
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
05.04.2019, 06:39
Лучший ответ Сообщение было отмечено exx1dae как решение

Решение

exx1dae,
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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
#include <iostream>
#include <random>
 
int* create(int size, int min, int max)
{
    int* arr = new int[size];
    std::random_device rd;
    std::uniform_int_distribution<> uid(min, max);
    for (int i(0); i < size; ++i)
        arr[i] = uid(rd);
    return arr;
}
 
void destroy(int*& arr)
{
    delete[] arr;
    arr = nullptr;
}
 
void print_arr(int* arr, int size)
{
    while (size--) std::cout << *(arr++) << ' ';
}
 
bool is_there_digit(int value, bool(&digits)[10])
{
    value = abs(value);
    while (value) {
        if (digits[value % 10]) return true;
        value /= 10;
    }
    return false;
}
 
double avg_if_num(int* arr, int size, int value)
{
    bool digits[10]{};
    value = abs(value);
    while (value) {
        digits[value % 10] = true;
        value /= 10;
    }
    double avg(0);
    int count(0);
    for (int i(0); i < size; ++i)
        if (is_there_digit(arr[i], digits)) {
            avg += arr[i];
            ++count;
        }
    if (count) avg /= count;
    return avg;
}
 
int main()
{
    int N, A, B;
    std::cin >> N >> A >> B;
    int* arr = create(N, A, B);
    print_arr(arr, N);
    std::cout << std::endl << avg_if_num(arr, N, A);
    destroy(arr);
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
05.04.2019, 06:39
Помогаю со студенческими работами здесь

Найти все целые числа из промежутка от 10 до 200, в десятичной записи которых есть цифры “2” и “5”
Найти все целые числа из промежутка от 10 до 200, в десятичной записи которых есть цифры “2” и “5”.

Сколько есть шестизначных чисел, в записи которых цифры 1 и 2 встречаются по два раза, а цифры 3 и 4 – по одно
Сколько есть шестизначных чисел, в записи которых цифры 1 и 2 встречаются по два раза, а цифры 3 и 4 – по одному разу? Помогите пожалуйста!

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

Найти и вывести на экран четные числа массива, в записи которых нет цифры 2
Как решить? Дан массив из n целых чисел. Найти и вывести на экран четные числа массива, в записи которых нет цифры 2. Вывести на экран...

Для заданного n, кратного 11, найти все числа, в десятичной записи которых использованы все десятичные цифры
Для заданного n, кратного 11, найти все числа, в десятичной записи которых использованы все десятичные цифры.


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru