Часовой пояс: UTC + 3 часа




Куратор(ы):   Lord_of_Darkness   



Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 985 • Страница 7 из 50<  1 ... 4  5  6  7  8  9  10 ... 50  >
  Пред. тема | След. тема 
В случае проблем с отображением форума, отключите блокировщик рекламы
Автор Сообщение
 
Прилепленное (важное) сообщение

Убедительная просьба ко всем, кто выкладывает исходники:
1. Обязательно пользуйтесь тэгом code (иначе очень трудно читать)
2. Старайтесь делать отступы

Если вы хотите чтобы вам помогли в написании программы, внятно излагайте задание!

Прежде чем задать вопрос, воспользуйтесь учебником


Возможно, что нужная вам программа уже написана, поэтому советую просмотреть список здесь и здесь

Отредактировано куратором: Lord_of_Darkness. Дата: 07.07.2006 19:36



Партнер
 

Куратор темы
Статус: Не в сети
Регистрация: 03.01.2004
Откуда: Питер
MiHan@
Цитата:
Исходный список : элемент1>элемент2>элемент3>элемент1>....
обработанный: элемент3>элемент2>элемент1>элемент3>....

Хм, странные у вас задания. Ведь сказано, что список цикличный, двухсвязный, т.е. можно и в лево и в право по нему идти, так смысл его переворачивать???
ЗЫ лана, попозже сделаю.

_________________
Здесь так мало тех, с кем легко говорить,
Еще меньше тех, с кем не страшно молчать (c)


 

Member
Статус: Не в сети
Регистрация: 11.10.2005
Откуда: Самара
Жду

_________________
Все видюхи не протестируешь, но к этому надо стремиться.
http://people.overclockers.ru/Mihanik


 

Куратор темы
Статус: Не в сети
Регистрация: 03.01.2004
Откуда: Питер
MiHan@ Дождался ;)
Код:
uses crt;
type
  TPtr  = ^TElem;
  TElem = record
     Inf  : Real; {Inf может быть любого типа}
     LinkLeft : TPtr;
     LinkRight : TPtr;
  end;
const k=10;
var
  BegL, EndL, BegL2, EndL2, P, P2, Pk : TPtr;
  Value : Real;
  i : byte;
procedure OutputList(k:byte);
begin
  P:=BegL;
  i:=0;
  while (i<k) and (P<>nil) do
  begin
    writeln('Value= ',P^.Inf:6:2);
    P:=P^.LinkLeft;
    i:=i+1;
  end;
end;
procedure OutputList2(k:byte);
begin
  P:=BegL2;
  i:=0;
  while (i<k) and (P<>nil) do
  begin
    writeln('Value= ',P^.Inf:6:2);
    P:=P^.LinkLeft;
    i:=i+1;
  end;
end;
begin
  clrscr;
{ Создание первого списка }
  BegL := nil;
  EndL := nil;
  Pk:=nil;
  for i:=1 to k do
  begin
    New(P);
    P^.Inf:=i;
    P^.LinkLeft:=nil;
    if EndL = nil then
    begin
      BegL := P;
    end
    else
    begin
      EndL^.LinkLeft := P;
      P^.LinkRight:=Pk;
    end;
    EndL:=P;
    Pk:=P;
  end;
  P^.LinkLeft:=BegL^.LinkLeft;
  P:=BegL;
  P^.LinkRight:=EndL;
{ Создание второго списка и заполнение
его элементами первого в обратном порядке. }
  BegL2 := nil;
  EndL2 := nil;
  Pk:=nil;
  P2:=EndL;
  for i:=1 to k do
  begin
    New(P);
    P^.Inf:=P2^.Inf;
    P^.LinkLeft:=nil;
    if EndL2 = nil then
    begin
      BegL2 := P;
    end
    else
    begin
      EndL2^.LinkLeft := P;
      P^.LinkRight:=Pk;
    end;
    EndL2:=P;
    Pk:=P;
    P2:=P2^.LinkRight;
  end;
  P^.LinkLeft:=BegL2^.LinkLeft;
  P:=BegL2;
  P^.LinkRight:=EndL2;

  writeln('Первоначальный список:');
  OutputList(k);
  writeln;
  writeln('Обращенный список:');
  OutputList2(k);

{ Удаление первого списка }
 P:=BegL;
 for i:=1 to k do
 begin
  P:=P^.LinkLeft;
  Dispose(BegL);
  BegL:=P;
 end;
{ Удаление второго списка }
 P2:=BegL2;
 for i:=1 to k do
 begin
  P2:=P2^.LinkLeft;
  Dispose(BegL2);
  BegL2:=P2;
 end;

  readln;
end.


ЗЫ Убери в первой Dispose(EndL2); и Dispose(EndL); вообще. Они там не нужны.
ЗЫ ЗЫ подправлю щас текст первой лабы.

_________________
Здесь так мало тех, с кем легко говорить,
Еще меньше тех, с кем не страшно молчать (c)


Последний раз редактировалось Lord_of_Darkness 13.10.2005 0:25, всего редактировалось 1 раз.

 

Member
Статус: Не в сети
Регистрация: 11.10.2005
Откуда: Самара
Lord_of_Darkness
спасибо за помощь! Завтра буду держать оборону, а именно показывать первую.

Добавлено спустя 3 минуты, 32 секунды:
А что там с первой ещё кроме "Dispose(EndL2); "?

_________________
Все видюхи не протестируешь, но к этому надо стремиться.
http://people.overclockers.ru/Mihanik


 

Куратор темы
Статус: Не в сети
Регистрация: 03.01.2004
Откуда: Питер
MiHan@ Все ок уже подправил (еще Dispose(EndL) надо удалить было). Просто эти элементы уже удалены.

_________________
Здесь так мало тех, с кем легко говорить,
Еще меньше тех, с кем не страшно молчать (c)


 

Member
Статус: Не в сети
Регистрация: 11.10.2005
Откуда: Самара
Lord_of_Darkness
Объясни назначение переменных BegL, EndL, P, P2, Pk, i

_________________
Все видюхи не протестируешь, но к этому надо стремиться.
http://people.overclockers.ru/Mihanik


 

Куратор темы
Статус: Не в сети
Регистрация: 03.01.2004
Откуда: Питер
MiHan@
BegL - указатель на начало списка (первого, а BegL2 - соответственно второго)
EndL - указатель на конец списка
P - временный указатель, используется для выделения памяти под новый элемент списка, а т.ж. как вспомогательный при "переворачивании" списка.
Pk - вспомогательный указатель, используется при "переворачивании" списка.
i - ну тут совсем просто, это счетчик.
(k - кол-во элементов списка)
Все ясно?

_________________
Здесь так мало тех, с кем легко говорить,
Еще меньше тех, с кем не страшно молчать (c)


 

Member
Статус: Не в сети
Регистрация: 11.10.2005
Откуда: Самара
Lord_of_Darkness писал(а):
begin
writeln('Value= ',P^.Inf:6:2);
P:=P^.LinkLeft;
i:=i+1;
end;

ты уверен, что i:=i+1 будет увеличивать i, а не присваивать каждый раз одно и то же значение+1 ?
мне кажется надо писать inc (i) или я не прав?

_________________
Все видюхи не протестируешь, но к этому надо стремиться.
http://people.overclockers.ru/Mihanik


 

Куратор темы
Статус: Не в сети
Регистрация: 03.01.2004
Откуда: Питер
MiHan@
Цитата:
i:=i+1

и
Цитата:
inc (i)

одно и тоже. Уж поверь моему опыту ;)
Вообще то присваивание идет с права на лево, т.е. сначала к i прибавиться единица, а уже после полученное значение буде занесено в переменную i.
ЗЫ забыл про P2 написать, его назначение такое же как и Pk.

_________________
Здесь так мало тех, с кем легко говорить,
Еще меньше тех, с кем не страшно молчать (c)


 

Member
Статус: Не в сети
Регистрация: 11.10.2005
Откуда: Самара
Lord_of_Darkness писал(а):
Уж поверь моему опыту

Верю :) :beer:

_________________
Все видюхи не протестируешь, но к этому надо стремиться.
http://people.overclockers.ru/Mihanik


 

Member
Статус: Не в сети
Регистрация: 10.03.2003
Откуда: Россия, Моск...
Никак не соображу, как при помощи интеративного цикла с постусловием (repeat...until) посчитать такую сумму:

x^4k, k=(0;беск)


 

Куратор темы
Статус: Не в сети
Регистрация: 03.01.2004
Откуда: Питер
m2 А x в каких пределах изменяется и по какому условию вычисление завершается? До бесконечности то полюбому не посчитаешь. Если есть мат. формула - то лучше приведи ее, иначе трудно понять, что именно нужно.

_________________
Здесь так мало тех, с кем легко говорить,
Еще меньше тех, с кем не страшно молчать (c)


 

Member
Статус: Не в сети
Регистрация: 10.03.2003
Откуда: Россия, Моск...
нужно посчитать алгебраическую сумму выражения,с точностью Е. X<>0, E>0

(((-1)^k)*(4^(4k+3)))/((2k+1)!*(4k+3)),

вот...


 

Куратор темы
Статус: Не в сети
Регистрация: 03.01.2004
Откуда: Питер
m2
Примерно так выглядеть будет.
Код:
uses crt;
function stepen(num: real; step: integer):extended;
var
  tmp: extended;
  i: integer;
