Дана последовательность чисел. Определить сколько раз в ней меняется знак - C (СИ) (73864)
Формулировка задачи:
Помогите с задачей:
Дана последовательность чисел. Определить сколько раз в ней меняется знак.
Решение задачи: «Дана последовательность чисел. Определить сколько раз в ней меняется знак»
textual
Листинг программы
#include <stdio.h>
#define n 10
enum {plus, minus};
int main(int argc, char **argv)
{
int a[n], i, count = 0, flag;
for (i = 0; i < n; i++)
{
printf("A[%i]:", i);
scanf("%i", &a[i]);
if (i == 0) flag = (a[i] >= 0 ? plus : minus);
else
{
if (a[i] >= 0 && flag == minus)
{
count++;
flag = plus;
}
else if (a[i] < 0 && flag == plus)
{
count++;
flag = minus;
}
}
}
printf("Swap :%i\n", count);
return 0;
}
Объяснение кода листинга программы
В этом коде реализована функция, которая подсчитывает количество смен знака в заданной последовательности чисел.
- Тип и объём входных данных: Входные данные для этой функции — это массив типа int, размерностью n, инициализированный значениями a[i], где i — номер элемента массива.
- Выходные данные: Выходные данные этой функции — это переменная типа int, count, которая содержит количество смен знака в массиве.
- Логика работы программы: Программа запрашивает у пользователя ввести значения для каждого элемента массива. Затем она проверяет, является ли текущий элемент положительным или отрицательным, и сравнивает его со значением флага. Если текущий элемент положительный и значение флага минус, то увеличивается счётчик count, и значение флага меняется на плюс. Если текущий элемент отрицательный и значение флага плюс, то увеличивается счётчик count, и значение флага меняется на минус.
- Ошибки и обработка исключений: В этом коде не предусмотрена обработка ошибок, за исключением случая, когда пользователь вводит некорректные данные, например, буквы вместо чисел.
- Примечания: — Размер массива n должен быть положительным числом, кратным 4. — Код может работать некорректно, если в массиве будут повторяющиеся нулевые значения.