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

Даны натуральные числа a1,a2,.,an . Указать те из них, у которых остаток от деления на M равен L (0< L< M - C++

Восстановить пароль Регистрация
 
OldFile
0 / 0 / 0
Регистрация: 10.04.2014
Сообщений: 15
15.04.2014, 23:25     Даны натуральные числа a1,a2,.,an . Указать те из них, у которых остаток от деления на M равен L (0< L< M #1
Даны натуральные числа a1,a2,.,an . Указать те из них, у которых остаток от деления на M равен L (0< L< M)
Решение сделать через функцию.У меня что-то не получается сделать через функцию.Помогите пожалуйста.

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
#include <iostream>
using namespace std;
#define n 10
 
int main()
{
    setlocale(0, "");
    int a[n], l, m,i;
    cout << " Введите элементы массива:" << endl;
    for (i = 1; i <= n; i++)
    {
        cout << " a[" << i << "] = ";
        cin >> a[i];
 
    }
    cout << " Введите делитель: ", cin >> m;
    cout << " Введите остаток: ", cin >> l;
    cout << " Числа, которые от деления на " << m << " дают остаток " << l;
    int flag = 0;
    if ((l >= 0) && (l <= m - 1))
    {
        for (i = 1; i < n; i++)
        if (a[i] % m == l)
        {
            cout << a[i] << " ";
            cout << endl;
            flag = 1;
        }
    }
    if (!flag)
        cout << "Таких чисел в массиве нет:" << endl;
    system("pause");
}
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.04.2014, 23:25     Даны натуральные числа a1,a2,.,an . Указать те из них, у которых остаток от деления на M равен L (0< L< M
Посмотрите здесь:

Получить все меньшие n натуральные числа, квадрат суммы цифр которых равен m C++
Дан массив натуральных чисел. Указать те, у которых остаток от деления на М равен L (0<L<M-1). C++
C++ Даны числа m и n. Получить все натуральные числа,меньшие n, квадрат суммы цифр которых равен m
Даны числа m и n, получить все натуральные числа,меньшие n, квадрат суммы цифр которых равен m C++
C++ Даны натуральные числа а1, а2,..., аn. Указать те из них, у которых остаток от деления на М равен L
C++ даны целые числа A, B и C. Выведите остаток от деления AB (A в степени B) на C
Двумерные массивы, посчитать число элементов, остаток от деления которых на 5 равен 1 C++
Указать те из чисел последовательности, у которых остаток от деления на М равен L C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
bav1003
0 / 0 / 1
Регистрация: 11.04.2014
Сообщений: 3
16.04.2014, 02:11     Даны натуральные числа a1,a2,.,an . Указать те из них, у которых остаток от деления на M равен L (0< L< M #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
// Функция для ввода параметров деления
bool getParam(int& dev,int& rem) {
    cout << " Введите делитель: ", cin >> dev;
    cout << " Введите остаток: ", cin >> rem;
    if ((dev >= 0) && (rem <= dev - 1))
        return true;
    else
        return false;
}
// Функция, решающая основную задачу нахождения чисел ...
// Возвращает количество найденных чисел
int getNumbers(int *a,int n,int dev,int rem,int *r) {
int m=0;
    for(int i=0;i<n;i++) {
        if(a[i]%dev==rem) {
            r[m++]=a[i];
        }
    }
return m;
}
// Функция для печати массива
void printArray(int *a,int size) {
    for(int i = 0; i < size; i++) {
        cout << a[i] << endl;
    }
}
Тогда часть функции main можно будет записать с использованием введенных функций, например, в виде
C++
1
2
3
4
5
6
7
8
9
10
    while(!getParam(m,l)) {
        cout << "Неправильные данные blah, blah..." << endl;
    }
    int res[n],r;
    if((r = getNumbers(a,n,m,l,res)) > 0) {
        cout << " Числа, которые от деления на " << m << " дают остаток " << l <<endl;
        printArray(res,r);
    } else {
        cout << "Таких чисел в массиве нет:" << endl;
    }
Да, еще.(Не могу молчать .)У Вас в программе распространенная ошибка новичков в C/C++:
C++
1
2
3
4
5
6
7
8
 int a[n], l, m,i;
    cout << " Введите элементы массива:" << endl;
    for (i = 1; i <= n; i++)
    {
        cout << " a[" << i << "] = ";
        cin >> a[i];
 
    }
Элементы массивов в C/C++ нумеруются с нуля, то есть правильно заголовок этого цикла записать в виде:
C++
1
  for (i = 0; i < n; i++)
Подробнее об этом в учебниках. Это такой "баян"...
OldFile
0 / 0 / 0
Регистрация: 10.04.2014
Сообщений: 15
16.04.2014, 10:51  [ТС]     Даны натуральные числа a1,a2,.,an . Указать те из них, у которых остаток от деления на M равен L (0< L< M #3
Благодарю,что все так подробно объяснили.
Yandex
Объявления
16.04.2014, 10:51     Даны натуральные числа a1,a2,.,an . Указать те из них, у которых остаток от деления на M равен L (0< L< M
Ответ Создать тему
Опции темы

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