Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RFpro.ru: Программирование на Delphi и Lazarus


РАССЫЛКИ ПОРТАЛА RFPRO.RU

Лучшие эксперты в разделе

Степанов Иван /REDDS
Статус: 4-й класс
Рейтинг: 26
∙ повысить рейтинг »
Асмик Гаряка
Статус: Советник
Рейтинг: 2
∙ повысить рейтинг »
Орловский Дмитрий
Статус: Мастер-Эксперт
Рейтинг: 0
∙ повысить рейтинг »

∙ Pascal / Delphi / Lazarus

Номер выпуска:1749
Дата выхода:07.12.2018, 18:45
Администратор рассылки:Зенченко Константин Николаевич (Модератор)
Подписчиков / экспертов:32 / 34
Вопросов / ответов:1 / 1

Консультация # 194014: Помогите пожалуйста! Началась сессия, а я болела долго и вообще не понимаю, что от меня хотят преподы( Это все должно быть в Lazarus Підрахувати середнє арифметичне всіх від’ємних елементів у даному одновимірному масиві. Виконати сортування елементів масиву за спаданням, використовуючи метод обміну Знайти найбільший елемент ...

Консультация # 194014:

Помогите пожалуйста!
Началась сессия, а я болела долго и вообще не понимаю, что от меня хотят преподы(
Это все должно быть в Lazarus

Підрахувати середнє арифметичне всіх від’ємних елементів у даному одновимірному масиві.
Виконати сортування елементів масиву за спаданням, використовуючи метод обміну

Знайти найбільший елемент двовимірного масиву і поміняти його місцями з першим. Виконати
сортування непарних рядків за спаданням, а парних – за зростанням

Несколько задач, каждая отдельно:

© Цитата: dasha.voloshina37
Підрахувати середнє арифметичне всіх від’ємних елементів у даному одновимірному масиві.

=
© Цитата: Зенченко Константин Николаевич
Подсчитать среднее арифметическое всех отрицательных элементов в данном о дномерном массиве.


© Цитата: dasha.voloshina37
Виконати сортування елементів масиву за спаданням, використовуючи метод обміну

=
© Цитата: Зенченко Константин Николаевич
Выполнить сортировку элементов массива по убыванию, используя метод обмена


© Цитата: dasha.voloshina37
Знайти найбільший елемент двовимірного масиву і поміняти його місцями з першим. Виконати сортування непарних рядків за спаданням, а парних – за зростанням

=
© Цитата: Зенченко Константин Николаевич
Найти наибольший элемент двум ерного массива и поменять его местами с первым. выполнить сортировку нечетных строк по убыванию, а четных - по возрастанию


На Портале : задавайте вопросы на русском языке - оф.язык портала.

Дата отправки: 27.11.2018, 18:37
Вопрос задал: dasha.voloshina37 (Посетитель)
Всего ответов: 1
Страница онлайн-консультации »


Консультирует Зенченко Константин Николаевич (Модератор):

Здравствуйте, dasha.voloshina37!

Код Delphi последовательно выполняет все задания:

Код (Pascal) :: выделить код
unit Unit1;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Grids, StdCtrls;
type
  TForm1 = class(TForm)
    Label1: TLabel;
    StringGrid1: TStringGrid;
    procedure FormCreate(Sender: TObject);
    procedure StringGridKeyPress(Sender: TObject; var Key: Char);
  private    { Private declarations }
  public    { Public declarations }
  end;
var
  Form1: TForm1;
implementation
{$R *.dfm}
  procedure TForm1.FormCreate(Sender: TObject);
    begin
      Form1.StringGrid1.RowCount:=1;
      Form1.StringGrid1.ColCount:=6;
      Form1.StringGrid1.Height:=(Form1.StringGrid1.RowCount+1)*Form1.StringGrid1.DefaultRowHeight;
      Form1.StringGrid1.Width:=(Form1.StringGrid1.ColCount+1)*Form1.StringGrid1.DefaultColWidth;
      Form1.Width:=Form1.StringGrid1.Width+20; 
      Form1.Height:=Form1.Label1.Top+Form1.Label1.Height+10+ Form1.StringGrid1.Top+Form1.StringGrid1.Height+10;
      Form1.Label1.Caption:='1) please enter array[1..'+IntToStr(Form1.StringGrid1.ColCount-1)+']';
    end;
  procedure TForm1.StringGridKeyPress(Sender: TObject; var Key: Char);
    var
      a:string;
      b,c,d,e:integer;
    begin
      case Key of
        '0'..'9':Form1.StringGrid1.Cells[Form1.StringGrid1.Col,Form1.StringGrid1.Row]:=Form1.StringGrid1.Cells[Form1.StringGrid1.Col,Form1.StringGrid1.Row]+Key;
        #8:begin
            a:=Form1.StringGrid1.Cells[Form1.StringGrid1.Col,Form1.StringGrid1.Row];
            Delete(a,length(a),1);
            Form1.StringGrid1.Cells[Form1.StringGrid1.Col,Form1.StringGrid1.Row]:=a;
           end;
        '-':if length(Form1.StringGrid1.Cells[Form1.StringGrid1.Col,Form1.StringGrid1.Row])=0then Form1.StringGrid1.Cells[Form1.StringGrid1.Col,Form1.StringGrid1.Row]:=Key else Key:=chr(0);
        #13:if Form1.StringGrid1.Col<Form1.StringGrid1.ColCount-1 then Form1.StringGrid1.Col:=Form1.StringGrid1.Col+1
              else if Form1.StringGrid1.Row<Form1.StringGrid1.RowCount-1 then
                begin
                  Form1.StringGrid1.Row:=Form1.StringGrid1.Row+1;
                  Form1.StringGrid1.Col:=0;
                end
                else
                begin
                  a:=Form1.Label1.Caption;
                  case a[1] of
                    '1':begin
                          b:=0;
                          c:=0;
                          for d:=0 to Form1.StringGrid1.ColCount-1 do if StrToInt(Form1.StringGrid1.Cells[d,0])<0 then
                            begin
                              b:=b+StrToInt(Form1.StringGrid1.Cells[d,0]);
                              inc(c);
                            end;
                          if c>0 then
                            begin
                              Form1.Label1.Caption:='1) result:='+FloatToStr(b/c);
                              repeat
                                a:='';
                                for c:=0 to Form1.StringGrid1.ColCount-2 do
                                  if StrToInt(Form1.StringGrid1.Cells[c,0])<StrToInt(Form1.StringGrid1.Cells[c+1,0])then
                                    begin
                                      a:=Form1.StringGrid1.Cells[c,0];
                                      Form1.StringGrid1.Cells[c,0]:=Form1.StringGrid1.Cells[c+1,0];
                                      Form1.StringGrid1.Cells[c+1,0]:=a;
                                    end;
                                Form1.Refresh;
                                Sleep(5000);
                              until length(a)=0;
                              Form1.StringGrid1.RowCount:=5;
                              Form1.StringGrid1.Height:=(Form1.StringGrid1.RowCount+1)*Form1.StringGrid1.DefaultRowHeight;
                              Form1.Height:=Form1.Label1.Top+Form1.Label1.Height+10+ Form1.StringGrid1.Top+Form1.StringGrid1.Height+10;
                              Form1.Label1.Caption:='2) please enter matrix['+IntToStr(Form1.StringGrid1.RowCount)+'x'+IntToStr(Form1.StringGrid1.ColCount)+']'
                            end else Form1.Label1.Caption:='1) no negative numbers, please again';
                            Form1.StringGrid1.Row:=0;
                            Form1.StringGrid1.Col:=0;
                            for c:=0 to Form1.StringGrid1.ColCount-1 do Form1.StringGrid1.Cells[c,0]:='';
                            Form1.Refresh;
                            sleep(5000);
                        end;
                    '2':begin
                          d:=0;
                          e:=0;
                          for b:=0 to Form1.StringGrid1.RowCount-1 do
                            for c:=0 to Form1.StringGrid1.ColCount-1 do
                              if StrToInt(Form1.StringGrid1.Cells[c,b])>StrToInt(Form1.StringGrid1.Cells[d,e])then
                                begin
                                  d:=c;
                                  e:=b;
                                end;
                          a:=Form1.StringGrid1.Cells[0,0];
                          Form1.StringGrid1.Cells[0,0]:=Form1.StringGrid1.Cells[d,e];
                          Form1.StringGrid1.Cells[d,e]:=a;
                          Form1.Refresh;
                          Form1.StringGrid1.Refresh;
                          Sleep(9000);
                          for b:=0 to Form1.StringGrid1.RowCount-1 do
                            begin
                              repeat
                                a:='';
                                d:=1-2*(b mod 2);
                                for c:=0 to Form1.StringGrid1.ColCount-2 do
                                  if (d*StrToInt(Form1.StringGrid1.Cells[c,b]))<(d*StrToInt(Form1.StringGrid1.Cells[c+1,b]))then
                                    begin
                                      a:=Form1.StringGrid1.Cells[c,b];
                                      Form1.StringGrid1.Cells[c,b]:=Form1.StringGrid1.Cells[c+1,b];
                                      Form1.StringGrid1.Cells[c+1,b]:=a;
                                    end;
                                Form1.Refresh;
                                Sleep(5000);
                              until length(a)=0;
                            end;
                          Form1.Label1.Caption:='job stoped';
                        end;
                    end;
                end;
         else Key:=chr(0);
        end;
    end;
end.


Удачи!

Консультировал: Зенченко Константин Николаевич (Модератор)
Дата отправки: 06.12.2018, 23:17
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Оценить выпуск | Задать вопрос экспертам

главная страница  |  стать участником  |  получить консультацию
техническая поддержка

Дорогой читатель!
Команда портала RFPRO.RU благодарит Вас за то, что Вы пользуетесь нашими услугами. Вы только что прочли очередной выпуск рассылки. Мы старались. Пожалуйста, оцените его. Если совет помог Вам, если Вам понравился ответ, Вы можете поблагодарить автора - для этого в каждом ответе есть специальные ссылки. Вы можете оставить отзыв о работе портале. Нам очень важно знать Ваше мнение. Вы можете поближе познакомиться с жизнью портала, посетив наш форум, почитав журнал, который издают наши эксперты. Если у Вас есть желание помочь людям, поделиться своими знаниями, Вы можете зарегистрироваться экспертом. Заходите - у нас интересно!
МЫ РАБОТАЕМ ДЛЯ ВАС!


В избранное