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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.01.2010, 00:09   #1
SwIm
Новичок
Джуниор
 
Регистрация: 10.01.2010
Сообщений: 2
По умолчанию Исправление кода...

Народ скажите, что не правильно в программе, если можно напишите как правильно.
Код:

Код:
unit MainUnit;
 
interface
 
uses
  Windows, SysUtils, Classes, Controls, Forms, StdCtrls;
 
type
  TMainForm = class(TForm)
    txtResult: TMemo;
    procedure FormCreate(Sender: TObject);
  end;
 
var
  MyArray: Array of Integer;
  MainForm: TMainForm;
 
implementation
 
{$R *.dfm}
 
procedure TMainForm.FormCreate(Sender: TObject);
var
  i, j: Integer;
begin
  Randomize;
  txtResult.Text := '';
  txtResult.Lines.Add('');
  // Задаю количество элементов
  SetLength(MyArray, 20);
  // Заполняю массив случайными числами
  For i := 0 to High(MyArray) do
    begin
      MyArray[i] := Random(256) - 128;
      If i <> High(MyArray) then
        txtResult.Lines.Strings[txtResult.Lines.Count-1] :=
          txtResult.Lines.Strings[txtResult.Lines.Count-1] + IntToStr(MyArray[i]) + ', '
      Else
        txtResult.Lines.Strings[txtResult.Lines.Count-1] :=
          txtResult.Lines.Strings[txtResult.Lines.Count-1] + IntToStr(MyArray[i]) + ';'
    end;
  // Изменяю массив по условиям задачи
  txtResult.Lines.Add('');
  txtResult.Lines.Add('');
  i := 0;
  While i <= High(MyArray) do
    begin
      If MyArray[i] < 0 then
        begin
          For j := i to High(MyArray) do
            MyArray[j] := MyArray[j + 1];
          SetLength(MyArray, High(MyArray));
        end
      Else
        begin
          MyArray[i] := MyArray[i] + 2;
          Inc(i);
        end;
    end;
  For i := 0 to High(MyArray) do
    begin
      If i <> High(MyArray) then
        txtResult.Lines.Strings[txtResult.Lines.Count-1] :=
        txtResult.Lines.Strings[txtResult.Lines.Count-1] + IntToStr(MyArray[i]) + ', '
      Else
        txtResult.Lines.Strings[txtResult.Lines.Count-1] :=
        txtResult.Lines.Strings[txtResult.Lines.Count-1] + IntToStr(MyArray[i]) + ';'
    end;
end;
 
end.
SwIm вне форума Ответить с цитированием
Старый 19.01.2010, 00:29   #2
spamer
Software Developer
Старожил
 
Аватар для spamer
 
Регистрация: 19.12.2008
Сообщений: 2,070
По умолчанию

А, что она должна хоть делать то? Код вроде как рабочий, в смысле компилится нормально.
Будь проще и люди к тебе потянутся
spamer вне форума Ответить с цитированием
Старый 19.01.2010, 00:44   #3
SwIm
Новичок
Джуниор
 
Регистрация: 10.01.2010
Сообщений: 2
По умолчанию

задача такая:дан массив А (1,20) из которого удаляют все отрицательные, а положительные увеличиваются на 2

а код дает ошибку
SwIm вне форума Ответить с цитированием
Старый 19.01.2010, 01:43   #4
spamer
Software Developer
Старожил
 
Аватар для spamer
 
Регистрация: 19.12.2008
Сообщений: 2,070
По умолчанию

Вобщем вот:
Код:
var
  Form1: TForm1;
  MyArray: Array of Integer;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  i, j: Integer;
begin
  Randomize;
  txtResult.Text := '';
  txtResult.Lines.Add('');
  // Çàäàþ êîëè÷åñòâî ýëåìåíòîâ
  SetLength(MyArray, 20);
  // Çàïîëíÿþ ìàññèâ ñëó÷àéíûìè ÷èñëàìè
  For i := 0 to High(MyArray) do
    begin
      MyArray[i] := Random(256) - 128;
      If i <> High(MyArray) then
        txtResult.Lines.Strings[txtResult.Lines.Count-1] :=
          txtResult.Lines.Strings[txtResult.Lines.Count-1] + IntToStr(MyArray[i]) + ', '
      Else
        txtResult.Lines.Strings[txtResult.Lines.Count-1] :=
          txtResult.Lines.Strings[txtResult.Lines.Count-1] + IntToStr(MyArray[i]) + ';'
    end;
  // Èçìåíÿþ ìàññèâ ïî óñëîâèÿì çàäà÷è
  txtResult.Lines.Add('');
  txtResult.Lines.Add('');
  i := 0;
  While i <= High(MyArray) do
    begin
      If MyArray[i] < 0 then
        begin
        for j:=i to High(MyArray) do
            MyArray[j] := MyArray[j + 1];
          SetLength(MyArray, High(MyArray));
        end
      Else
        begin
          Inc(i);
        end;
    end;
  For i := 0 to High(MyArray) do
    begin
      If i <> High(MyArray) then
        txtResult.Lines.Strings[txtResult.Lines.Count-1] :=
        txtResult.Lines.Strings[txtResult.Lines.Count-1] + IntToStr(MyArray[i]+2) + ', '
      Else
        txtResult.Lines.Strings[txtResult.Lines.Count-1] :=
        txtResult.Lines.Strings[txtResult.Lines.Count-1] + IntToStr(MyArray[i]+2) + ';'
    end;

end;

end.
Вложения
Тип файла: rar prim.rar (165.5 Кб, 8 просмотров)
Будь проще и люди к тебе потянутся

Последний раз редактировалось spamer; 19.01.2010 в 02:49.
spamer вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Исправление лабораторной) Sudeki Помощь студентам 0 08.12.2009 22:02
Исправление Behold Фриланс 5 10.09.2009 13:32
Исправление ошибки bee_uk Общие вопросы C/C++ 1 02.06.2009 13:43
Помогите в исправление кривого кода HECTOR.A. Помощь студентам 2 02.06.2009 11:05
исправление формы. sila Microsoft Office Excel 15 10.07.2008 12:01