Показать сообщение отдельно
Старый 15.12.2012, 02:30   #4 (permalink)
Léon
С# - learn or die
 
Аватар для Léon
 
Регистрация: 17.12.2011
Сообщений: 2,438
Записей в дневнике: 8
Сказал(а) спасибо: 21
Поблагодарили 49 раз(а) в 11 сообщениях
Репутация: 19701
По умолчанию

Цитата:
Сообщение от Student Посмотреть сообщение
2
Создать текстовый файл, в который построчно записать прямоугольный массив massivnm, заполненный целыми случайными числами в диапазоне от v_min до v_max. Размеры массива n и m задать константами. Границы диапазона v_min и v_max задать с консоли. Определить второй максимальный и второй минимальный элементы в файле и поменять их местами. При чтении из файла считать размеры массива неизвестными. Определить их при чтении файла.
Код:
uses crt;
const n=5;
      m=7;
var a:array[1..n,1..m] of integer;
    vmin,vmax,i,j,x,y,mx,mn,imx,jmx,imn,jmn,z:integer;
    f:text;
begin
clrscr;
randomize;
assign(f,'123.txt');
rewrite(f);
repeat
writeln('Введите границы диапaзона чисел:');
readln(vmin,vmax);
until vmin<vmax;
{создаем файл}
for i:=1 to n*m do
 begin
  x:=vmin+random(vmax-vmin+1);
  write(f,' ',x);{пишем числа через пробел}
  if (i mod m=0)and(i<n*m) then writeln(f);{новая строка}
 end;
writeln('Исходный массив:');
reset(f);
y:=0;{определим кол. чисел в 1 строке}
while not eoln(f) do
 begin
  read(f,x);
  y:=y+1;
 end;
close(f);
reset(f);
{прочитаем всю матрицу}
x:=0;
while not eof(f) do
 begin
  x:=x+1;
  for j:=1 to y do
   begin
    read(f,a[x,j]);
    write(a[x,j]:5);
   end;
  writeln
end;
close(f);
writeln;
{найдем мин и макс с координатами}
mn:=a[1,1];imn:=1;jmn:=1;
mx:=a[1,1];imx:=1;jmx:=1;
for i:=1 to x do
for j:=1 to y do
 begin
  if a[i,j]<mn then
   begin
    mn:=a[i,j];
    imn:=i;
    jmn:=j;
   end;
  if a[i,j]>mx then
   begin
    mx:=a[i,j];
    imx:=i;
    jmx:=j;
   end;
 end;
writeln('Минимальный  элемент [',imn,',',jmn,']=',mn);
writeln('Максимальный элемент [',imx,',',jmx,']=',mx);
writeln;
{обменяем их и выведем новый массив}
z:=a[imn,jmn];a[imn,jmn]:=a[imx,jmx];a[imx,jmx]:=z;
writeln('Обмен минимального и максимального:');
for i:=1 to x do
 begin
  for j:=1 to y do
  write(a[i,j]:5);
  writeln;
 end;
readln
end.
Léon вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070