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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.02.2009, 18:37   #1
Sianessa
Форумчанин
 
Регистрация: 18.01.2009
Сообщений: 144
По умолчанию Delphi: 3 задачи на массивы

1. Дан массив X из n-целых чисел. Переставить в массиве местами максимальный и минимальный элементы. Вывести: оба массива и отдельно маскимальный и минимальный элементы.

2. Задан массив А из n-чисел. Исключить из массива А элементы с максимальным значением. Вывести отдельно максимальное значение и оба массива.

3. дано число X и массив B из n-элементов. Найти в массиве В номер элемента, значение которого НАИБОЛЕЕ БЛИЗКО к значению числа X.
Вывести: сам массив В, само число X и номер элемента и сам элемент который требуется найти.

P.S. Вывод желательно через RichEdit, но можно и через ShowGrid.

Вот написала код к первой задаче, но там какая-то ошибка, на одно число больше выводит и считает вроде как-то не так:

Код:
procedure TForm1.Button1Click(Sender: TObject);
var
n:integer;
x:array[1..4] of integer;
z:array[1..4] of integer;
max,min:integer;
i,k,m:byte;
begin
 randomize;
 for i:=1 to n do
    begin
      x[i]:=random(100);
      RichEdit1.Text:=RichEdit1.Text+inttostr(x[i])+' ';
    end;
    begin
 max:=x[1];
 k:=1;
 m:=1;
 for i:=1 to n do
 if x[i]>max then max:=x[i];
  k:=i;
      end;
      begin
  min:=x[1];
      for i:=1 to n do
 if x[i]<min then min:=x[i];
  m:=i;
    end;
     begin
      z[i]:=x[k];
      x[k]:=x[m];
      x[m]:=z[i];
     end;
     RichEdit2.Text:=RichEdit1.Text+inttostr(z[i])+' ';
end;

end.
Sianessa вне форума Ответить с цитированием
Старый 23.02.2009, 19:33   #2
Армана
Пользователь
 
Аватар для Армана
 
Регистрация: 22.11.2008
Сообщений: 24
По умолчанию

Вот код к первой задаче:
Код:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    StringGrid1: TStringGrid;
    Edit1: TEdit;
    Button1: TButton;
    Memo1: TMemo;
    Button2: TButton;
    Label1: TLabel;
    StringGrid2: TStringGrid;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

  type Tmas=array [1..10] of integer;
       Pmas=^Tmas;
var
  Form1: TForm1;
  a:Pmas;
  n:integer;
implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
n:=strtoint(Edit1.Text);
StringGrid1.ColCount:=n;
end;

procedure TForm1.Button2Click(Sender: TObject);
var m, mi,i,r,c:integer;

begin

n:=strtoint(Edit1.Text);

Getmem(a,n*sizeof(integer));
for i:=1 to n do begin
a[i]:=strtoint(Stringgrid1.Cells[i-1,0]);
end;
begin
m:=1;
for i:=2 to n do
begin
if a[i]>a[m] then m:=i;
end;

end;

begin
mi:=1;
for i:=2 to n do begin
if a[i]<a[mi] then mi:=i;
end;

end;
begin
r:=a[m];
c:=a[mi];
begin
a[m]:=c;
a[mi]:=r;
end;
end;

for i:=1 to n do begin
StringGrid2.Cells[i-1,0]:=inttostr(a[i]);
end;

Freemem(a,n*sizeof(integer));

Memo1.lines.Add('max='+floattostr(m));
Memo1.Lines.Add('min='+floattostr(mi));
end;

end.
Я написала так, что числа вводятся вручную. Потом исправишь как тебе больше нравится.

А где твои коды к остальным задачам?

P.S. Твой код мне честно говоря не понравился, но разбираться времени нет. Быстрее написать заново.

Последний раз редактировалось Армана; 23.02.2009 в 19:37.
Армана вне форума Ответить с цитированием
Старый 23.02.2009, 19:41   #3
Армана
Пользователь
 
Аватар для Армана
 
Регистрация: 22.11.2008
Сообщений: 24
По умолчанию

2 - ю задачу поясни. Максимальный он на то и максимальный, что больше других. Что значит исключить максимальные?
Армана вне форума Ответить с цитированием
Старый 23.02.2009, 19:47   #4
Sianessa
Форумчанин
 
Регистрация: 18.01.2009
Сообщений: 144
По умолчанию

Армана, дело в том что пока только к первой написать смогла. Спасибо
Пояснение ко второй задаче: Вот дан первый массив.
В нём надо найти максимальные элементы и исключить их, т.е. второй массив вывести БЕЗ них.
Надеюсь понятно *_*
Sianessa вне форума Ответить с цитированием
Старый 23.02.2009, 19:52   #5
maladoy
delphi-ст!
Форумчанин
 
Аватар для maladoy
 
Регистрация: 02.01.2009
Сообщений: 825
По умолчанию

