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

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

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

вот такое задание: Определить, можно ли, переставив члены данной последовательности, получить геометрическую прогрессию, используя метод пузырька. сортировку пузырьком я сделала, а вот остальное сделать не могу, вернее даже, не пойму как... вот то что сделала я:
#include <stdio.h>
#pragma hdrstop
#define n 6
 
#pragma argsused
int X[n]; //имя массива
void main ()
{ int i=0, b=0, j=0; //i-переменная цикла,означающая позицию элемента в массиве;
//b-переменная для сортировки
printf("Vvedite %d chisel: ", n);
for(i=0; i<n; i++)
{printf("\n%d-oe chiclo --> ",i); // \n-означает конец строки
scanf("%d", &X[i]);//&- взятие адреса
}
for (i = 0; i < n; i++) {
printf("%d ", X[i]);
}
printf("\n\n");
 
for ( i=1; i<n ; i++){
for (j=0; j<n-i; j++){
if (X[j]>X[j+1]){
b=X[j];
X[j]=X[j+1];
X[j+1]=b;
}
}
}
for (i = 0; i < n; i++) {
printf("%d ", X[i]);
}
 
getchar();
getchar();
}
а...еще у нас в универе требуют использовать только одну библиотеку: stdio.h очень прошу помощи, я никак не могу разобраться как делать

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

textual
Листинг программы
#include <stdio.h>
#pragma hdrstop
#define n 6
 
#pragma argsused
int X[n]; //имя массива
int main ()
{ 
    int i=0, b=0, j=0; //i-переменная цикла,означающая позицию элемента в массиве;
    //b-переменная для сортировки
    printf("Vvedite %d chisel:\n", n);
    for(i=0; i<n; i++)
{
    printf("%d-oe chiclo --> ",i); // \n-означает конец строки
    scanf("%d", &X[i]);//&- взятие адреса
}
    for (i = 0; i < n; i++) {
    printf("%d ", X[i]);
}
    printf("\n\n");
 
    for ( i=1; i<n ; i++){
        for (j=0; j<n-i; j++){
            if (X[j]>X[j+1]){
                b=X[j];
                X[j]=X[j+1];
                X[j+1]=b;
            }
        }
}
    for (i = 0; i < n; i++) {
    printf("%d ", X[i]);
}
/*------------------------------------------------------*/
    int znam = X[1]/X[0]; //получаем знаменатель
    for(i = 2; i < n;i++){
    if(X[i]!=X[i-1]*znam) 
    {
        if(i == (n-1)){
        printf("Poluchit' geometricheskuy progressiy nevozmojno.");
        getchar();
        return 0;
        }
    }     
}
    printf("Poluchit' geometricheskuy progressiy vozmojno.");
    getchar();
/*--------------------------------------------------------*/
    return 0;
}

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

  1. Объявление массива X[n] для хранения введенных пользователем чисел;
  2. Ввод чисел в массив X[n] с помощью цикла и функции scanf;
  3. Сортировка массива X[n] по возрастанию с помощью алгоритма сортировки пузырьком;
  4. Вывод отсортированного массива на экран;
  5. Получение знаменателя геометрической прогрессии, передав в качестве делителя первый элемент массива X[1] и поделив его на X[0];
  6. Проверка каждого следующего элемента массива на соответствие геометрической прогрессии, начиная с элемента X[2];
  7. Если элемент не соответствует условию геометрической прогрессии, то выводится сообщение о невозможности получить геометрическую прогрессию;
  8. Если все элементы соответствуют условию геометрической прогрессии, то выводится сообщение о возможности получить геометрическую прогрессию.

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


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

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

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