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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.05.2008, 16:51   #1
mpegable
Пользователь
 
Регистрация: 03.05.2008
Сообщений: 13
По умолчанию Помогите переделать 2 задачи под динамические массивы (Паскаль)

1 задача:
Текст:
Дан массив размера N. После каждого отрицательного элемента массива вставить элемент с нулевым значением
Код:
Код:
program zad1;
uses crt;
var n,i,k,j:integer;
    a:array[1..50] of integer;
begin
clrscr;
write('n=');readln(n);
randomize;
writeln('Ishodny massiv:');
for i:=1 to n do
   begin
    a[i]:= random(10)-4;
    write(a[i],' ');
   end;
writeln;
i:=1;  //начинаем просматривать массив сначала
while i<=n do
if a[i]<0 then  //если число отрицательное
   begin
     k:=i;  //к присваиваем индекс этого числа
     for j:=n downto k+1 do //от конца массива до к+1
     a[j+1]:=a[j];  //сдвигаем массив вправо
     a[k+1]:=0;   //после отрицательного вставляем ноль
     n:=n+1;    //наращиваем длину массива
     i:=i+1;    //переходим к следущему числу
   end
else i:=i+1;   //если не отрицательное, сразу переходим дальше
writeln('Rezultat:');
for i:=1 to n do
write(a[i],' ');readln;
end.
2 задача:
Текст:
Дан двумерный массив размерности M х N.
Необходимо:
1. Сформировать матрицу вводом с клавиатуры.
2. Найти максимальный элемент в заштрихованной области:
если разделить квадрат двумя диагоналями, то это будет верхний треугольник(если непонятно, спросите, попытаюсь объяснить, или дам ссылку на изображение)
3. Удалить все строки, содержащие максимальный элемент.
4. Вывести исходный и полученный массив на экран.(паскаль, тема: двумерные массивы)
Код:
Код:
uses crt;
var a:array[1..20,1..20]of integer;
    n,i,j,k,max,p,m,t:integer;
begin
clrscr;
write('Vvedite razmernost matricy:');
readln(n);
for i:=1 to n do  //вводим с клавиатуры элементы массива, лучше вводить так,
for j:=1 to n do   //как матрица будет выглядеть, чтобы не спутаться
read(a[i,j]);       //по строкам через пробел, в конце строки - Enter
readln;
clrscr;   //очищаем экран и выводим матрицу на обозрение
writeln('Ischodnaja matrica:');
for i:=1 to n do
    begin
      for j:=1 to n do
      write(a[i,j]:3);
      writeln;
    end;
readln;
max:=a[1,1];  //присваиваем значение макс первому элементу
if n mod 2 =0 then k:=n div 2 //если размер матрицы четный или нечетный
else k:=n div 2 + 1;          //треугольник будет разный   
for i:=1 to k do        //эти две строчки – алгоритм выделения верхнего 
for j:=i to n-i+1 do     // треугольника квадратной матрицы
if a[i,j]>max then
    begin
      max:=a[i,j];
    end;
writeln('max=',max);
readln;
//начинаем искать строки с максимальным элементом
i:=1;p:=n;  //запоминаем количество столбцов
while i<=n do
   begin
     k:=0;
     for j:=1 to p do
     if a[i,j]=max then
       begin
         k:=k+1;  //если есть в строке макс. эл-ты, то k>0
       end;
     if k>0 then
        begin
          for t:=1 to p do
          for m:=i to n-1 do
            begin
              a[m,t]:=a[m+1,t]; //сдвигаем строчки вверх, «вытесняя» с макс.
            end;
            n:=n-1;  //уменьшаем количество строк
         end
      else i:=i+1;   //если нет макс., переходим к следующей строке
    end;
for i:=1 to n do
  begin
     for j:=1 to p do
     write(a[i,j]:4);
     writeln;
  end;
readln
end.
Эти задачи нужно переделать под динамические массивы вместо статических (Паскаль)

Заранее Благодарен

Последний раз редактировалось Stilet; 27.05.2008 в 17:07.
mpegable вне форума Ответить с цитированием
Старый 27.05.2008, 17:08   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
под динамические массивы вместо статических (Паскаль)
В хелпе паскаля читаем про SetLength и Dynamic Array
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 27.05.2008, 17:32   #3
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Цитата:
В хелпе паскаля читаем про SetLength и Dynamic Array
Нету всего этого в Паскале, а под динамическими понимаются массивы, хранящиеся в динамической памяти. Чтобы переделать эти задачи, нужно открыть учебник, почитать и натыкать в коде "птичек".
puporev вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Паскаль. задачи на массивы rant Помощь студентам 27 20.04.2010 09:33
Паскаль. Задачи на массивы pr1mat Паскаль, Turbo Pascal, PascalABC.NET 6 26.05.2008 15:04
Пожалуйста помогите решить задачи на Массивы, текстовые данные и оператор цикла alena-yalymova Паскаль, Turbo Pascal, PascalABC.NET 35 04.04.2008 16:23
Помогите с решением задачи (Паскаль) Irochka Помощь студентам 2 01.05.2007 11:07