begin
  if step = 0 then
    stepen:=1
  else
  begin
    tmp:=1;
    for i:=1 to step do
      tmp:=tmp*num;
    stepen:=tmp;
  end;
end;

function factorial(num: integer): extended;
var
  tmp : extended;
  i: integer;
begin
  if num = 0 then
    factorial:=1
  else
  begin
    tmp:=1;
    for i:=1 to num do
      tmp:=tmp*i;
    factorial:=tmp;
  end;
end;

var
  sum, E, x: extended;
  k: integer;
begin
  clrscr;
  E:=1E-5;
  sum:=0;
  k:=0;
  repeat
    x:=(stepen(-1,k)*stepen(4,4*k+3))/(factorial(2*k+1)*(4*k+3));
    sum:=sum+x;
    inc(k);
  until abs(x) <= E;
  writeln('x = ',x);
  writeln('sum = ',sum);
  readln;
end.

Можно без доп. функций сделать для экономии памяти, т.е. вычислять степень и факториал по шагам и на каждом шаге выполнять деление. Правда делать в таком духе уже вломак. (Если интересно - можешь посмотреть в помощи по домашним и курсовым, я там именно так прогу делал для Gektor-2k )

_________________
Здесь так мало тех, с кем легко говорить,
Еще меньше тех, с кем не страшно молчать (c)


 

Member
Статус: Не в сети
Регистрация: 10.03.2003
Откуда: Россия, Моск...
Lord_of_Darkness
спасибо, сегодня в универе сделал, но подругому.

Написать?


 

Куратор темы
Статус: Не в сети
Регистрация: 03.01.2004
Откуда: Питер
m2 Как хочешь. Но для логического завершения стОит :)

_________________
Здесь так мало тех, с кем легко говорить,
Еще меньше тех, с кем не страшно молчать (c)


 

Заблокирован
Заблокирован
Статус: Не в сети
Регистрация: 22.10.2005
Откуда: driverpack.ru
SOS : вот у меня есть массив , как узнать ascii код елемента массива ?

_________________
Новая дурь - ctrl+v. ... Вставляет ...
-=Алкан AMD OverClan =-


 

Member
Статус: Не в сети
Регистрация: 21.10.2003
Откуда: Брест
Фото: 47
.THEPRODUCT вот
Chr (function)
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
Returns a character with a specified ordinal
number.

Declaration:
function Chr(X: Byte): Char;

Target:
Windows, Real, Protected

Remarks:
Chr returns the character with the ordinal
value (ASCII value) of the byte-type
expression, X.

Раз это возаращает символ из таблицы по номеру, то должно быть ORD будет делать наоборот:
Ord (function)
▀▀▀▀▀▀▀▀▀▀▀▀▀▀
Returns the ordinal value of an ordinal-type
expression.

Declaration:
function Ord(X): Longint;

Target:
Windows, Real, Protected

Remarks:
X is an ordinal-type expression. The result is
of type Longint and its value is the
ordinality of X.

см в хелпе пример по ord.. :)

_________________
А ещё недавно ждали AMD Steamroller на AM3+


Последний раз редактировалось AlexZerg 13.11.2005 22:26, всего редактировалось 2 раз(а).

 

Member
Статус: Не в сети
Регистрация: 10.03.2003
Откуда: Россия, Моск...
Код:
Program Pr_6;
  Var X,E,Y,T,P,Q : REAL;
                      K : INTEGER;
Begin {Programmu sostavil Chuvstvin M.B; PT0502}
  Write('X=');
  Readln(X);
  Write('E=');
  Readln(E);
  K:=0;
  Y:=1;
  T:=1;
  P:=X*X*X/3;
  Q:=X*X*X;
  Repeat
    K:=K+1;
    Y:=-Y;
    Q:=Q*X*X*X*X;
    T:=T*(2*K+1)*(2*K);
    P:=P+(Y*K)/(T*(4*K+3))
  Until Abs(P)<E;
  Writeln('P=',P);
  Write('Rezultati poluchil Chuvstvin M.B; PT0502');
  Readln
End.

вотъ...


 

Куратор темы
Статус: Не в сети
Регистрация: 03.01.2004
Откуда: Питер
m2 Мдя, у нас поразному сделано, но в принципе похоже. Просто я задание немножко подругому понял + доп. функции отдельно написал, а ты прямо в проге считаешь.

_________________
Здесь так мало тех, с кем легко говорить,
Еще меньше тех, с кем не страшно молчать (c)


Показать сообщения за:  Поле сортировки  
Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 985 • Страница 7 из 50<  1 ... 4  5  6  7  8  9  10 ... 50  >
-

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB | Kolobok smiles © Aiwan