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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.10.2007, 17:52   #1
Briz
Пользователь
 
Аватар для Briz
 
Регистрация: 07.10.2007
Сообщений: 37
По умолчанию Помогите с лабами

1. Одномерный массив А=(а1,а2,...,an) упорядочен по возврастанию значений. Поменять местами наименьший элемент этого массива и последний среди нулевых элементов его. (считать , что по крайне мере один нулевой элемент есть в этом массиве).


2. Дана матрица А(n*m). Получить матрицу, получающуюся из данной: перестановке столбцов- первого с последним, второго с предпоследним и т.д.

*** Заранее спасибо
Хочу все знать!
Briz вне форума Ответить с цитированием
Старый 10.10.2007, 17:57   #2
Alex21
With best regards
Участник клуба
 
Регистрация: 20.04.2007
Сообщений: 1,448
По умолчанию

Цитата:
упорядочен по возврастанию значений
Массив упорядочен? Или его надо упорядочить?
Alex21 вне форума Ответить с цитированием
Старый 10.10.2007, 18:29   #3
Alex21
With best regards
Участник клуба
 
Регистрация: 20.04.2007
Сообщений: 1,448
По умолчанию

-=2=-
Код:
program ChangeMassiv;
const
N=5; M=5;{размерность массива}
var a,b:array[1..N,1..M]of integer;
    i,j:integer;
procedure Create; {создание массива А}
begin
  Randomize();
  for i:=1 to N do
    begin
      for j:=1 to M do
        begin
          a[i,j]:=Random(10);
        end;
    end;
end;
procedure vivod(s:byte); {вывод массива  1-А, 2-B}
begin
  for i:=1 to N do
    begin
      for j:=1 to M do
        begin
          case s of
            1: Write(a[i,j],' ');
            2: Write(b[i,j],' ');
          end;
        end;
        writeln('');
    end;
end;
procedure Change; {обмен}
begin
  for i:=1 to N do
    begin
      for j:=1 to M do
        begin
          b[i,N+1-j]:=a[i,j];
        end;
    end;
end;
begin
  create;
  writeln('---start massiv---');
  vivod(1);
  Change;
  writeln('---new massiv---');
  vivod(2);
  readln;
end.
Alex21 вне форума Ответить с цитированием
Старый 10.10.2007, 18:37   #4
Briz
Пользователь
 
Аватар для Briz
 
Регистрация: 07.10.2007
Сообщений: 37
По умолчанию

Цитата:
Сообщение от Alex21 Посмотреть сообщение
Массив упорядочен? Или его надо упорядочить?
надо упорядочить
Хочу все знать!
Briz вне форума Ответить с цитированием
Старый 10.10.2007, 19:01   #5
Alex21
With best regards
Участник клуба
 
Регистрация: 20.04.2007
Сообщений: 1,448
По умолчанию

-=1=-
Код:
program Project2;
const
N=10;
var A:array[1..N]of integer;
  i,j,q,ind:integer;
 
{создаем массив}
procedure Create;
var
zero:boolean;
label L1;
begin
  Randomize();
L1:
  zero:=false;
  for i:= 1 to N do
    a[i]:=Random(10)-Random(10);
{проверяем, чтобы был нулевой элемент}
  for i:= 1 to N do
    if a[i]=0 then
      begin
        zero:=true;
        break;
      end;
{если нет нулевого элемента, повторяем}
  if not zero then goto L1;
end;
 
{вывод текущего состояния массива}
procedure vivod;
begin
  for i:= 1 to 10 do
    begin
      Write(a[i]:2,' ');
    end;
    writeln('');
end;
 
{сортировка по возрастанию}
procedure sort;
begin
  for i:=1 to N-1 do
    begin
      for j:=I+1 to N do
        begin
          if A[i]>a[j] then
            begin
              q:=a[i];
              a[i]:=a[j];
              a[j]:=q;
            end;
        end;
    end;
end;
 
{поиск последнего нулевого элемента}
procedure findlastzero;
begin
  for i:=N downto 1 do
    begin
  {когда нашли, то меняем его и 1-й местами}
      if a[i]=0 then
        begin
          q:=a[1];
          a[1]:=a[i];
          a[i]:=q;
          exit;
        end;
    end;
end;
 
begin
  create;
  writeln('---start massiv---');
  vivod;
  sort;
  writeln('---sorted massiv---');
  vivod;
  findlastzero;
  writeln('---change massiv---');
  vivod;
readln;
end.

Последний раз редактировалось Alex21; 11.10.2007 в 10:00.
Alex21 вне форума Ответить с цитированием
Старый 10.10.2007, 21:09   #6
still_alive
Great Code Monkey
Форумчанин
 
Аватар для still_alive
 
Регистрация: 09.08.2007
Сообщений: 533
По умолчанию

Создание массива можно было сделать гораздо более культурно. Заполнить весь массив случайными значениями, а потом элементу массива со случайным индексом присвоить нуль.
still_alive вне форума Ответить с цитированием
Старый 10.10.2007, 21:20   #7
Alex21
With best regards
Участник клуба
 
Регистрация: 20.04.2007
Сообщений: 1,448
По умолчанию

Цитата:
Сообщение от still_alive Посмотреть сообщение
Создание массива можно было сделать гораздо более культурно. Заполнить весь массив случайными значениями, а потом элементу массива со случайным индексом присвоить нуль.
Опять эти если, да можно....
В условии не сказано, что нулевой элемент только один (!)
Да, два цикла можно собрать в один.
Задаваясь случайным кол-вом "0" + заменяя случайные элементы - выйдет более громоздко.

Есть вариант? Выкладывайте.
Alex21 вне форума Ответить с цитированием
Старый 10.10.2007, 21:28   #8
still_alive
Great Code Monkey
Форумчанин
 
Аватар для still_alive
 
Регистрация: 09.08.2007
Сообщений: 533
По умолчанию

Так и в том коде проверяется существование только одного нуля.
А генерация осуществляется одинаково, то есть как в моем, так и в том коде возможно существование нескольких нулей. Просто у меня гарантированно будет нуль после завершения цикла, где я напишу присваивание, а там, возможно, придется заново(!) генерировать все числа массива.
still_alive вне форума Ответить с цитированием
Старый 11.10.2007, 14:48   #9
Briz
Пользователь
 
Аватар для Briz
 
Регистрация: 07.10.2007
Сообщений: 37
По умолчанию

А можно их сделать так чтоб они на паскале работали. А то у меня не работают они на паскале, выдает ошибку и все.
Хочу все знать!
Briz вне форума Ответить с цитированием
Старый 11.10.2007, 14:57   #10
Alex21
With best regards
Участник клуба
 
Регистрация: 20.04.2007
Сообщений: 1,448
По умолчанию

Что за ошибка?
На какой строке?
Alex21 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Народ плиз помогите с лабами Raptor5 Паскаль, Turbo Pascal, PascalABC.NET 11 15.01.2008 11:48