Составить блок-схему

Отменен
Заказ
6133745
Раздел
Программирование
Предмет
Основы программирования
Тип работы
Антиплагиат
Не указан
Срок сдачи
29 Мая 2024 в 04:00
Цена
200 ₽
Блокировка
10 дней
Размещен
28 Мая 2024 в 16:27
Просмотров
90
Описание работы

void computer(int* match, int num) {

 int i, j;

 // Количество спичек на столе

 int col = getMatches(match, num); // Получаем количество спичек на поле

 // Количество кучек

 int bunches = 0; // Инициализируем счетчик кучек

 // Массив кучек

 int* bunches_of_match = (int*)malloc(sizeof(int) * num); // Выделяем память для массива кучек

 // Определение позиции и размера кучек

 for (i = 0; i < num; ++i) {

  if (match[i] == 1) {

   // Подсчет спичек в кучке

   int k = 1; // Инициализируем счетчик спичек в кучке

   for (j = i + 1; j < num; ++j) {

    if (match[j] == 0) {

     bunches_of_match[i] = k; // Запись размера кучки в массив

     break; // Прерываем цикл, так как кучка закончилась

    } else {

     k++; // Увеличение счетчика спичек в кучке

    }

   }

   if (j == num) { // Если кучка доходит до конца массива

    bunches_of_match[i] = k; // Запись размера кучки

   }

   bunches++; // Увеличение счетчика кучек

   i += k - 1; // Переход к следующей кучке

  } else {

   bunches_of_match[i] = 0; // Инициализация нулей в массиве кучек

 }

}

 // Разбиение спичек на группы по 1-2 спички

 for (i = 0; i < num; ++i) {

  if (bunches_of_match[i] > 0) {

   // Если кучка больше 3 спичек

   if (bunches_of_match[i] > 3) {

    match[i + 2] = 0; // Удаление 2 спичек из кучки

    match[i + 3] = 0;

    printf("\nКомпьютер взял спички %d и %d.\n", i + 3, i + 4); // Вывод хода

    free(bunches_of_match);

    return; // Выход из функции

   }


   // Если кучка больше 2 спичек

   if (bunches_of_match[i] > 2) {

    if (bunches > 1) { // Если кучек больше 1

     match[i] = 0;

     match[i + 1] = 0;

     printf("\nКомпьютер взял спички %d и %d.\n", i + 1, i + 2);

    } else { // Если кучка единственная

     match[i] = 0;

     printf("\nКомпьютер взял спичку %d.\n", i + 1);

    }

    free(bunches_of_match);

    return; // Выход из функции

   }

  }

 }

 // Взять 2 спички из оставшихся

 for (i = 0; i < num; ++i) {

  // В кучке > 1 спичек

  if (bunches_of_match[i] > 1) {

   if (bunches == 2) { // Если осталось 2 кучки

    match[i] = 0;

    printf("\nКомпьютер взял спичку %d.\n", i + 1);

   } else { // Если кучек больше 2

    match[i] = 0;

    match[i + 1] = 0;

    printf("\nКомпьютер взял спички %d и %d.\n", i + 1, i + 2);

   }

   free(bunches_of_match);

   return; // Выход из функции

  }

 }


 // Взять спички из оставшихся

 for (i = 0; i < num; ++i) {

  // В кучке одна спичка

  if (bunches_of_match[i] == 1) {

   match[i] = 0;

   printf("\nКомпьютер взял спичку %d.\n", i + 1);

   free(bunches_of_match);

   return; // Выход из функции

  }

 }

 // Если ничего не взято (не должно быть)

 free(bunches_of_match);

}

Нужна такая же работа?
  • Разместите заказ
  • Выберите исполнителя
  • Получите результат
Гарантия на работу1 год
Средний балл4.53
СтоимостьНазначаете сами
ЭкспертВыбираете сами
Уникальность работыот 70%
Нужна аналогичная работа?
Оформи быстрый заказ и узнай стоимость
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Прямой эфир