Помощь - Поиск - Пользователи - Календарь
Полная версия: Работа с числами
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
rov4
Привет всем!
rolleyes.gif У меня 2 вопроса:

1. Найти сумму целых положительных чисел, кратных 3 и меньших 200. Вот, что у меня получилось:
Код
program lab;
var sum,i,n:integer;
begin
sum:=0;
n:=1;
for i:=1 to 199 do
if i/3=0 then
begin
sum:=sum+i;
n:=n+1;
writeln('number of elements is=',n);
readln(n);
end;
writeln('Summa is=',sum:7:6);
readln;
end.

Естественно, сумма не может=0, а у меня в результате получается, что она=0, к тому же, комп не считает количество чисел. Не понимаю, в чём проблема...
2.Требуется найти корень уравнения: 3sin(sqrt(x))+0.35x-3.8=0 c точностью е=1/10000. Корень уравнения находится на отрезке [2;3]. Точное значение коня=2.2985. Использовать метод итераций. На печать вывести вычисленное значение корня и для сравнения точное значение корня.
У меня получилось следующее:
Код
program lab;
uses crt;
var x0,x1,x,a,b,e:real;
iteraz:integer;
function fun(x:real):real;
      begin
      fun:=(3.8-(3*sin(sqrt(x))))/0.35;
      end;
begin
clrscr;
write('x0=2.2');
readln(x1);
write('e=0.001');
readln(e);
iteraz:=0;
repeat
iteraz:=iteraz+1;
x0:=x1;
x1:=fun(x0);
until(abs(x1-x0)<=e);
writeln('ђҐиҐ­ЁҐ га ў­Ґ­Ёп......fun=');
writeln('’®з­®Ґ §­ 祭ЁҐ Є®а­п......2.2985');
writeln('‚лзЁб«Ґ­­®Ґ §­ 祭ЁҐ Є®а­п x=',x1:6:5);
readln(x);
writeln('—Ёб«® ЁвҐа жЁ©',iteraz);
readln(iteraz);
writeln('Џа®Ја   § ўҐа襭 , ­ ¦ЁвҐ ENTER');
readln;
end.
В чём здесь ошибка?

Очень прошу помочь мне ответить на эти вопросы.
Заранее спасибо.
volvo
1.
Цитата
Найти сумму целых положительных чисел, кратных 3 и меньших 200

Код
var
i, s, n: integer;
begin
i := 0; s := 0; n := 0
repeat
  inc(s, i); inc(i, 3); inc(n)
until i > 200;
writeln('s = ', s, ' n = ', n)
end.


Цитата
Не понимаю, в чём проблема...
Все просто, вместо того, чтобы делить число на 3 (в строке if i/3=0 then ...) нужно вычислять остаток от деления числа на 3 (if (i mod 3)=0 then ...)

Кроме этого неясен смысл вот этих 2-х строк:
Код
writeln('number of elements is=',n);
readln(n); { <--- Зачем еще раз вводить N? }

Возможно имелось в виду просто ReadLn; ?
rov4
volvo,
cпасибо lol.gif за подсказку!
(Вот только i<200, a не i>200.)
volvo
rov4
Нет, как раз i>200 !!! Я же использую не цикл While а цикл Until - а в нем как только условие начинает выполняться - цикл заканчивается...

P.S. Я же говорил, что тестирую программы перед выкладыванием на форум. Неужели я бы не заметил ТАКОЙ ошибки...
rov4
volvo,
Извини, ты, безусловно, прав! Теперь у меня всё, наконец-то, получилось! Огро-о-омное спасибо!!! :flowers:
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.