|
Главная | Правила | Регистрация | Дневники | Справка | Пользователи | Календарь | Поиск | Сообщения за день | Все разделы прочитаны |
|
Опции темы | Опции просмотра |
23.12.2012, 18:49 | #1 (permalink) |
Новичок
Регистрация: 23.12.2012
Сообщений: 5
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Помогите, пожалуйста, с размерностью массива
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 |
23.12.2012, 18:49 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
Почитайте аналогичные обсуждения - это очень полезно Помогите пожалуйста Помогите пожалуйста =) Помогите пожалуйста Помогите решить задачу с использованием массива в Pascal Помогите пожалуйста Помогите, пожалуйста, с CD-ROM |
23.12.2012, 19:34 | #2 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Объясняю. В цикле вывода массива С верхнюю границу нужно поставить не 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. |
23.12.2012, 20:10 | #3 (permalink) |
Новичок
Регистрация: 23.12.2012
Сообщений: 5
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Спасибо!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
Опции темы | |
Опции просмотра | |
|
|