Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
0 / 0 / 0
Регистрация: 11.12.2014
Сообщений: 3

Суммировать до тех пор, пока очередное слагаемое по модулю не станет меньше eps

15.12.2014, 20:19. Показов 2322. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Текст задачи такой: Даны ε, массив b(12). Вычислить

https://www.cyberforum.ru/cgi-bin/latex.cgi?M=\frac{\sqrt{x^3+1}}{\cos x+2^2}+\frac{\sqrt{x^3+3}}{\cos x+4^2}+\frac{\sqrt{x^3+5}}{\cos x+6^2}+\frac{\sqrt{x^3+7}}{\cos x+8^2}+...

где x - наименьший элемент массива b с четными индексами. Суммировать до тех пор, пока очередное слагаемое по модулю не станет меньше ε.
Вычисление суммы оформить как функцию. Все необходимые данные для функции должны передаваться ей в качестве параметров. Глобальных переменных не использовать.

Попытался написать программу но в ней есть много ошибок.Поясните мне пожалуйста как через функцию все это сделать. Спасибо.

Добавлено через 1 минуту

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
program kursach;
type mass=array[1..12] of real;
var b:mass;
function sum(x:real;var eps:real):real;
 
  var p,t,i:integer; l,m:real;
 begin
 writeln('vvedite eps');
  read(eps);
  p:=1;
  t:=2;
  m:=0;
  repeat
  l:=sqrt(x*x*x+p)/(cos(x)+t*t);
  p:=p+2;
  t:=t+2;
  m:=m+l;
 until abs(l)<eps;
 sum:=m;
  writeln('vvedite 12 chisel');
   for i:=1 to 12 do
    read(b[i]);
    for i:=2 to 12 do
    begin
    x:=b[2];
    if (i mod 2=0) and (b[i]<x) then
    x:=b[i];
     end;
     
  writeln('sum=',sum);
 end;
 begin
 end.
Добавлено через 4 часа 48 минут
Вот переделал прогу теперь запускается проверьте пожалуйста.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
program kursovaya;
const n=12;
var b:array [1..n] of real;
i:integer; M,min,e:real;
Function Summa(x,j:real):real;
var G,F:real;
m,n:integer;
begin
m:=1;
n:=2;
repeat
F:=sqrt(x*x*x+m)/(cos(x)+n*n);
m:=m+2;
n:=n+2;
G:=G+F;
until abs(F)<E;
Summa:=G;
end;
 
begin
Writeln ('Vvedite 12 chisel');
for i:=1 to n do
readln (B[i]);
writeln ('Vvedite E');
readln (e);
min:=B[1];
for i:=1 to n do begin
if i mod 2=0 then 
if B[i]<min then
min:=B[i];
end;
M:=Summa (e,min);
writeln ('Summa ravna ', M);
end.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
15.12.2014, 20:19
Ответы с готовыми решениями:

Увеличивать введенное число в два раза до тех пор, пока оно не станет больше 1000
1 задача:Ввести число a(0&lt;a&lt;10).Увеличивать его в два раза до тех пор,пока оно не станет больше 1000.Вывести на экран полученное...

Суммировать числа до тех пор, пока не останется 1 число
Почему не работает, и не говорите что 12 строчка. Pascal пишет что там ошибка но ; я поставил program p1; var st,st1:string; ...

Прибавлять число к самому себе до тех пор пока оно не станет больше 20
Прибавлять число к самому себе до тех пор пока оно не станет больше 20. Использовать цикл while.

1
Модератор
10448 / 5739 / 3407
Регистрация: 17.08.2012
Сообщений: 17,460
16.12.2014, 22:33
Почти правильно.

В функции напутали с параметрами: не используете j, вместо неё используете глобальную переменную e, что противоречит заданию.
Локальная переменная G не инициализирована.
Ввод массива сделан абы как.
Нет проверки корректности ввода для ε.
Зачем пробегать по всем элементам массива, если достаточно только по чётным.
1, 3, 5,... это 2n-1; 2, 4, 6,... это 2n.

Вот, подрихтовал малость:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
Function Summa(x, j: real): real;
var G, F: real;
    n: integer;
begin
  n := 1;
  G := 0;
  repeat
    F := sqrt(x * x * x + 2 * n - 1)/(cos(x)+ 4 * n * n);
    inc(n);
    G := G + F
  until abs(F) < j;
  Summa := G
end;
 
const n = 12;
 
var b: array [1..n] of real;
    i: integer;
    min, e: real;
 
begin
  Writeln('Enter array B:');
  for i := 1 to n do
    begin
      write('B(', i:2, ') = ');
      readln(B[i]);
    end;
  repeat
    write('eps = ');
    readln(e);
    if e <= 0 then writeln('Error: eps <= 0, reenter.')
  until e > 0;
  min:=B[2];
  for i := 2 to n div 2 do if B[2 * i] < min then min := B[2 * i];
  writeln ('Sum = ', Summa(min, e));
  readln
end.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
16.12.2014, 22:33
Помогаю со студенческими работами здесь

Цикл с предусловием выполняется до тех пор, пока условие выполнения не станет ложным
Цикл с предусловием выполняется до тех пор, пока условие выполнения не станет ложным, и продолжается, если условие истинно program...

While и repeat. Вводить числа до тех пор пока произведение четных не станет больше 20
вводить числа до тех пор пока произведение четных не станет больше 20. Решить двумя способами, на while и на repeat Заранее спасибо!!

Игра продолжается до тех пор, пока количество нулей в двоичной записи числа не станет равно k
Игра состоит в следующем: 1 игрок записывает два числа n и k,и игроки по очереди: 1, 2 и 3 умножают число n на 2. Игра продолжается до тех...

Вводить числа до тех пор, пока их сумма не станет больше 100. Эту сумму и число слагаемых вывести на экран
1)Составить программу, которая вводит с клавиатуры целые числа до тех пор, пока их сумма не станет больше 100. Эту сумму и число слагаемых...

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru