Сколько существует четырехзначных чисел, кратных 45, две средние цифры которых 7 и 9? Напечатать общее количество и сами числа. Напишите функцию, определяющую, удовлетворяет ли число заданному критерию.
Использовать функции (возвращающие более одного результата) и указатели...
С++
Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain
- Romeo
- Сообщения: 3126
- Зарегистрирован: 02 мар 2004, 17:25
- Откуда: Крым, Севастополь
- Контактная информация:
Катеринаа, пожалуйста делай осмысленные названия тем. Иначе буду просто чистить их (темы).
По заданию. Не знаю, зачем здесь нужны указатели и функции, возвращающие более одного результата. Подход следует использовать следующий. Дело в том, что число, записываемое нами как X79Y математически может быть предствлено, как 1000*X + 790 + Y. Таким образом достаточно во вложеном цикле по X и Y перебрать все возможные четырёхзначные числа и проверить их делимость на 45. Вот алгоритм на импровизированном алгоритмическом языке:
Где операция % - это операция вычисления остатока от деления одного число (слева) на второе число (справа). Это операция идентична оператору % в С/С++.
По заданию. Не знаю, зачем здесь нужны указатели и функции, возвращающие более одного результата. Подход следует использовать следующий. Дело в том, что число, записываемое нами как X79Y математически может быть предствлено, как 1000*X + 790 + Y. Таким образом достаточно во вложеном цикле по X и Y перебрать все возможные четырёхзначные числа и проверить их делимость на 45. Вот алгоритм на импровизированном алгоритмическом языке:
Код: Выделить всё
Количество = 0;
Цикл X от 1 до 9
{
Цикл Y от 0 до 9
{
Число = 1000*X + 790 + Y;
Если (Число % 45 == 0)
{
Количество = Количество + 1;
Выписать Число;
}
}
}
Выписать Количество;
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
А мне нужны указатели и функции, возвращающие более одного значения... Как их тут использовать?..
- Romeo
- Сообщения: 3126
- Зарегистрирован: 02 мар 2004, 17:25
- Откуда: Крым, Севастополь
- Контактная информация:
Возвращать более одного значения из функции можно только через выходные параметры. Выходные параметры (output parameters) можно реализовать либо через С++ные ссылки, либо через С-шные указатели. Как именно это здесь использовать - это уже второй вопрос. При желании можно придумать, только не очень понятно зачем.
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Нужно через указатели... Только как...
Создать структуру для хранения двух возвращаемых значений. Передавать в функцию некоторые данные и получать от нее указатель на эту структуру. Только куда это прикрутить - я не знаю, но зато теперь знаю откуда берутся рукожопые программисты
Вообще, я бы перебирал только два значения Y: это 0 и 5. Даже не спрашивайте почему :-DВот алгоритм на импровизированном алгоритмическом языке
It's a long way to the top if you wanna rock'n'roll
- Romeo
- Сообщения: 3126
- Зарегистрирован: 02 мар 2004, 17:25
- Откуда: Крым, Севастополь
- Контактная информация:
На счёт 0 и 5 - всецело поддерживаю. Не хотелось усложнять.
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.