Оставить без изменений последовательность, если она упорядочена по не убыванию или по не возрастанию - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Ребят,я начинающая программистка) помогите решить задачу на С Даны действительные числа a1, …, a30. Оставить без изменений последовательность a1, …, a30, если она упорядочена по не убыванию или по не возрастанию; в противоположном случае заменить нулями те члени, порядковые номера которых кратны четырем.

Решение задачи: «Оставить без изменений последовательность, если она упорядочена по не убыванию или по не возрастанию»

textual
Листинг программы
#include <iostream>
#include <windows.h>
using namespace std;
 
int sign (int v) { //знак числа -1, 0 или 1
    return (v<0 ? -1 : (v==0 ? 0 : 1));
}
 
int main () {
    const int m=5;
    int a[m] = { 3, 2, 2, 2, 3 };
    int i;
    bool uporota = true;
    int sign1=0, sign2=0;
    for (i=1; i<m-1; i++) {
        if (sign(a[i]-a[i-1])) sign1 = sign(a[i]-a[i-1]);
        if (sign(a[i+1]-a[i])) sign2 = sign(a[i+1]-a[i]);
        if (sign1!=0 && sign2!=0 && sign1!=sign2) {
            uporota = false;
            break;
        }
    }
    if (uporota) cout << "It Is Sorted!";
    else {
        cout << "Cnanged: ";
        for (i=0; i<m; i++) {
            if (i>0 && i%4==0) //считаем, что 0 не кратен 4
                a[i] = 0;
            cout << a[i] << " ";
        }
    }
    cout << endl;
    system("pause");
    return 0;
}

Объяснение кода листинга программы

Код выполняет следующие действия:

  1. В функции main создается массив a размером m=5 и инициализируется значениями {3, 2, 2, 2, 3}.
  2. Переменная i инициализируется значением 1 и используется в цикле for, который выполняется m-1 раз.
  3. В каждой итерации цикла выполняется проверка: если текущее значение a[i] больше предыдущего (a[i-1]), то меняется знак переменной sign1. Если текущее значение a[i+1] больше предыдущего (a[i]), то меняется знак переменной sign2.
  4. Если значения sign1 и sign2 не равны нулю и не равны друг другу, то это означает, что последовательность не является упорядоченной по возрастанию или убыванию, и переменная uporota устанавливается в значение false. Цикл прерывается.
  5. Если последовательность остается упорядоченной, то выводится сообщение It Is Sorted!.
  6. Если последовательность не является упорядоченной, то выводится сообщение Cnanged: и значения массива a выводятся через пробел.
  7. Программа ожидает нажатия клавиши для продолжения.
  8. Возвращается значение 0, что означает успешное выполнение программы.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 4.214 из 5
Похожие ответы