Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Помощь студентам


Ответ
 
Опции темы Опции просмотра
Старый 23.12.2012, 18:49   #1 (permalink)
Serega61
Новичок
 
Регистрация: 23.12.2012
Сообщений: 5
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Помогите, пожалуйста, с размерностью массива

Дан массив b(n). Переписать в массив c(n) положительные элементы массива b(n) умноженные на 5. Затем упорядочить методом "пузырька" по возрастанию новый массив. Найти общее количество одинаковых элементов в упорядоченном массиве. Как правильно определить размерность массива после перестановки? Объясните, пожалуйста!!!

program sort_3;
const n=10;
var b: array[1..n] of real;
c: array[1..n] of real;
k,i: integer; temp: real; flag: boolean;
begin
writeln('Массив В');
randomize;
for i:=1 to n do
begin
b[i]:=random(100)-50;
write(b[i]:4:0);
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-2 do
write(' ',c[i]);
writeln
end.


Результат:
Массив В
38 1 0 -31 -34 42 41 -30 -28 -17
Массив С
c[1]=190 c[2]=5 c[3]=210 c[4]=205
После сортировки
5 190 205
Serega61 вне форума   Ответить с цитированием

Старый 23.12.2012, 18:49
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Почитайте аналогичные обсуждения - это очень полезно

Помогите пожалуйста
Помогите пожалуйста =)
Помогите пожалуйста
Помогите решить задачу с использованием массива в Pascal
Помогите пожалуйста
Помогите, пожалуйста, с CD-ROM

Старый 23.12.2012, 19:34   #2 (permalink)
Vladimir_S
Специалист
 
Аватар для Vladimir_S
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 26,298
Сказал(а) спасибо: 290
Поблагодарили 512 раз(а) в 169 сообщениях
Репутация: 93301
По умолчанию

Цитата:
Сообщение от 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.
__________________
With Mozilla Firefox - straight to communism!
Vladimir_S вне форума   Ответить с цитированием
Старый 23.12.2012, 20:10   #3 (permalink)
Serega61
Новичок
 
Регистрация: 23.12.2012
Сообщений: 5
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Спасибо!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Serega61 вне форума   Ответить с цитированием
Ads

Яндекс

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

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 09:24.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.