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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.02.2013, 19:17   #1
julia79
Новичок
Джуниор
 
Регистрация: 17.02.2013
Сообщений: 2
По умолчанию Паскаль

Помогите,пожалуйста. Правильно ли у меня работает программа?
Задание: Сформировать случайным образом целочисленный двумерный массив и поменять местами две строки.
Код:
Program massiv;
uses crt;
var
n,m,i,j,min,max,mx:integer;
a:array[-100..1000,-100..1000] of integer;
begin
 Randomize;
  write('введите кол-во строк='); readln (n);
  write('введите кол-во столбцов=');  readln (m);
  write('введите от какого числа генерировать=');  readln (min);
  write('введите до какого числа генерировать=');  readln (max);
  min:=-min;
  writeln('isxodniy massiv');
      For i:=1 to n do begin
        For j:=1 to m do begin
        a[i,j]:=random(min+max+1)-min;
        write(a[i,j]:6);
        end;
      writeln;
      end;
For i:=1 to n do begin
        For j:=1 to m do begin
        mx:=a[1,j];
        a[1,j]:=a[n,j];
        a[n,j]:=mx;
        end;
        end;

        writeln('polucheniy massiv');
      For i:=1 to n do begin
        For j:=1 to m do begin
        write(a[i,j]:6);
        end;
      writeln;
      end;
end.

Последний раз редактировалось Stilet; 17.02.2013 в 19:50.
julia79 вне форума Ответить с цитированием
Старый 18.02.2013, 16:42   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

нет, неправильно.

Цитата:
Код:
a:array[-100..1000,-100..1000] of integer;
почему индексы от -100 ?!!! это неверно. Вы в циклах везде пишете от 1
ну так и определяйте от 1
кроме того, если эта программа под Dos (а на это как бы намекает uses Crt),
тогда не получится скомпилировать такую огромную структуру.
Да и нужно ли Вам такое количество элементов массива?!
я бы предложил ограничиться сотней:
Код:
a:array[1..100,1..100] of integer;
Цитата:
Код:
        a[i,j]:=random(min+max+1)-min;
неверно.
нужно так:
Код:
        a[i,j]:=random(max-min+1)+min;

Цитата:
Код:
For i:=1 to n do begin
        For j:=1 to m do begin
        mx:=a[1,j];
        a[1,j]:=a[n,j];
        a[n,j]:=mx;
        end;
        end;
возможно, что я заблуждаюсь, но это, на мой взгляд совсем не "поменять местами две строки."

я бы предложил такой код.
Пусть нам нужно обменять местами строчку r1 (разумеется, 1 <= r1 <= n)
и строчку r2 (так же, 1 <= r2 <= n).
тогда пишем так:
Код:
for j:=1 to m do begin
  mx := a[r1, j];
  a[r1, j] := a[r2, j];
  a[r2, j] := mx
end;
всё.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Паскаль ABC. Программа на языке Паскаль. Helen1 Паскаль, Turbo Pascal, PascalABC.NET 6 13.01.2018 21:46
Как можно в Паскаль АВС (Паскаль-Турбо) вставлять в результаты печати программы графики, таблицы, схемы, набранные формулы, выраже IZOPGRAM Паскаль, Turbo Pascal, PascalABC.NET 0 11.06.2012 10:54
Паскаль, Борланд Паскаль-в чем разница??? Vremya-Dengy Паскаль, Turbo Pascal, PascalABC.NET 13 31.05.2011 18:23
паскаль и турбо паскаль Евгения Игоревна Помощь студентам 6 05.05.2011 14:31