![]() |
Модераторы: Poseidon |
![]() ![]() ![]() |
|
defeat |
|
|||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 4.12.2007 Репутация: нет Всего: нет |
Добрый день! Вот задача :"При выполнении задания необходимо размерности массива и сам массив считать из файла.
Дан двумерный массив размером n*m. 1. Заменить максимальный элемент каждого столбца нулем 2. Вставить после всех строк, содержащих максимальный по модулю элемент, первую строку. 3. Удалить из него строку и столбец, на перекрестье которых находится максимальный по модулю элемент.. 4. Поменять местами последний и предпоследний столбцы. В проект добавить вывод результатов программы в исходный текстовый файл с комментариями." Собственно саму задачу я сделал...вот она : " unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Grids; type TForm1 = class(TForm) StringGrid1: TStringGrid; Button1: TButton; StringGrid2: TStringGrid; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; m:array[0..500] of integer; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var f:textfile ; s,ss:string; i,j,n,m,k,b,l,u:integer; y:array of string; begin assignfile(f,'file.txt'); k:=1; j:=0; b:=0; reset(f); while not seekeof(f) do begin readln(f,s); StringGrid1.RowCount:=StringGrid1.rowCount+1; for i:=0 to length(s) do begin if s[i]=' ' then begin if k=1 then ss:=copy(s,k,i-k) else ss:=copy(s,k+1,i-k-1); k:=i; b:=b+1; StringGrid1.ColCount:=b; StringGrid1.Cells[b-1,j]:=ss; end; end; b:=0; k:=1; j:=j+1; end; StringGrid1.RowCount:=StringGrid1.RowCount-1; closefile(f); StringGrid2.RowCount:=StringGrid1.rowcount; StringGrid2.colCount:=StringGrid1.colcount; for i:=0 to StringGrid1.colCount-1 do begin k:=strtoint(StringGrid1.cells[i,0]); for j:=0 to StringGrid1.rowCount-1 do begin if strtoint(StringGrid1.cells[i,j])>k then k:=strtoint(StringGrid1.cells[i,j]) end; for j:=0 to StringGrid1.rowCount-1 do begin if strtoint(StringGrid1.cells[i,j])=k then StringGrid2.cells[i,j]:='0' else StringGrid2.cells[i,j]:=StringGrid1.cells[i,j] end; end; assignfile(f,'file.txt'); append(f); writeln(f); writeln(f,'Заменить максимальный элемент каждого столбца нулем'); s:=''; for i:=0 to StringGrid2.rowCount-1 do begin for j:=0 to StringGrid2.colCount-1 do begin if StringGrid2.cells[j,i]<>'' then s:=s+StringGrid2.cells[j,i]+' ' end; write(f,s); writeln(f); s:=''; end; closefile(f); showmessage('Заменить максимальный элемент каждого столбца нулем'); k:=strtoint(StringGrid1.cells[0,0]); for i:=0 to StringGrid1.ColCount-1 do begin for j:=0 to StringGrid1.rowCount-1 do begin StringGrid2.cells[i,j]:=StringGrid1.cells[i,j]; if abs(strtoint(StringGrid1.cells[i,j]))>abs(k) then begin k:=strtoint(StringGrid1.cells[i,j]);//Максимальный элемент по модулю b:=i;//Столбец с максимальным l:=j;//Сстрока с минимальным end; end; end; showmessage('Максимум по модулю '+inttostr(k)); showmessage(StringGrid2.cells[b,l]); i:=0; while i<=StringGrid2.ROWCount-1 do begin for j := 0 to StringGrid2.colCount-1 do begin if strtoint(StringGrid2.cells[j,i])=k then begin u:=1; for n := i+1 to StringGrid2.rowCount-1 do begin for m := 0 to StringGrid2.colCount-1 do begin setlength(y,u); y[u-1]:=StringGrid2.cells[m,n]; u:=u+1; end; end; StringGrid2.rowcount:=StringGrid2.rowcount+1; for m := 0 to StringGrid2.colCount-1 do begin StringGrid2.cells[m,i+1]:=StringGrid1.cells[m,0]; end; u:=1; for n := i+2 to StringGrid2.rowCount-1 do begin for m := 0 to StringGrid2.colCount-1 do begin StringGrid2.cells[m,n]:=y[u-1]; u:=u+1; end; end; i:=i+1; end; end; i:=i+1; end; assignfile(f,'file.txt'); append(f); writeln(f); writeln(f,'Вставить после всех строк, содержащих максимальный по модулю элемент, первую строку'); s:=''; for i:=0 to StringGrid2.rowCount-1 do begin for j:=0 to StringGrid2.colCount-1 do begin if StringGrid2.cells[j,i]<>'' then s:=s+StringGrid2.cells[j,i]+' ' end; write(f,s); writeln(f); s:=''; end; closefile(f); showmessage('Вставить после всех строк, содержащих максимальный по модулю элемент, первую строку'); StringGrid2.RowCount:=StringGrid1.RowCount; StringGrid2.colCount:=StringGrid1.colCount; for j:=0 to StringGrid1.rowCount-1 do begin for i:=0 to StringGrid1.colCount-1 do begin StringGrid2.cells[i,j]:=StringGrid1.cells[i,j] end; end; if b<>StringGrid2.ColCount-1 then begin //удаляем столбец с максимальным u:=1; for n := b+1 to StringGrid2.ColCount-1 do begin for m := 0 to StringGrid2.rowCount-1 do begin setlength(y,u); y[u-1]:=StringGrid2.cells[n,m]; u:=u+1; end; end; StringGrid2.colcount:=StringGrid2.colcount-1; u:=1; for n := b to StringGrid2.ColCount-1 do begin for m := 0 to StringGrid2.rowCount-1 do begin StringGrid2.cells[n,m]:=y[u-1]; u:=u+1; end; end; end else StringGrid2.colcount:=StringGrid2.colcount-1; if l<>StringGrid2.rowCount-1 then begin //удаляем строку с максимальным u:=1; for n := l+1 to StringGrid2.rowCount-1 do begin for m := 0 to StringGrid2.colCount-1 do begin setlength(y,u); y[u-1]:=StringGrid2.cells[m,n]; u:=u+1; end; end; StringGrid2.rowcount:=StringGrid2.rowcount-1; u:=1; for n := l to StringGrid2.rowCount-1 do begin for m := 0 to StringGrid2.colCount-1 do begin StringGrid2.cells[m,n]:=y[u-1]; u:=u+1; end; end; end else StringGrid2.rowcount:=StringGrid2.rowcount-1; assignfile(f,'file.txt'); append(f); writeln(f); writeln(f,'Удалить из него строку и столбец, на перекрестье которых находится максимальный по модулю элемент'); s:=''; for i:=0 to StringGrid2.rowCount-1 do begin for j:=0 to StringGrid2.colCount-1 do begin if StringGrid2.cells[j,i]<>'' then s:=s+StringGrid2.cells[j,i]+' ' end; write(f,s); writeln(f); s:=''; end; closefile(f); showmessage('Удалить из него строку и столбец, на перекрестье которых находится максимальный по модулю элемент'); StringGrid2.RowCount:=StringGrid1.RowCount; StringGrid2.colCount:=StringGrid1.colCount; for j:=0 to StringGrid1.rowCount-1 do begin for i:=0 to StringGrid1.colCount-1 do begin StringGrid2.cells[i,j]:=StringGrid1.cells[i,j] end; end; for i:=0 to StringGrid2.rowcount-1 do begin k:=strtoint(StringGrid2.Cells[StringGrid2.colcount-1,i]); StringGrid2.Cells[StringGrid2.colcount-1,i]:=StringGrid2.Cells[StringGrid2.colcount-2,i]; StringGrid2.Cells[StringGrid2.colcount-2,i]:=inttostr(k); end; assignfile(f,'file.txt'); append(f); writeln(f); writeln(f,'Поменять местами последний и предпоследний столбцы'); s:=''; for i:=0 to StringGrid2.rowCount-1 do begin for j:=0 to StringGrid2.colCount-1 do begin if StringGrid2.cells[j,i]<>'' then s:=s+StringGrid2.cells[j,i]+' ' end; write(f,s); writeln(f); s:=''; end; closefile(f); showmessage('Поменять местами последний и предпоследний столбцы'); end; end." Но мне надо, чтобы полученные мною данные выводились в текстовом файле красиво...то есть цифра под цифрой...у меня выводятся, допустим, вот так: 1 2 3 -7 76 77 1 4 а надо: 1 2 3 -7 76 77 1 4 КАК СДЕЛАТЬ?! Подскажите пожалуйста!!! |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Центр помощи" | |
|
ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Более подробно с правилами данного раздела Вы можете ознакомится в этой теме. Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Центр помощи | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |