| 
| 
 | Вопрос # 4 358/ вопрос открыт / | 
 |  Здравствуйте уважаемые эксперты! Есть вот такая простенькая задача. Дан массив А(6х6). Выполнить перестановку двух заданных строк массива. Прошу вас помочь сделать данную задачу. Как с генерировать массив слава богу мозгов хватает, а вот как произвести замену строк уже нет :) Знаю только что сделать это необходимо через Edit форму. 
|  |   Вопрос задал: Коновалов Владимир (статус: Посетитель)Вопрос отправлен: 22 июня 2010, 19:34
 Состояние вопроса: открыт, ответов: 0.
 |  
 Мини-форум вопросаВсего сообщений: 15; последнее сообщение — 24 июня 2010, 17:31; участников в обсуждении: 7. 
|   | lx (статус: Посетитель), 22 июня 2010, 19:38 [#1]:я вот давно интересуюсь: откуда такие задачи и формулировки появляются? это прям такая постановка задачи "переставить строки в массиве через edit форму"? |  
|   | min@y™ (статус: Доктор наук), 22 июня 2010, 19:41 [#2]: Цитата (Коновалов Владимир): через Edit форму Это как понимать?
 Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  
|   | Коновалов Владимир (статус: Посетитель), 22 июня 2010, 20:02 [#4]:unit Unit1; 
 interface
 
 uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, XPMan, Grids, StdCtrls, ToolWin, ComCtrls;
 
 type
 TForm1 = class(TForm)
 Label1: TLabel;
 Button1: TButton;
 Button2: TButton;
 StringGrid1: TStringGrid;
 XPManifest1: TXPManifest;
 Edit1: TEdit;
 Label2: TLabel;
 procedure Button2Click(Sender: TObject);
 procedure Button1Click(Sender: TObject);
 private
 { Private declarations }
 public
 { Public declarations }
 end;
 
 var
 Form1: TForm1;
 a:array[0..5,0..5] of integer;
 i,i1,i2,j,n,temp:integer;
 implementation
 
 {$R *.dfm}
 
 procedure TForm1.Button1Click(Sender: TObject);
 begin
 Randomize;
 for i:=0 to 5 do
 for j:=0 to 5 do
 begin
 a[i,j]:=Random(10);
 StringGrid1.Cells[i,j]:=inttostr(a[i,j]);
 end;
 end;
 
 procedure TForm1.Button2Click(Sender: TObject);
 begin
 readln(i1);
 Writeln(i1);
 readln(i2);
 writeln(i2);
 for i:=0 to 5 do
 begin
 temp:= a[ i1, j ];
 a[ i1, i ]:= a[ i2, j ];
 a[ i2, i ]:=temp;
 StringGrid1.Cells[i,j]:= inttostr(temp);
 begin
 close;
 end;
 end;
 end;
 end.
 Вот что сумели непосильным трудом написать, но не работает.
 |  
|   | padonak (статус: Посетитель), 22 июня 2010, 20:05 [#5]:readln(i1); Writeln(i1);... я чёт не догоняю... это же вроде при работе с файло, а здесь их просто нет...
 
 а зачем вобще объявлять массив !а!? а на прямую со стрингридом работать не судьба?
 |  
|   | Коновалов Владимир (статус: Посетитель), 22 июня 2010, 20:11 [#6]:Да нет у меня таких профессиональных навыков  Мне сказали делать так, я так и делаю, и массив объявляю и в таблицу его вывожу. Мне нужно только объяснить произвести замену строк. |  
|   | padonak (статус: Посетитель), 22 июня 2010, 20:22 [#7]:... 
 var
 x, y, x2, y2 : integer;
 temp : string;
 
 ...
 
 temp:= StringGrid1.Cells[x,y];
 StringGrid1.Cells[x,y]:=StringGrid1.Cells[x2,y2];
 StringGrid1.Cells[x2,y2]:=temp;
 
 ...
 |  
|   | padonak (статус: Посетитель), 22 июня 2010, 20:23 [#8]:Коновалов Владимир: это даже я - чайник смог... тут всё просто и никаких ОСОБЫХ знаний не нужно...  
 // вот здесь писцец чушь!!! вы файло не объявили!!!
 readln(i1);
 Writeln(i1);
 readln(i2);
 writeln(i2);
 //
 
 скажи откуда ты берёшь значения для переменных (i1,i2,j1,j2)? из файла?
 |  
|   | Maksell (статус: Посетитель), 22 июня 2010, 21:51 [#9]:пиши что-то на подобие: 
 const
  N = размер массива строк;
  M = размер массива столбцов;
var
  x: array[1..N] of                  // столбцы
     array [1..M] of тип данных;     // строки
  a: тип данных;
  i: integer;
...
for i := 1 to N do begin
  a := x[i][k];
  x[i][k] := x[i][l];
  x[i][l] := a;
end;
...Si numqum quaeris, raro magister eris! |  
|   | min@y™ (статус: Доктор наук), 22 июня 2010, 22:10 [#10]: Цитата (Коновалов Владимир): Знаю только что сделать это необходимо через Edit форму. Никак не пойму, что такое Edit форма.
 Остальное за 10 минут делается без всякой формы.
 Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  
|   | padonak (статус: Посетитель), 22 июня 2010, 22:23 [#11]:min@y™: забей... ты видел как он значения вытаскивал? "readln(i1)" - мало того что неправильно, так ещё и файл не объявлен... тут нада весь код ему сунуть, а влом... 
 Коновалов владимир: если напишу, пиво ставишь?
 |  
|   | Amidamaru (статус: 4-ый класс), 22 июня 2010, 23:38 [#12]:проблему уже решили. в IRC |  
|   | Мережников Андрей (статус: Абитуриент), 23 июня 2010, 17:34 [#13]:to padonak - readln(i1) - читает вводимые значения с клавиатуры, writeln(i1) - пишет на экран. Файл в этом случае объявлять абсолютно не обязательно. Это используется либо в TurboPascal либо в консольном приложении. Прежде, чем писать что-то - учите матчасть. |  
|   | padonak (статус: Посетитель), 24 июня 2010, 02:12 [#14]:Мережников Андрей: кнопки и прочая утварь в консольном приложении(да и в паскале тоже) не используется... внимательней код смотриТЕ |  
|   | Мережников Андрей (статус: Абитуриент), 24 июня 2010, 17:31 [#15]:to padonak 
 Цитата (padonak): так ещё и файл не объявлен- Ваши слова? Так вот я писал, что в операторах writeln и readln - использование файловой переменной необязательно
 |  Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |