Консультация № 169696
21.06.2009, 22:51
0.00 руб.
0 1 1
Здравствуйте!
ЗАДАЧА: Ввести одной строкой трехзначное число. Проверить истинность высказывания: "Цифры данного трехзначного числа образуют геометрическую прогрессию". Ответ вывести в виде "yes" или "no".

Спасибо за помощь!

Обсуждение

Неизвестный
22.06.2009, 11:25
общий
это ответ
Здравствуйте, Озерова Елена Сергеевна.

Код в приложении.

Приложение:
// Ввести одной строкой трехзначное число.
// Проверить истинность высказывания:
// "Цифры данного трехзначного числа
// образуют геометрическую прогрессию".
// Ответ вывести в виде "yes" или "no"

#include <stdio.h>
#include <string.h>

#define DIGITS 3

void main () {
char s [DIGITS + 1];
int a, b, c;
int res = 0;

do {
do {
printf ("Введите трехзначное число: "); scanf ("%s", s);
} while (strlen (s) != DIGITS);

// Выделим цифры числа
a = (s [0] - '0');
b = (s [1] - '0');
c = (s [2] - '0');

if (a == 0) printf ("Число не может начинаться с 0!\n");
else printf ("Введенное число: %s\n", s);
} while (a == 0);

// Для трех последовательных членов геометрической прогрессии
// выполняется соотношение: квадрат среднего равен произведению крайних
// Соответственно, нам нужно проверить 3 соотношения,
// помещая каждую цифру в середину последовательности
if (a * a == b * c) res = 1;
if (b * b == a * c) res = 1;
if (c * c == a * b) res = 1;

printf ("%s\n", ((res == 1) ? "yes" : "no"));
}
Форма ответа