Интересная задача на C++
Предлагаю пораскинуть мозгами. Есть задача: В супермаркете проходит промоакция: каждый N-ый покупатель получает один из выбранных товаров бесплатно! Имена покупателей последовательно представлены в качестве массива строк (см. шаблон).
Напишите функцию, которая использует массив клиентов, его размер и число N в качестве аргумента и выведет имена каждого счастливчика в отдельной строке.
Пример вводных данных:
3
Пример выходных данных:
Rayan
Bruce
Richard
Mary
Есть заранее на писаный код, продолжив который нужно добиться результата
#include <iostream>
#include <string>
using namespace std;
//завершите функцию
void winners() {
}
int main() {
string customers[] = {"Alice", "Bob", "Rayan", "Emma", "Ann", "Bruce", "Synthia", "Daniel", "Richard", "Sam", "Nick", "Mary", "Paul"};
//получаем номер счастливчика
int n;
cin >> n;
//вызываем функцию
winners(customers, 13, n);
return 0;
}
Это С+
#include <iostream>
#include <string>
using namespace std;
// Завершаем функцию winners
void winners(string customers[], int size, int n) {
// Перебираем массив покупателей
for (int i = 0; i < size; i++) {
// Проверяем, является ли текущий покупатель N-ым
if ((i + 1) % n == 0) {
// Выводим имя счастливчика
cout << customers[i] << endl;
}
}
}
int main() {
string customers[] = {"Alice", "Bob", "Rayan", "Emma", "Ann", "Bruce", "Synthia", "Daniel", "Richard", "Sam", "Nick", "Mary", "Paul"};
// Получаем номер счастливчика
int n;
cin >> n;
// Вызываем функцию winners
winners(customers, 13, n);
return 0;
}
Объяснение:
Функция winners:
Принимает массив покупателей customers, его размер size и номер счастливчика n в качестве аргументов.
Перебирает массив customers с помощью цикла for.
Для каждого покупателя проверяет, является ли текущий индекс i кратным n (остаток от деления (i + 1) % n равен 0).
Если да, то выводит имя счастливчика (customers[i]) в отдельной строке.
Функция main:
Создает массив покупателей customers.
Запрашивает у пользователя номер счастливчика n.
Вызывает функцию winners, передавая ей массив customers, его размер и n.
Теперь код должен корректно определять счастливчиков в супермаркете.
Дополнительные пояснения:
В коде используется оператор % для вычисления остатка от деления.
Цикл for в функции winners работает от 0 до size - 1, так как индексы массивов в C++ начинаются с 0.
Условие (i + 1) % n == 0 проверяет, делятся ли i + 1 (порядковый номер покупателя) на n без остатка. Это означает, что данный покупатель является N-ым.
Надеюсь, это решение поможет вам!
void winners(const string* customers, size_t length, size_t n) {
if (!n) return;
for (auto i = n - 1; i < length; i += n) {
cout << customers[i] << '\n';
}
}