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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.01.2012, 22:15   #1
Natali.ru
Новичок
Джуниор
 
Регистрация: 17.01.2012
Сообщений: 4
По умолчанию Ближний ближнему

Доброй ночи, помогите, пожалуйста, написать програмный код к следующей задаче: Запросив у пользователя степень полинома, сгенерировать случайным образом целочисленные коэффициенты полинома (в диапазоне -5..+5) и вывести полином так, чтобы он смотрелся "нормально" с точки зрения записи "от руки" (не должно быть элементов вида: ...+ -2 х^2...; 1 x^3 +...; ...+ 0 x +... и т.п.). Исчислить и вывести "нормально" производную полинома. Помогите с кодом или подскажите где смогут помочь. Возможна оплата
Natali.ru вне форума Ответить с цитированием
Старый 17.01.2012, 23:44   #2
whatever
a.k.a. Skull
Форумчанин
 
Регистрация: 17.11.2009
Сообщений: 963
По умолчанию

Код:
program Project1;

{$APPTYPE CONSOLE}

uses
  SysUtils;
var
  n,i,sign:integer;
  m:integer;
  S:string;
begin
  S:='';
  readln(n);
  randomize;
  for i:=n downto 2 do
    begin
      m:=random(5);
      if m<>0 then
        begin
          sign:=random(2);
          if sign=0 then
            begin
              m:=-m;
              if abs(m)<>1 then
                S:=S+IntToStr(m)+'x^'+IntToStr(i)
              else
                S:=S+'-x^'+IntToStr(i)
            end
          else
            if m<>1 then
              S:=S+'+'+IntToStr(m)+'x^'+IntToStr(i)
            else
              S:=S+'+x^'+IntToStr(i)
        end;
    end;
  sign:=random(2);
  m:=random(5);
  if m>0 then
    if sign=0 then
      S:=S+'-'+IntToStr(m)+'x'
    else
      S:=S+'+'+IntToStr(m)+'x';
  sign:=random(2);
  if sign=0 then
    S:=S+'-'+IntToStr(random(5)+1)
  else
    S:=S+'+'+IntToStr(random(5)+1);
  delete(S,1,1);
  writeln(s);
  readln;
end.
Опять писал на коленке перед сном, но вроде верно.
Все тривиальное просто

Последний раз редактировалось whatever; 17.01.2012 в 23:53.
whatever вне форума Ответить с цитированием
Старый 18.01.2012, 00:15   #3
Natali.ru
Новичок
Джуниор
 
Регистрация: 17.01.2012
Сообщений: 4
По умолчанию Спасибо добрый молодец))

На какие весы? я тут просто новенькая и не знаю что где) Программа работает замечательно) только не вычисляет производную, ну надеюсь преподавателю и так пойдет)
Natali.ru вне форума Ответить с цитированием
Старый 18.01.2012, 09:25   #4
whatever
a.k.a. Skull
Форумчанин
 
Регистрация: 17.11.2009
Сообщений: 963
По умолчанию

Про производную забыл, 4 утра было :D. Вечером гляну, там не сильно много доднлывать.
Все тривиальное просто
whatever вне форума Ответить с цитированием
Старый 18.01.2012, 09:30   #5
Vanta11a
Lawful Evil
Участник клуба
 
Аватар для Vanta11a
 
Регистрация: 13.05.2008
Сообщений: 1,208
По умолчанию

Ну не только про производную. Еще
Цитата:
(не должно быть элементов вида: ...+ -2 х^2...; 1 x^3 +...; ...+ 0 x +... и т.п.).
Поддерживаю, ночью писать код вредно, но гораздо вреднее читать ТЗ =)

Или я не так код прочитал?
Алгоритм - бесплатен. Поиск багов - бесплатен. Реализация алгоритма - за отдельную плату.
На форуме помогают советами и объясняют, а не пишут на халяву программы, лабы, курсачи и т.д. (c)

Последний раз редактировалось Vanta11a; 18.01.2012 в 09:32.
Vanta11a вне форума Ответить с цитированием
Старый 18.01.2012, 10:59   #6
Natali.ru
Новичок
Джуниор
 
Регистрация: 17.01.2012
Сообщений: 4
По умолчанию

Ну х^2 может быть, это коэффициенты должны выглядеть нормально
Natali.ru вне форума Ответить с цитированием
Старый 18.01.2012, 12:26   #7
whatever
a.k.a. Skull
Форумчанин
 
Регистрация: 17.11.2009
Сообщений: 963
По умолчанию

Цитата:
Поддерживаю, ночью писать код вредно, но гораздо вреднее читать ТЗ =)
Цитата:
не должно быть элементов вида: ...+ -2 х^2...; 1 x^3 +...; ...+ 0 x +... и т.п.
+ -2 х^2 имелся ввиду плюс минус;
1 x^3 + коэфицент 1 перед x
+ 0 x + элемент с коэфицентом ноль

У меня в проге этого нет, так что, думаю, я все верно написл.
P.S. ночью писать код полезно, если спать неохота, никто не отвлекает
Все тривиальное просто
whatever вне форума Ответить с цитированием
Старый 18.01.2012, 12:47   #8
Natali.ru
Новичок
Джуниор
 
Регистрация: 17.01.2012
Сообщений: 4
По умолчанию

