С++

Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain

Ответить
Катеринаа
Сообщения: 10
Зарегистрирован: 17 ноя 2013, 20:01

Сколько существует четырехзначных чисел, кратных 45, две средние цифры которых 7 и 9? Напечатать общее количество и сами числа. Напишите функцию, определяющую, удовлетворяет ли число заданному критерию.
Использовать функции (возвращающие более одного результата) и указатели...
Аватара пользователя
Romeo
Сообщения: 3126
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

Катеринаа, пожалуйста делай осмысленные названия тем. Иначе буду просто чистить их (темы).

По заданию. Не знаю, зачем здесь нужны указатели и функции, возвращающие более одного результата. Подход следует использовать следующий. Дело в том, что число, записываемое нами как 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" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Катеринаа
Сообщения: 10
Зарегистрирован: 17 ноя 2013, 20:01

А мне нужны указатели и функции, возвращающие более одного значения... Как их тут использовать?..
Аватара пользователя
Romeo
Сообщения: 3126
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

Возвращать более одного значения из функции можно только через выходные параметры. Выходные параметры (output parameters) можно реализовать либо через С++ные ссылки, либо через С-шные указатели. Как именно это здесь использовать - это уже второй вопрос. При желании можно придумать, только не очень понятно зачем.
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Катеринаа
Сообщения: 10
Зарегистрирован: 17 ноя 2013, 20:01

Нужно через указатели... Только как...
Аватара пользователя
somewhere
Сообщения: 1858
Зарегистрирован: 31 авг 2006, 17:14
Откуда: 71 RUS
Контактная информация:

Создать структуру для хранения двух возвращаемых значений. Передавать в функцию некоторые данные и получать от нее указатель на эту структуру. Только куда это прикрутить - я не знаю, но зато теперь знаю откуда берутся рукожопые программисты
Вот алгоритм на импровизированном алгоритмическом языке
Вообще, я бы перебирал только два значения 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" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Ответить