Проверять, является ли одномерный массив арифметической прогрессией - 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();
}
программка должна проверять является ли одномерный массив арифметической прогрессий элементы исходного масива могут быть не упорядочены. поэтому я их сортирую. затем нахожу разность первого и второго элемента(25 строка). затем если она не равна нулю то считаю кол-во элементов с такой же разностью. если их количество совпадает с количеством элементов исходного массива тогдаэта прогрессия. но он почету-то всегда одно и тоже число в 25 строке вычисляет.... не могу понять почему, подскажите

Решение задачи: «Проверять, является ли одномерный массив арифметической прогрессией»

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();
}

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

Код проверяет, является ли одномерный массив арифметической прогрессией. Вот список действий, которые выполняются в коде:

  1. Ввод количества элементов массива с помощью функции scanf.
  2. Если количество элементов не равно нулю, то происходит заполнение массива значениями с помощью той же функции scanf.
  3. Сортировка массива с помощью алгоритма сортировки пузырьком.
  4. Вывод отсортированного массива на экран с помощью функции printf.
  5. Вычисление разности между первым и последним элементами массива и сохранение этого значения в переменной t.
  6. Если разность равна нулю, то выводится сообщение об ошибке.
  7. Иначе, переменная k инициализируется нулем и начинается цикл, который подсчитывает количество элементов массива, имеющих одинаковое значение разности.
  8. После завершения цикла выводится количество элементов с одинаковой разностью и сама разность.
  9. Если количество элементов с одинаковой разностью равно (n-1), то выводится сообщение о том, что массив является арифметической прогрессией.
  10. В противном случае выводится сообщение о том, что массив не является арифметической прогрессией.
  11. Завершение работы программы с помощью функции getch.

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


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

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

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