Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.03.12;
Скачать: CL | DM;

Вниз

Помогите сделать простую программку, пожалуйста.   Найти похожие ветки 

 
Groof ©   (2006-02-25 21:28) [0]

Надо реалиховать ф-ую по обмену двух значений (макс.и мин элементов массива, т.е. их надо поменять местами в массиве и затем отобразить его).Если кому может пригодиться, то вот она для с++:

void obmen(char *a, unsigned max, unsigned min)
{
char temp = a[min];
a[min] = a[max];
a[max] = temp;
}

...
int main ()
{
.....
obmen(a,maxElem,minElem);
 cout<<sta("Izmenennii massiv: ");
 for (k=0;k<n;k++)
 cout<<(a[k])<<" ";cout<<endl;
}

и для дельфи(с формой):
...
var
 Form1: TForm1;
 max,min,temp:string;
 a:array of string;
 l:boolean=false;
 n,i:Integer;

implementation

{$R *.dfm}

function exist(n:Integer;a:array of string):boolean;
begin
result:=False;
for i:=0 to n-1 do
if a[0]<>a[i] then
result:=True;
end;

function max_el(n:Integer;a: array of string):string;
var
pos: string;
begin
max:=a[0];
for i:=0 to n-1 do
if max<a[i] then
begin
max:=a[i];
pos:=FloatToStr(i);
end;
result:=pos;
end;

function min_el(n:Integer;a:array of string):string;
var
pos: string;
begin
min:=a[0];
for i:=0 to n-1 do
if min>a[i] then
begin
min:=a[i];
pos:=FloatToStr(i);
end;
result:=pos;
end;

function obmen(max,min:integer;a:array of string):string;
var
temp:string;
begin
 temp:=a[min];
a[min]:=a[max];
a[max]:=temp;
// result:=b[i];
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  n:=StrToInt(Edit1.Text);
  if n<=0 then
  MessageDlg("&#194;&#226;&#229;&#228;&#229;&#237;&#238; &#237;&#229;&#226;&#229;&#240;&#237;&#238;&#229; &#234;&#238;&#235;-&#226;&#238; &#253;&#235;&#229;&#236;&#229;&#237;&#242;&#238;&#226;!"#10"&#207;&#238;&#226;&# 242;&#238;&#240;&#232;&#242;&#229; &#226;&#226;&#238;&#228;!",mtWarning,[mbOk],0)
  else
  begin
  BitBtn2.Enabled:=true;
  SetLength(a,n);
  for i:=0 to n-1 do
     a[i]:=Inputbox("&#194;&#226;&#229;&#228;&#232;&#242;&#229; &#253;&#235;&#229;&#236;&#229;&#237;&#242; &#185;"+FloatToStr(i+1),"&#194;&#226;&#238;&#228;:","1");
  end;
end;

procedure TForm1.BitBtn2Click(Sender: TObject);
begin
  Label5.Enabled:=true;
  Label6.Enabled:=true;
  Label7.Enabled:=true;
  Label8.Enabled:=true;
  Label9.Enabled:=true;
  Label10.Enabled:=true;
  Label3.Enabled:=true;
  Label4.Caption:="";
  Label10.Caption:="";
  if (exist(n,a)) then
  begin
    max:=max_el(n,a);
    min:=min_el(n,a);
    Label7.Caption:=(max);
    Label8.Caption:=(min);
    for i:=0 to n-1 do
       Label4.caption:=label4.caption+" "+(a[i]);
{
    a[i]:=obmen(a,min,max);
    for i:=0 to n-1 do
       begin
       Label10.caption:=label10.caption+" "+(a[i]);
       end;

}        
  end
  else
    MessageDlg("&#215;&#232;&#241;&#235;&#224; &#240;&#224;&#226;&#237;&#251;!",mtError,[mbOk],0);
end;
end.

Спасибо!


 
Virgo_Style ©   (2006-02-25 21:40) [1]

А где вопрос?


 
Groof ©   (2006-02-25 21:59) [2]

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


 
Virgo_Style ©   (2006-02-25 22:15) [3]

А-а. Ну я, наверное, рискну ответить за всех, что мы не возражаем. Даже более того, будут возникать вопросы - спрашивай, ответим.

И даже сразу совет дам - код стОит форматировать, больше шансов, что его прочтут.


 
Palladin ©   (2006-02-25 22:25) [4]

Procedure ExchgMM(Var a:Array of String);

Var
strMin,strMax:String;
i,iMin,iMax:Integer;
Begin
If Length(a)=0 Then Exit;
strMin:=a[0]; iMin:=0;
strMax:=a[0]; iMax:=0;
For i:=0 to Length(a)-1 Do If a[i]>strMax Then
  Begin
   strMax:=a[i];
   iMax:=i;
  End Else If a[i]<strMin Then
  Begin
   strMin:=a[i];
   iMin:=i;
  End;
a[iMax]:=strMin;
a[iMin]:=strMax;
End;



теперь осталось продумать вопрос о существовании более чем одного минимального/максимального элемента массива


 
PZ   (2006-02-26 09:06) [5]

> теперь осталось продумать вопрос о существовании более чем одного > минимального/максимального элемента массива

Минимум, он всегда - один, также, как максимум


 
Groof ©   (2006-02-26 09:10) [6]

Хорошо, это процедура, а как ее теперь надо запускать по нажитию кнопки bitbtn2Click.?


 
Рамиль ©   (2006-02-26 10:45) [7]


> Groof ©   (26.02.06 09:10) [6]

Можно еще по Button1Click


 
evvcom ©   (2006-02-26 12:21) [8]


> Минимум, он всегда - один, также, как максимум

У, какой ты умный! Значение одно, а вот аргументов может быть несколько.


 
Virgo_Style ©   (2006-02-26 13:20) [9]

PZ   (26.02.06 9:06) [5]

1, 1, 1, 1, 2.

где здесь минимальный элемент?


 
Галинка ©   (2006-02-26 16:08) [10]

Palladin ©   (25.02.06 22:25) [4]

Легче всего, поставить условие на "неввод" двух одинаковых значений ))) Либо если заранее известно, что двух или более одинаковых значений быть не может.


 
Groof ©   (2006-02-26 17:47) [11]

Да такие мелочи пока не особо нужны..Лучше напиши код для bitbtn2, чтобы эта ф-ия по обмену значений работала..


 
PZ   (2006-02-26 18:14) [12]

> Virgo_Style ©   (26.02.06 13:20) [9]
> где здесь минимальный элемент?

Уговорил


 
Anatoly Podgoretsky ©   (2006-02-26 19:14) [13]

Virgo_Style ©   (26.02.06 13:20) [9]
А зачем где, нужно какое



Страницы: 1 вся ветка

Текущий архив: 2006.03.12;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.043 c
2-1140711503
K_Lock
2006-02-23 19:18
2006.03.12
Ошибка......


15-1140337476
unknown
2006-02-19 11:24
2006.03.12
Скоро на форумах будет опасно общаться...


15-1139864793
QwertyKz
2006-02-14 00:06
2006.03.12
Замена строк


2-1140593231
Рафик
2006-02-22 10:27
2006.03.12
Memo


2-1141008211
Adios
2006-02-27 05:43
2006.03.12
BitButon