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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.09.2011, 17:58   #1
вася радугов
Форумчанин
 
Регистрация: 09.04.2011
Сообщений: 134
По умолчанию комментарии к программе

нужно написать комметарии к выделенным словам. преподу мои комментарии не понравились, сказал что они неправильные.
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
V, SecondV: TVector;
a,b : array [0..10] of integer;
i, N: integer;
R: double;
begin
 memo1.Lines.Clear;
Randomize;
  V:=TVector.Create;  SecondV:=TVector.Create;
  try     // Выполнить
    V.Length:=2; SecondV.Length:=2;
    for i:=0 to V.Length-1 do
    begin
      a[i]:=random(10);
      V[i]:=a[i];
    end;
    for i:=0 to SecondV.Length-1 do
     begin
      b[i]:=random(10);
      secondv[i]:=b[i];
     end;
    memo1.lines.Add('Координаты первого вектора');
    Memo1.Lines.add(V.AsString); 
    memo1.lines.Add('Координаты второго вектора');
    Memo1.Lines.add(SecondV.AsString);
    V.Add(SecondV);
    memo1.lines.Add('Сумма векторов');
    memo1.Lines.Add(V.AsString);
    n:=random(10);
    v.ReturnValues(a);
    v.Scalar(n);
    memo1.Lines.add('Произведение первого вектора на число '+inttostr(n));
    memo1.lines.Add(v.AsString);
    secondv.ReturnValues(b);
    secondv.Scalar(n);
    memo1.Lines.add('Произведение второго вектора на число '+inttostr(n));
    memo1.lines.Add(secondv.AsString);
    v.ReturnValues(a);
    secondv.ReturnValues(b);
    V.Product(secondv);
    memo1.lines.Add('Скалярное произведение векторов');
    Memo1.Lines.add(floattostr(v.fres));
   finally
    V.Free;   SecondV.Free;  
  end;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
memo1.lines.Clear;
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
close;
end;
end.
   private
    FValues: array of real;
    function GetLength:integer;  
    procedure SetLength(const Value: integer);     
    function GetValues(Index: integer):double;   
    procedure SetValues(Index: integer; const Value: double); 
    procedure CheckIndex(Index: integer);
   public
      FRes:double;
     constructor Create;
     function AsString: string;
     property Values[Index: integer]: double
               read GetValues Write SetValues; default;
     property Length: integer read GetLength write SetLength;
     procedure Add(const SecondVector: TVector); overload;
   
     procedure Scalar(Factor: integer); overload;

     procedure Product(const SecondVector: TVector); overload;
  
     procedure ReturnValues(a : array of integer); 
end;
implementation
constructor TVector.Create;
begin 
  System.SetLength(Fvalues, 1);     
end;
function TVector.AsString: string;
var i: integer;
begin
  Result := '(';
  for i:=0 to Length-1 do
  begin
    if i>0 then Result:= Result+' , ';
    Result:=Result+Format('%.2n',[Values[i]]);
  end;
  Result:=Result+')';
end;
function TVector.GetLength: integer;
begin
  Result:=System.Length(FValues);    
end;
function TVector.GetValues(Index: integer): double;
begin
  CheckIndex(Index);
  Result:=FValues[Index];
end;
procedure TVector.SetLength(const Value: integer);
begin
  if Value<1 then
   raise Exception.Create('Invalid vector length');
  System.SetLength(FValues, Value);
end;
procedure TVector.SetValues(Index: integer; const Value: double);
begin
  CheckIndex(Index);
  FValues[Index]:=Value;
end;
procedure TVector.CheckIndex(Index: integer);
begin
  if (Index>=0) and (Index>=Length) then
    raise Exception.Create('Index out of the bounds');
end;
Procedure TVector.Product(const SecondVector: TVector);
var i: integer;
Begin
fres:=0;
   For i:=0 to SecondVector.Length-1 do
   begin
   Fvalues[I]:= self[i] * SecondVector[i];
   fres:=fres+fvalues[i];
     end;
 end;
Procedure TVector.Scalar(factor : integer);
var i: integer;
Begin
   For i:=0 to self.Length-1 do
    Fvalues[I]:= Self[i] * factor;
 end;
Procedure TVector.Add(const SecondVector: TVector);
var i: integer;
Begin
   For i:=0 to SecondVector.Length-1 do
     Fvalues[I]:= Self[i] + SecondVector[i];
 end;
Procedure TVector.ReturnValues(a : array of integer);
var i: integer;
Begin
   For i:=0 to self.Length-1 do
     Fvalues[I]:= a[i];
end;
end.

Последний раз редактировалось Stilet; 27.09.2011 в 18:03.
вася радугов вне форума Ответить с цитированием
Старый 27.09.2011, 18:02   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Цитата:
преподу мои комментарии не понравились, сказал что они неправильные
А где они?

Кстати, программа-то что вообще делает?

И используйте тег [CODE] (значок #) для сохранения форматирования и подсветки кода в сообщении. Кнопка Правка справа снизу.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 27.09.2011, 18:19   #3
вася радугов
Форумчанин
 
Регистрация: 09.04.2011
Сообщений: 134
По умолчанию

нужно создать класс TVector и написать для него методы(процедуры и функции) сложения векторов(TVector.Add(const SecondVector: TVector)); умножения вектора на значение (TVector. Product(Factorouble)); получения скалярного произведения векторов.
программа с моими комментариями. строки,которые я не знаю как комментировать помечены ?????
...
Код:
//Создание экземпляров класса
  V:=TVector.Create;  SecondV:=TVector.Create;
  try     // Выполнить
   ??? V.Length:=2; SecondV.Length:=2;
    for i:=0 to V.Length-1 do
    begin
      a[i]:=random(10);
      V[i]:=a[i];
    end;
    for i:=0 to SecondV.Length-1 do
     begin
      b[i]:=random(10);
     ??? secondv[i]:=b[i];
     end;
    memo1.lines.Add('Координаты первого вектора');
    Memo1.Lines.add(V.AsString); // Выводим в Меmoмассив V
    memo1.lines.Add('Координаты второго вектора');
    Memo1.Lines.add(SecondV.AsString);// Выводим в  Memo массив SecondV
   ??? V.Add(SecondV);
    memo1.lines.Add('Сумма векторов');
    memo1.Lines.Add(V.AsString);
    n:=random(10);//число на которое умножаем вектор
    ??v.ReturnValues(a);
    ???v.Scalar(n);
    memo1.Lines.add('Произведение первого вектора на число '+inttostr(n));
    memo1.lines.Add(v.AsString);
   ??? secondv.ReturnValues(b);
   ??? secondv.Scalar(n);
    memo1.Lines.add('Произведение второго вектора на число '+inttostr(n));
    memo1.lines.Add(secondv.AsString);
    v.ReturnValues(a);
    ???secondv.ReturnValues(b);
    V.Product(secondv);
    memo1.lines.Add('Скалярное произведение векторов');
    Memo1.Lines.add(floattostr(v.fres));
   finally
    V.Free;   SecondV.Free;  
  end;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
memo1.lines.Clear;
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
close;
end;
end.
type
 TVector = class             // поле координат вектора
   private
    FValues: array of real;
    function GetLength:integer;  // получить длину вектора
    procedure SetLength(const Value: integer);      //    установить длину вектора
    function GetValues(Index: integer):double;   //    получить координату
    procedure SetValues(Index: integer; const Value: double);   //  установить кординату
    procedure CheckIndex(Index: integer);
   public
      FRes:double;//  значение скалярного произведения
     constructor Create;
     //выводит кординаты вектора как строку
     function AsString: string;
     //значения координат вектора
     property Values[Index: integer]: double
               read GetValues Write SetValues; default;
     //длина вектора
     property Length: integer read GetLength write SetLength;
     //получает сумму векторов
     procedure Add(const SecondVector: TVector); overload;
     //получает произведение вектора на число
     procedure Scalar(Factor: integer); overload;
     //получает скалярное произведение векторов
     procedure Product(const SecondVector: TVector); overload;
     //возвращает первоначальные кординаты вектора
     procedure ReturnValues(a : array of integer); 
end;
implementation
constructor TVector.Create;
begin 
  System.SetLength(Fvalues, 1); // обращение к модулю   SYSTEM  для установки размера динамического массива
end;
???function TVector.AsString: string;
var i: integer;
begin
  Result := '(';
  for i:=0 to Length-1 do
  begin
    ???if i>0 then Result:= Result+' , ';
    ???Result:=Result+Format('%.2n',[Values[i]]);
  end;
  Result:=Result+')';
end;
function TVector.GetLength: integer;
begin
  ???Result:=System.Length(FValues);    
end;
function TVector.GetValues(Index: integer): double;
begin
  ??CheckIndex(Index);
  ??Result:=FValues[Index];
end;
procedure TVector.SetLength(const Value: integer);
begin
  ??if Value<1 then
   ??raise Exception.Create('Invalid vector length');
 ?? System.SetLength(FValues, Value);
end;
procedure TVector.SetValues(Index: integer; const Value: double);
begin
  ??CheckIndex(Index);
  ??FValues[Index]:=Value;
end;
procedure TVector.CheckIndex(Index: integer);
begin
  ??if (Index>=0) and (Index>=Length) then
    ??raise Exception.Create('Index out of the bounds');
end;
??Procedure TVector.Product(const SecondVector: TVector);
var i: integer;
Begin
fres:=0;
   ??For i:=0 to SecondVector.Length-1 do begin
   ??Fvalues[I]:= self[i] * SecondVector[i];
   ??fres:=fres+fvalues[i];
   end;
 end;
??Procedure TVector.Scalar(factor : integer);
var i: integer;
Begin
  ?? For i:=0 to self.Length-1 do
    ??Fvalues[I]:= Self[i] * factor;
 end;
Procedure TVector.Add(const SecondVector: TVector);
var i: integer;
Begin
   For i:=0 to SecondVector.Length-1 do
   ?? Fvalues[I]:= Self[i] + SecondVector[i];
 end;
??Procedure TVector.ReturnValues(a : array of integer);
var i: integer;
Begin
   ??For i:=0 to self.Length-1 do
   ??Fvalues[I]:= a[i];
end;

Код нужно оформлять тегом [CODE]..[/СODE]!

Модератор.

Последний раз редактировалось Serge_Bliznykov; 27.09.2011 в 18:52.
вася радугов вне форума Ответить с цитированием
Старый 28.09.2011, 12:55   #4
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,899
По умолчанию

Вы попросите того программиста, который Вам писал код прокомментировать за отдельную плату, ну или обращайтесь платно во фриланс (можно и ко мне )

Бесплатно вряд ли Вам будут писать комментарии - это даже не "решите за меня" и не "объясните мне" а целое "разберитесь и разжуйте", а труд, как известно, стоит денег.

Почему я решил, что код не Ваш ? Всё просто: откуда человек может написать raise и не знать что он делает при этом ? хотя бывают, конечно, божественные просветления ))

По коду, что увидел - сперва создаем вектора, потом складываем и результат-то сохраняется в первом векторе, значит исходные значения теряются, потом используем returnvalues чтобы восстановить занчения, ужас )) заведите 3 вектор и над ним изголяйтесь )) хотя для препода это может и не важно вовсе.
phomm вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Бяда с коментариями (проставить комментарии в программе на Ассемблере) Fdrum Помощь студентам 4 19.01.2011 14:07
Нужно написать комментарии к программе на С#. Благодарна!!! Polin@ Помощь студентам 2 28.12.2010 01:37
Написать комментарии к программе Space1 Общие вопросы C/C++ 1 03.05.2010 13:35
Комментарии к программе "Расчёт сопротивления схемы" Dafreak1992 Помощь студентам 0 20.02.2010 12:42
Комментарии к коду ELL Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 4 09.03.2009 16:01