Не работает программа, не могу найти ошибку - C (СИ)
Формулировка задачи:
Дан одномерный массив А неупорядоченных целых чисел. Назовем инверсией два стоящих рядом элемента, когда левый элемент больше правого. Из каждой инверсии переписать в массив В меньший элемент. Вывести массив В на экран или выдать сообщение «Массив В пуст».
#include<stdio.h>
#include<stdlib.h>
#include<locale.h>
#define N 6
int main (void)
{
setlocale(LC_ALL, "rus");
int B[N], A[N]={5,6,2,4,9,3};
int k=0,temp,i;
for (i=0;i<N;i++)
{
if (A[i]>A[i+1])
{
temp=A[i];
A[i]=A[i+1];
A[i+1]=temp;
B[i]=A[i+1];
}
else B[i]=A[i+1];
}
if (B[i]==0) printf("Массив пуст\n");
else printf("%d\n",B[i]);
system("pause");
return 0;
}Решение задачи: «Не работает программа, не могу найти ошибку»
textual
Листинг программы
#include<stdio.h>
#include<stdlib.h>
#include<locale.h>
#define N 6
int main (void)
{
setlocale(LC_ALL, "rus");
int B[N], A[N]={5,6,2,4,9,3};
int k=0,i;
for (i=1;i<N;i++) if (A[i-1]>A[i]) B[k++]=A[i];
if (k==0) printf("Массив пуст\n");
else for (i=0;i<k;i++) printf("%d\n",B[i]);
system("pause");
return 0;
}
Объяснение кода листинга программы
- Подключение необходимых библиотек для работы программы: stdlib.h, printf.h, locale.h.
- Установка значения N равным 6, это количество элементов в массиве A.
- Инициализация массива A значениями 5,6,2,4,9,3.
- Установка значения k равным 0, это счетчик для заполнения массива B.
- Установка значения i равным 1, это счётчик для цикла for.
- Проверка условия для цикла for, если A[i-1] больше A[i], то выполняется обмен элементов и увеличивается значение k.
- Если значение k равно нулю, то выводится сообщение о пустоте массива B.
- В противном случае, выводятся все элементы массива B с помощью цикла for.
- Конец программы с помощью команды system(
pause). - Возвращение значения 0, что означает успешное завершение программы.