Как организовать нахождение производной от случайного полинома
Natali.ru вне форума Ответить с цитированием
Старый 18.01.2012, 12:52   #9
whatever
a.k.a. Skull
Форумчанин
 
Регистрация: 17.11.2009
Сообщений: 963
По умолчанию

Код:
program Project1;

{$APPTYPE CONSOLE}

uses
  SysUtils;
type
  mass=array of integer;
procedure FindPR(var m:mass);
var
  i:integer;
  S:string;
begin
  S:='';
  for i:=high(m) downto 3 do
    if m[i]<>0 then
      begin
        m[i]:=m[i]*i;
          if m[i]>0 then
            S:=S+'+'+IntToStr(m[i])+'x^'+IntToStr(i-1)
          else
            S:=S+IntToStr(m[i])+'x^'+IntToStr(i-1);
      end;
    if m[2]>0 then
      begin
        m[2]:=m[2]*2;
        S:=S+'+'+IntToStr(m[2])+'x';
      end;
    if m[2]<0 then
      begin
        m[2]:=m[2]*2;
        S:=S+IntToStr(m[2])+'x';
      end;
    if m[1]>0 then
      S:=S+'+'+IntToStr(m[1]);
    if m[1]<0 then
      S:=S+IntToStr(m[1]);
    if s[1]<>'-' then delete(S,1,1);
    writeln(S);
end;

var
  n,i,sign:integer;
  m:mass;
  S:string;
begin
  S:='';
  readln(n);
  setlength(m,n);
  randomize;
  for i:=n-1 downto 2 do
    begin
      m[i]:=random(5);
      if m[i]<>0 then
        begin
          sign:=random(2);
          if sign=0 then
            begin
              m[i]:=-m[i];
              if abs(m[i])<>1 then
                S:=S+IntToStr(m[i])+'x^'+IntToStr(i)
              else
                S:=S+'-x^'+IntToStr(i)
            end
          else
            if m[i]<>1 then
              S:=S+'+'+IntToStr(m[i])+'x^'+IntToStr(i)
            else
              S:=S+'+x^'+IntToStr(i)
        end;
    end;
  sign:=random(2);
  m[1]:=random(5);
  if m[1]>0 then
    if sign=0 then
      begin
        m[1]:=-m[1];
        if abs(m[1])<>1 then
          S:=S+IntToStr(m[i])+'x'
        else
          S:=S+'-x';
      end
    else
      if m[1]<>1 then
        S:=S+'+'+IntToStr(m[i])+'x'
      else
        S:=S+'+x';
  sign:=random(2);
  if sign=0 then
    S:=S+'-'+IntToStr(random(5)+1)
  else
    S:=S+'+'+IntToStr(random(5)+1);
  if S[1]<>'-' then delete(S,1,1);
  writeln('polinom:');
  writeln(s);
  writeln('proizvodnaya:');
  FindPR(m);
  readln;
end.
Проверяй. Я ее изначально под массив писал, потом удалил за ненадобностью. Оказалось надо :D

@^%#$@^!!! Забыл еще одну проверку, +1х появляется. Сейчас поправлю.

Update: Вот теперь поправил.
Update2: Еще раз поравил. Кажется без косяков, но лучше посидеть и потыкать, может еще что забыл
Все тривиальное просто

Последний раз редактировалось whatever; 18.01.2012 в 13:03.
whatever вне форума Ответить с цитированием
Старый 18.01.2012, 16:11   #10
Mad_Cat
Made In USSR!
Старожил
 
Аватар для Mad_Cat
 
Регистрация: 01.09.2010
Сообщений: 3,657
По умолчанию

Цитата:
Я ее изначально под массив писал, потом удалил за ненадобностью. Оказалось надо
Можно и без него
вот мой вариант
Код:
uses
  SysUtils;
 var  n:integer;
  i:integer;
  F,Fs,buf:string;
  C:Integer;
begin
  write('MAX N=');Readln(n);
  randomize;
  For i:=n downto 0 do
    begin
      buf:='';
      c:=Random(11)-5;
      if abs(c)>1 then buf:=buf+intTostr(c);
      if c=-1 then buf:=buf+'-';
      if (C<>0) and (i>0) then buf:=buf+'x';
      if (C<>0) and (i>1) then buf:=buf+'^'+inttostr(i);
      if (C>0) and (buf<>'') then F:=f+'+'+buf
        else F:=f+buf;
      buf:='';
      if abs(c*i)>1 then buf:=buf+intTostr(c*i);
      if (abs(C*i)>0)and (i>1) then buf:=buf+'x';
      if (abs(C*i)<>0) and (i>2) then buf:=buf+'^'+inttostr(i-1);
      if (C>0) and (buf<>'') then Fs:=fs+'+'+buf
        else Fs:=fs+buf;
    end;
  if f[1]='+' then delete(f,1,1);
  if fs[1]='+' then delete(fs,1,1);
  Writeln('F(x)='+f);
  Writeln('F''(x)='+Fs);
  Readln;
end.
"...В жизни я встречал друзей и врагов.В жизни много всего перевидал.Солнце тело мое жгло, ветер волосы трепал,но я смысла жизни так и не узнал..."
(c) Юрий Клинских aka "Хой"

Последний раз редактировалось Mad_Cat; 18.01.2012 в 16:18.
Mad_Cat вне форума Ответить с цитированием
Ответ


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