как программировать (x-1)/x+(x-2)/x+(x-3)/x+...+1/x=3 на языке Qbasic пожалуста

1

Ответы и объяснения

  • Участник Знаний
2013-02-07T10:01:13+00:00

Непонятно условие. Решить уравнение, что ли? Так оно решается аналитически. Если тупо перебором, то примерно так.

 

Напишу на псевдоязыке, перевести его на другой язык программирования - дело техники.

 Сначала функция для вычисления левой части(х перенесём в правую, чтобы избежать деления на 0). Если знаешь формулу суммы арифметической прогрессии, эту сумму можно аналитически преобразовать, но допусим, не знаешь, тогда тупой цикл.

 

Функция С(х)

Сум=0;

Для ц=1 по (х-1) Цикл

Сум=Сум+ц;

КонецЦикла;

Возврат(Сум);

КонецФункции;

 

Теперь основная программа, которая тупо перебирает все числа от Начало до Конец с шагом Шаг0. Если достигнута заданная Точность, выводится результат.

 

Начало=-100;

Конец   =100;

Шаг0      =0,1;

Точность=0,00001;

Ввод (Значение);

 

Для х=Начало по Конец Шаг  Шаг0 Цикл

Если АБС(С(х)-Значение*x)<=Точность Тогда

Печать("х="+х);

Выход;

КонецЕсли;

КонецЦикла;

 

 

Вот и всё. Задача решена в общем виде, когда справа не обязательно 3, а любое, которое вводится, как Значение;

 

АБС() - это функция нахождения модуля числа, если её в языке нет, её можно написать, например, так

 

Функция АБС(х)

Если х<0 Тогда

Возврат(-х);

Иначе

Возврат(х);

КонецФункции;

 

Если в языке нет оператора полного итерационного цикла, он легко эмулируется оператором цикла с условием пока (do while()).

 

Ну вот, где-то так. Хотя условие задачи следовало бы сформулировать точнее а вдруг х-только целые или ещё что-нибудь?

 

Ну и последнее, используемый псевдоязык на самом деле лишь чуть-чуть модифицированный язык программироваия 1С7.