Top.Mail.Ru
Ответы

Интересная задача на C++

Предлагаю пораскинуть мозгами. Есть задача: В супермаркете проходит промоакция: каждый N-ый покупатель получает один из выбранных товаров бесплатно! Имена покупателей последовательно представлены в качестве массива строк (см. шаблон).
Напишите функцию, которая использует массив клиентов, его размер и число N в качестве аргумента и выведет имена каждого счастливчика в отдельной строке.

Пример вводных данных:
3

Пример выходных данных:
Rayan
Bruce
Richard
Mary

Есть заранее на писаный код, продолжив который нужно добиться результата

123456789101112131415161718192021
 #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; 
} 

Это С+

Только авторизированные пользователи могут оставлять свои ответы
Дата
Популярность
Аватар пользователя
Новичок
1234567891011121314151617181920212223242526272829
 #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-ым.
Надеюсь, это решение поможет вам!

Аватар пользователя
Высший разум
123456
 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'; 
    } 
}