Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 18.10.2011, 19:51
Memorial Memorial вне форума
Прохожий
 
Регистрация: 18.10.2011
Сообщения: 3
Репутация: 10
По умолчанию Прошу помогите. Массивы, удаление четных номеров, обнаружение максимальных номеров

Прошу помочь написать текст программы под дельфи.
Задание 1:
Заполнить массив случайными целыми двузначными числами. Вывести на экран.
Обнаружить максимальный среди элементов с четными номерами.
Задание 2:
Заполнить массив. Удалить все рядом стоящие четные элементы.

Заранее спасибо.
Ответить с цитированием
  #2  
Старый 18.10.2011, 19:54
Memorial Memorial вне форума
Прохожий
 
Регистрация: 18.10.2011
Сообщения: 3
Репутация: 10
По умолчанию

Извиняюсь за название темы. (Прошу помогите-является не сутью темы)

Вот что примерно сделал по первой, но тут ошибки в коде и не выделяет то, что нужно(
Код:
procedure TForm1.Button1Click(Sender: TObject);
Var A:array [1..60] of integer;
    B:integer;
    w,m,i,j:byte;
begin
    Randomize; Form1.Refresh; M:=strtoint(edit1.Text);
    for i:=1 to 60 do
begin
    A[i]:=Random(89)+10; w:=trunc((i-1)/m);
    Canvas.TextOut((i-w*m)*35, (w-1)*35, inttostr(a[i])); end;
B:=a[1]; j:=1; for i:=2 to 60 do
if a[i]>b and not odd(i)    then begin B:=A[i]; J:=i end;
Edit2.Text:=inttostr(j); w:=trunc((j-1)/m);
Canvas.Pen.color:=clred;
Canvas.Rectangle((j-w*m)*35, (w+1)*35+60, (j-w*m)*35+30,
(w+1)*35+63);

end;

end.
Админ: Пользуемся тегами при оформлении кода!

Последний раз редактировалось Admin, 18.10.2011 в 20:56.
Ответить с цитированием
  #3  
Старый 19.10.2011, 00:48
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Немного изменил код и вывод делается в TImage, чтобы не было случайного стирания информации при перекрытии другими окнами или сворачивании:
Код:
unit Unit17;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    Edit2: TEdit;
    Image1: TImage;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

uses
  Math;

procedure TForm1.Button1Click(Sender: TObject);
var
  Buf       : array[0..59] of Integer;
  I, J, B,
  X, Y,
  Col, Row  : Integer;

  function NumberExists(Value : Integer) : Boolean;
  var
    I : Integer;
  begin
    Result := False;
    for I := Low(Buf) to High(Buf) do
      if Buf[i] = Value then
      begin
        Result := True;
        Break;
      end;
  end;

begin
  Randomize;
  Image1.Canvas.Brush.Color := clWhite;
  Image1.Canvas.FillRect(Image1.ClientRect);
  Col := StrToInt(edit1.Text);

  I := 0;
  FillChar(Buf, SizeOf(Buf), 0);
  // Заполним массив неповторяющимися числами
  while I <= High(buf) do
  begin
    B := Random(90) + 10;
    if NumberExists(B) then
      Continue
    else
    begin
      Buf[i] := B;
      inc(I);
    end;
  end;

  // найти максимальное число
  B := 0;
  for I := Low(Buf) to High(Buf) do
    if not odd(I) then
      B := Max(Buf[i], B);

  Edit2.Text := IntToStr(B);

  // Вывод
  Row := (High(Buf) + 1) div Col;
  for I := 0 to Row - 1 do
    for J := 0 to Col - 1 do
    begin
      Image1.Canvas.Font.Color := clBlack;
      if Buf[I * Col + J] = B then
        Image1.Canvas.Font.Color := clGreen;
      Image1.Canvas.TextOut(J * 35 + 10, I * 35 + 10, IntToStr(Buf[I * Col + J]));
      if Buf[I * Col + J] = B then
      begin
        X := J * 35 + 10;
        Y := I * 35 + 10;
        Image1.Canvas.Pen.Color := clRed;
        Image1.Canvas.Brush.Style := bsClear;
        Image1.Canvas.Rectangle(X - 6, Y - 4, X + 18, Y + 18);
        Image1.Canvas.Brush.Style := bsSolid;
      end;
    end;
end;

end.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #4  
Старый 19.10.2011, 06:56
Memorial Memorial вне форума
Прохожий
 
Регистрация: 18.10.2011
Сообщения: 3
Репутация: 10
По умолчанию

Спасибо, очень помогли, вот что думаю по второй, но тоже не робит что-то(

Код:
procedure TForm1.Button1Click(Sender: TObject);
Var w,m,l,i,j,k:byte;
A:array [1..60] of integer;
z:boolean;
begin
Randomize;
Form1.Refresh; m:=strtoint(edit1.text);
for i:=1 to 60 do begin A[i]:=random(89)+10; w:=trunc((i-1)/m);
Canvas.TextOut((i-w*m)*35, (w-1)*35, inttostr(a[i]));

end;
Z:=false; if odd(a[60]) then begin a[60]:=1; z:=True end;
K:=0; repeat l:=0; for i:=1 to 60 do if odd(a[i]) then begin for j:=i to 60 do
a[j]:=a[j+1];
k:=k+1; l:=1 end;
Until l=0; if z then k:=k+1;
For i:=1 to (60-k) do
w:=trunc((i-1)/m);
Canvas.TextOut((i-w*m)*35+60, (w-1)*35+63, inttostr(a[j]));   end;

lmikle: Код выделяется с помощью тега [ code ] (пробелы убрать).

Не очень знал как выделить этот текст кодом, так что выделил цитатой, прошу прощения за неполное соблюдение правил.

Последний раз редактировалось lmikle, 20.10.2011 в 03:14.
Ответить с цитированием
  #5  
Старый 20.10.2011, 01:19
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Для начала вам следует понять тот пример, что я привёл выше. Такое ощущение, что вы его проверили и успокоились не удосужившись разобраться что там и как. Иначе как понять, что вы опять пишите какую-то, извините за выражение, хрень?
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 23:55.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025