Показать сообщение отдельно
Старый 23.12.2012, 19:34   #2 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Serega61 Посмотреть сообщение
Объясните, пожалуйста!!!
Объясняю. В цикле вывода массива С верхнюю границу нужно поставить не k-2, а k-1. Кроме того, совершенно непонятно, за каким лешим Вы объявляете формат элементов массива вещественным (real), а не целым, тем более, что генерируете Вы целые числа и формат вывода даете с обрезанием дробной части. Смысл?
Вот Ваш код с исправлениями:
Код:
const
 n=10;
var
 b,c: array[1..n] of integer;
 k,i,j,temp: integer;
 flag:boolean;
begin
 writeln('Массив В');
 randomize;
 for i:=1 to n do
 begin
  b[i]:=random(100)-50;
  write(b[i]:4);
 end;
 writeln;
 writeln('Массив С');
 k:=1;
 for i:=1 to n do
  begin
   if b[i]>0 then
    begin
     c[k]:=b[i]*5;
     write('c[',k,']=',c[k],' ');
     k:=k+1;
    end;
  end;
 writeln;
 repeat
  flag:=true;
  for i:=1 to k-2 do
   begin
    if c[i]>c[i+1] then
     begin
      temp:=c[i];
      c[i]:=c[i+1];
      c[i+1]:=temp;
      flag:=false;
     end;
   end;
 until flag;
 writeln('После сортировки');
 for i:=1 to k-1 do
  write(c[i]:4);
 readln
end.
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

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