Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.10.2011, 12:22   #1
Svetlanaa
Новичок
Джуниор
 
Регистрация: 02.10.2011
Сообщений: 1
По умолчанию Задача на динамический тип данных

Многочлен с целыми коэффициентами можно представить в виде списка, причем если коэффициент равен 0, то соответствующее звено не включается в список. Нужно описать тип данных, соответствующий такому представлению многочленов и осуществить процедуру Slozh(P,Q,R), которая строит многочлен R - сумму многочленов Q и P. Многочлены Q и P произвольные.
Svetlanaa вне форума Ответить с цитированием
Старый 02.10.2011, 16:22   #2
JUDAS
фонатик DELPHI
Форумчанин
 
Аватар для JUDAS
 
Регистрация: 14.01.2008
Сообщений: 714
По умолчанию

Язык программирования ?
На паскале эта задача будет выглядеть приблизительно так:
Код:
program project8;
type
  TMnogochlen = record   // требуемая структура (пример)
    count : integer;   // число элементов
    Data : array of record
     index : string;    // индекс элемента (например Х1 Х2 и.т.п)
     value : double;  // коефициент
    end
  end;

// сложение с учётом поиска совпадения наименований одночленов (х1 х2 и.т.п)
// по условию, если 0 то одночлен пропускается
  procedure Slozh(P,Q : TMnogochlen; var R : TMnogochlen);
  var i,j : integer;
  begin
    for i:=0 to P.count-1 do
    begin
      for j:=0 to Q.count-1 do
      if P.Data[i].index = Q.Data[j].index then
      begin
       Q.Data[j].index := #0;
       SetLenGth(R.Data, LenGth(R.Data)+1);
       R.Data[High(R.Data)].value:= P.Data[i].value + Q.Data[j].value;
       R.Data[High(R.Data)].index:= P.Data[i].index;
       break;
      end;
    end;

     for i:=0 to Q.count-1 do
     if Q.Data[i].index<>#0 then
     begin
       SetLenGth(R.Data, LenGth(R.Data)+1);
       R.Data[High(R.Data)].value:= Q.Data[i].value;
       R.Data[High(R.Data)].index:= Q.Data[i].index;
       Q.Data[i].index := #0;
     end;
    R.Count:= LenGth(R.Data);
  end;

  var
    P,Q,R : TMnogochlen;
    i  : integer;
    V : double;
begin
  write('enter element count P '); read(P.count);
  for i:=0 to P.Count-1 do
  begin
   write(format('enter x%d value: ',[i+1])); read(V);
   if V<>0 then
   begin
    SetLenGth(P.Data, LenGth(P.Data)+1);
    P.Data[High(P.Data)].value:= V;
    P.Data[High(P.Data)].index:= 'x'+str(i+1);
   end;
  end;
  P.Count := LenGth(P.Data);

  write('enter element count Q '); read(Q.count);
  for i:=0 to Q.Count-1 do
  begin
   write(format('enter x%d value: ',[i+1])); read(V);
   if V<>0 then
   begin
    SetLenGth(Q.Data, LenGth(Q.Data)+1);
    Q.Data[High(Q.Data)].value:= V;
    Q.Data[High(Q.Data)].index:= 'x'+str(i+1);
   end;
  end;
  Q.Count := LenGth(Q.Data);

  Slozh(P,Q,R);
  for i:=0 to R.Count-1 do
  with R.data[i] do
  write('+'+format('+%.4f+%s',[value+index]);
  // чистим после себя "отходы"
  Finalize(Q.Data);
  Finalize(P.Data);
  Finalize(R.Data);
end.
95% сбоев и ошибок приложений, находится в полу метрах от монитора
JUDAS вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача на Pascale-тип Записи. описание, ввод и выбор данных PashaSoscov Паскаль, Turbo Pascal, PascalABC.NET 3 12.06.2011 10:23
задача на динамический массив Icecream Помощь студентам 3 31.05.2009 11:32
В Access есть тип данных "Счетчик".Есть ли подобный тип данных в MS Sql Server 2000? An_ton SQL, базы данных 5 16.01.2009 17:55
Ссылка на динамический диапазон данных NikolayGVB Microsoft Office Excel 2 13.01.2009 18:00
Задача на текстовый тип данных. Fedos Помощь студентам 15 30.01.2008 17:03