Проверять, является ли одномерный массив арифметической прогрессией - C (СИ)
Формулировка задачи:
#include <stdio.h>
#include <math.h>
#include <conio.h>
int main(void)
{int i,j,a[20],b,n,t,c,k;
clrscr();
printf("vvedite kol-vo elementov\n");
scanf("%d",&n);
if(n!=0)
{for(i=0; i<n; i++)
{printf("vvedite zna4enie %d-go elementa massiva\n",i+1);
scanf("%d",&a[i]);
}
for(i=0; i<(n-1); i++)
for(j=i+1; j<n; j++)
if(a[i]>a[j])
{b=a[i];
a[i]=a[j];
a[j]=b;
}
clrscr();
printf("uporuadochenniy massiv\n");
for(i=0; i<n; i++)
{printf("a[%d]=%d\n",i+1,a[i]);}
t=a[i+1]-a[i];
if (t==0)
printf("raznost progresii ne mozget bit ravna 0\n");
else
k=0;
{for(i=0;i<(n-1);i++)
{c=a[i+1]-a[i];
if(c==t)
k++;}
}
if (k=(n-1))
printf("massiv iavlaetsa arifmeticheskoi progresiei\n"
"raznost progresii ravna %d \n",&t);}
else
printf("massiv ne iavlaetsa arifmeticheskoi progresiei\n");
getch();
}Решение задачи: «Проверять, является ли одномерный массив арифметической прогрессией»
textual
Листинг программы
#include <stdio.h>
#include <math.h>
#include <conio.h>
int main(void)
{int i,j,a[20],b,n,t,c,k;
clrscr();
printf("vvedite kol-vo elementov\n");
scanf("%d",&n);
if(n!=0)
{for(i=0; i<n; i++)
{printf("vvedite zna4enie %d-go elementa massiva\n",i+1);
scanf("%d",&a[i]);
}
for(i=0; i<(n-1); i++)
for(j=i+1; j<n; j++)
if(a[i]>a[j])
{b=a[i];
a[i]=a[j];
a[j]=b;
}
}
clrscr();
printf("uporuadochenniy massiv\n");
for(i=0; i<n; i++)
{printf("a[%d]=%d\n",i+1,a[i]);}
t=a[1]-a[0]; //Здесь было t=a[i+1]-a[i];
if (t==0)
printf("raznost progresii ne mozget bit ravna 0\n");
else
{k=0;
for(i=0;i<(n-1);i++)
{c=a[i+1]-a[i];
if(c==t)
k++;}
}
printf("\n%d %d\n",k,t);
if (k==(n-1)) //Здесь было if (k=(n-1))
printf("massiv iavlaetsa arifmeticheskoi progresiei\n"
"raznost progresii ravna %d \n",t); //Здесь было printf("massiv iavlaetsa arifmeticheskoi progresiei\n",&t);
else
printf("massiv ne iavlaetsa arifmeticheskoi progresiei\n");
getch();
}
Объяснение кода листинга программы
Код проверяет, является ли одномерный массив арифметической прогрессией. Вот список действий, которые выполняются в коде:
- Ввод количества элементов массива с помощью функции scanf.
- Если количество элементов не равно нулю, то происходит заполнение массива значениями с помощью той же функции scanf.
- Сортировка массива с помощью алгоритма сортировки пузырьком.
- Вывод отсортированного массива на экран с помощью функции printf.
- Вычисление разности между первым и последним элементами массива и сохранение этого значения в переменной t.
- Если разность равна нулю, то выводится сообщение об ошибке.
- Иначе, переменная k инициализируется нулем и начинается цикл, который подсчитывает количество элементов массива, имеющих одинаковое значение разности.
- После завершения цикла выводится количество элементов с одинаковой разностью и сама разность.
- Если количество элементов с одинаковой разностью равно (n-1), то выводится сообщение о том, что массив является арифметической прогрессией.
- В противном случае выводится сообщение о том, что массив не является арифметической прогрессией.
- Завершение работы программы с помощью функции getch.