2
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
n:integer;
x:array[1..4] of integer;
z:array[1..4] of integer;
max:integer;
i,k,m:byte;
begin
 randomize;
 for i:=1 to 4 do
    begin
      x[i]:=random(100);
      RichEdit1.Text:=RichEdit1.Text+inttostr(x[i])+' ';
    end;
  k:=1; 
 max:=x[1];
 for i:=2 to 4 do
 if x[i]>max then max:=x[i];
 end;
for i:=1 to 4 do
 if x[i]<>max then 
 begin
 z[k]:=x[i];
 k:=k+1;
    end;
 for i:=1 to k-1 do //<-------
     RichEdit2.Text:=RichEdit1.Text+inttostr(z[i])+' ';
end;
вступлю в команду разработчиков ПО на Delphi

Последний раз редактировалось maladoy; 23.02.2009 в 21:02. Причина: попробуй!!!
maladoy вне форума Ответить с цитированием
Старый 23.02.2009, 20:45   #6
Sianessa
Форумчанин
 
Регистрация: 18.01.2009
Сообщений: 144
По умолчанию

Армана, не могу с твоим решением задачи разобраться, куда там что вводить?
maladoy, у меня второй массив выводит с лишним числом "14" всегда =___= ничё не могу понять.
Sianessa вне форума Ответить с цитированием
Старый 23.02.2009, 21:08   #7
maladoy
delphi-ст!
Форумчанин
 
Аватар для maladoy
 
Регистрация: 02.01.2009
Сообщений: 825
По умолчанию

3 DELPHI
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
b:array[1..4] of integer;
min:integer;
i,ind:integer;
begin
randomize;
for i:=1 to 4 do
begin
b[i]:=random(20)
RichEdit1.Text:=RichEdit1.Text+inttostr(b[i])+' ';
end;
x:=strtoint(richedit2.text)
min:=abs(b[1]-x);
ind:=1;
for i:=2 to m do
begin
if abs(b[i]-x)<min then begin 
min:=abs(b[i]-x);
ind:=i;
end;
end;
RichEdit1.Text:=RichEdit1.Text+' x='+richedit2.text+' b['+inttostr(ind)+']='+inttostr(b[ind]);
end;
а 2 я поправил попробуйте!число вводите richedit2 массив заполняется по рандому
вступлю в команду разработчиков ПО на Delphi

Последний раз редактировалось maladoy; 23.02.2009 в 21:49.
maladoy вне форума Ответить с цитированием
Старый 23.02.2009, 21:23   #8
Армана
Пользователь
 
Аватар для Армана
 
Регистрация: 22.11.2008
Сообщений: 24
По умолчанию

размерность вводишь в Edit1, числа в StringGrid1 вручную, любые. Min и Max он выведет в Memo. В принципе я тебе код полностью написала, тебе нужно только на форму компоненты набросать. Чтобы в ячейки при запуске можно было вводить числа в свойствах Options/go Editing поставь True.
Не могу понять, что у тебя вызывает трудность. Конечно же не забудь второй StringGrid, Button1 (изменяет размерность массива) и Button2 (выполнит программу).
Армана вне форума Ответить с цитированием
Старый 23.02.2009, 21:26   #9
maladoy
delphi-ст!
Форумчанин
 
Аватар для maladoy
 
Регистрация: 02.01.2009
Сообщений: 825
По умолчанию

ну и 1
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
x:array[1..4] of integer;
max,min,vsp:integer;
i,imin,imax:byte;
begin
 randomize;
 for i:=1 to 4 do
    begin
      x[i]:=random(100);
      RichEdit1.Text:=RichEdit1.Text+inttostr(x[i])+' ';
    end;
  max:=x[1];
  min:=x[1];
  imax:=1;
  imin:=1;
 for i:=1 to 4 do begin
 if x[i]>max then begin
   max:=x[i];
   imax:=i;
 end;
 if x[i]<min then begin 
 min:=x[i];
 imin:=i;
    end;end;
  
      vsp:=x[imax];
      x[imax]:=x[imin];
      x[imin]:=vsp;for i:=1 to 4 do


      RichEdit2.Text:=RichEdit2.Text+inttostr(x[i])+' ';


     
     RichEdit2.Text:=RichEdit2.Text+'max='+inttostr(max)+'  min='+inttostr(min);
end;
так устраивает
вступлю в команду разработчиков ПО на Delphi

Последний раз редактировалось maladoy; 23.02.2009 в 21:52.
maladoy вне форума Ответить с цитированием
Старый 23.02.2009, 21:30   #10
Sianessa
Форумчанин
 
Регистрация: 18.01.2009
Сообщений: 144
По умолчанию

maladoy, напишите полностью пожалуйста...
Я вообще не знаю паскаль =___= вижу его вот щас впервые...
Sianessa вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задачи на массивы в Паскале Dark_Zealot Помощь студентам 10 05.02.2010 13:13
Delphi: решить 4 задачи на массивы Sianessa Помощь студентам 39 22.01.2009 22:15
2 задачи на массивы(Си) Molotok Помощь студентам 5 22.12.2008 21:19