Определить, можно ли, переставив члены данной последовательности, получить геометрическую прогрессию - C (СИ)
Формулировка задачи:
вот такое задание: Определить, можно ли, переставив члены данной последовательности, получить геометрическую прогрессию, используя метод пузырька.
сортировку пузырьком я сделала, а вот остальное сделать не могу, вернее даже, не пойму как...
вот то что сделала я:
а...еще у нас в универе требуют использовать только одну библиотеку: stdio.h
очень прошу помощи, я никак не могу разобраться как делать
#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(); }
Решение задачи: «Определить, можно ли, переставив члены данной последовательности, получить геометрическую прогрессию»
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; }
Объяснение кода листинга программы
- Объявление массива X[n] для хранения введенных пользователем чисел;
- Ввод чисел в массив X[n] с помощью цикла и функции scanf;
- Сортировка массива X[n] по возрастанию с помощью алгоритма сортировки пузырьком;
- Вывод отсортированного массива на экран;
- Получение знаменателя геометрической прогрессии, передав в качестве делителя первый элемент массива X[1] и поделив его на X[0];
- Проверка каждого следующего элемента массива на соответствие геометрической прогрессии, начиная с элемента X[2];
- Если элемент не соответствует условию геометрической прогрессии, то выводится сообщение о невозможности получить геометрическую прогрессию;
- Если все элементы соответствуют условию геометрической прогрессии, то выводится сообщение о возможности получить геометрическую прогрессию.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д