Определить, можно ли, переставив члены данной последовательности, получить геометрическую прогрессию - 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];
- Если элемент не соответствует условию геометрической прогрессии, то выводится сообщение о невозможности получить геометрическую прогрессию;
- Если все элементы соответствуют условию геометрической прогрессии, то выводится сообщение о возможности получить геометрическую прогрессию.