Форум программистов, компьютерный форум, киберфорум
PascalABC.NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 08.09.2018
Сообщений: 98

Вычисление функции, двусвязный список

18.03.2019, 14:14. Показов 369. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Даны натуральное число n, действительные числа x[1] ...x[n]. Вычислить:

(x[1] + x[2] + 2x[n])(x[2] + x[3] + 2x[x-1])... (x[n-1] + x[n] + 2x[2]).

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

Код:
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
 type
 
 PUzel = ^S;
 
 S = record
 x: real;
 next, pred: PUzel;
 end;
 
 var head: PUzel; n: integer;
 
 {вставка узла p в голову f}
 procedure AddFirst(var f, p: PUzel);
 begin
  p^.next := f;
   if (f <> nil) then f^.pred := p;
  f := p;
 end;
 
 {вставка узла a после заданного узла old}
 procedure AddAfter(var old: PUzel; a: PUzel);
 begin
  a^.next := old^.next;
   if (a^.next <> nil) then a^.next^.pred := a;
  a^.pred := old; 
 end;
 
 {создание списка}
 procedure BuildSpisok(var f: PUzel; var n: integer);
  var a {указатель на создаваемый узел},
  d {указатель на хвост}: PUzel;
  i: integer; y: real;
 begin
  f := nil;
  new(a);
  write('введите n ');
  readln(n);
  for i := 1 to n do 
   begin
   write('введите число ');
    readln(y);
    a^.x := y;
    if (f = nil) then 
    begin
    AddFirst(f, a); d := f;
    end else
    begin
    AddAfter(d, a); d := a;
    end;
   end;
 end;
Добавлено через 5 часов 11 минут
в процедуре AddAfter забыл добавить строчку old^.next := a;
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
18.03.2019, 14:14
Ответы с готовыми решениями:

Задача на двусвязный список
Доброго времени суток форумчане. Помогите пожалуйста написать код по заданию: Даны указатели P1 и P2 на первый и последний элементы...

Создать циклический двусвязный список
у меня задача на двусвязные циклические списки. я вот задал, как мне кажется, двусвязный список: type ukazat=^s; s=record ...

Линейный двусвязный список по типу стека
Составить программу, которая вводит числа, организует из них линейный двусвязный список по типу стека, а затем меняет местами первый и...

5
 Аватар для JuriiMW
5095 / 2661 / 2355
Регистрация: 10.12.2014
Сообщений: 10,059
18.03.2019, 14:39
Чё-то у вас слишком много букв!

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
38
39
40
41
type
  tList = class
    v : Real;
    p, x : tList;
    
    constructor (n : Integer);
      begin v := ReadLnReal($'Введите {n} значение:'); p := nil; x := nil; end;
      
    constructor (p_ : tList; n : Integer);
      begin v := ReadLnReal($'Введите {n} значение:'); p := p_; x := nil; end;
     
  end;
  
function BuildList(n : Integer) : tList;
begin
  Result := New tList(1); var cur := Result;
  for var i := 2 to n do begin cur.x := New tList(cur, i); cur := cur.x; end;
end;
  
procedure OutList(List : tList; msg : String := '');
begin
  msg.Print; while List <> nil do begin List.v.Print; List := List.x; end; WriteLn;
end;
 
function CalcList(List : tList) : Real;
begin
  Result := 1;
  var(x1,x2,x3):=(List,List.x,List); while x3.x <> nil do x3 := x3.x;
  while x2 <> nil do
    begin
      Result *= (x1.v + x2.v + 2*x3.v);
      (x1,x2,x3) := (x1.x,x2.x,x3.p);
    end;
end;
 
begin
  var n := ReadInteger('n ='); if n < 2 then begin 'n не менее 2!'.Println; Halt; end;
  var List := BuildList(n);
  OutList(List, 'Введён список:');
  $'Результат = {CalcList(List)}'.Println;
end.
0
 Аватар для Sun Serega
2355 / 1458 / 526
Регистрация: 07.04.2017
Сообщений: 4,798
18.03.2019, 14:40
Зачем вы свои велосипеды делаете, ещё и кривые, если есть встроенный тип двусвязного списка:
Pascal
1
2
3
4
5
6
7
8
9
10
11
begin
  var l := new LinkedList<integer>;
  
  loop ReadInteger do
    l.AddLast(ReadInteger);
  
  l.Pairwise
  .Pairwise((t1,t2)->real(t1[0]+t1[1]+t2[1]))
  .Product.Println;
  
end.
0
 Аватар для JuriiMW
5095 / 2661 / 2355
Регистрация: 10.12.2014
Сообщений: 10,059
18.03.2019, 14:45
Тем более, без основного модуля!

Добавлено через 3 минуты
Sun Serega, у вас не по формуле ТС.

Добавлено через 1 минуту
У него для n=5 и {1, 2, 3, 4, 5} формула такая:

(1+2+2*5)*(2+3+2*4)*(3+4+2*3)*(4+5+2*2)
0
 Аватар для Sun Serega
2355 / 1458 / 526
Регистрация: 07.04.2017
Сообщений: 4,798
18.03.2019, 14:51
А, точно... Тогда через стандартные типы так:
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
function CalcExpr(l: LinkedList<integer>): BigInteger;
begin
  Result := 1;
  var n1 := l.First;
  var n2 := l.Last;
  loop l.Count-1 do
  begin
    var curr: BigInteger;
    
    curr += n1.Value;
    n1 := n1.Next;
    curr += n1.Value;
    curr += 2*n2.Value;
    n2 := n2.Previous;
    
    Result *= curr;
  end;
end;
 
begin
  var l := new LinkedList<integer>;
  
  loop ReadInteger do
    l.AddLast(ReadInteger);
  
  CalcExpr(l).Println;
end.
0
0 / 0 / 0
Регистрация: 08.09.2018
Сообщений: 98
18.03.2019, 14:54  [ТС]
я только разбираюсь в списках, эти процедуры дал преподаватель. можете реализовать именно с ними?
(надо было мне в общем разделе паскаля создать тему)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
18.03.2019, 14:54
Помогаю со студенческими работами здесь

Используя линейный двусвязный список, найти введённый с клавиатуры символ
Используя линейный двусвязный список найти введённый с клавиатуры символ, вставить символ, введённый с клавиатуры, после найденного через 2...

Двусвязный список
Люди,срочно нужна помощь! Нужно написать операторы которые помогают вставить элемент перед указаным(первым) и удалить указаный...

двусвязный кольцевой список
нужно написать следующие процедуры: -перемещение по списку(стрелки) -включение нового узла(Ins) -Исключение узла(del) -очистка...

Двусвязный список и его реализация
Здравствуйте ! Столкнулся с такой проблемой - не могу разобраться в реализации двусвязного списка на языке Pascal . У меня стоит задача...

Обработка строки/Двусвязный список
Так звучит задание. Я не совсем понимаю, что от меня хотят. Загнать каждое слово в отдельный элемент списка? А смысл? Намного проще...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru