24.12.2013, 09:39 | #11 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
|
24.12.2013, 09:39 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
Вот топики, которые должны вам во многом помочь Прошу помощи в написании программы. С++ Помощь в написании программы на Паскале Нужна помощь в написании программы |
24.12.2013, 11:24 | #13 (permalink) | |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Цитата:
Видите ли, я ведь не случайно изменил формат переменных n, i, m, j с диапазонов на "byte". Это дало возможность присвоения этим переменным значений, выходящих за границы диапазонов, в частности, i=0 или i=n+1, что было нужно при организации циклов. Так нет же - Вы берёте и возвращаете диапазоны, что, разумеется, тут же приводит к ошибкам. Ладно. Встал на уши и сохранил Ваши любимые диапазоны. Получите: Код:
const n1 = 50; type index1 = 1..n1; index2 = 1..n1; vectorA = array[index1] of Integer; vectorB = array[index2] of Integer; var n,i:index1; m,j:index2; k: Integer; A: vectorA; B: vectorB; begin Randomize; write('количество элементов n= '); readln(n); writeln('_____________________________________'); writeln('вектор (А):'); for i := 1 to n do begin A[i] := random(41) - 20; write(A[i]:5); end; writeln; writeln('_____________________________________'); i:=1; k:=0; repeat if A[i]<0 then begin k:=A[i]; write('первый отрицательный элемент '); write(k); end; if i<n then i:=i+1; until (k<0) or (i=n); If (i=n) and (k=0) and (A[n]<0) then k:=A[n]; writeln; If k<0 then begin writeln('Вектор (В):'); m:=1; for i:=1 to n do if A[i]<k then begin B[m]:=A[i]; m:=m+1; end; m:=m-1; for j:=1 to m do write(B[j]:4); writeln; end; readln end. |
|
28.12.2013, 13:59 | #14 (permalink) | |
Member
Регистрация: 06.12.2013
Сообщений: 25
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
спасибо большое)
Цитата:
с ваших слов понял, что byte для того и используется, чтобы можно было безошибочно выходить за границы массива. |
|
28.12.2013, 14:08 | #15 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Byte - это любое целое число от 0 до 255. А Вы задаете диапазон, т.е. позволяете переменной изменяться только в пределах этого диапазона, в данном конкретном случае от 1 до n1. Поэтому если в ходе выполнения программы мне нужно, например, присвоить исходное значение 0, или же поставить прерывание цикла при значении переменной n1+1, то, если заданы диапазоны, возникнет ошибка.
|
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
28.12.2013, 14:25 | #16 (permalink) | |
Member
Регистрация: 06.12.2013
Сообщений: 25
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Цитата:
не понятно - почему именно byte, а не integer или word например. может у byte какое-то особое предназначение) или это по сути тот же integer, только в диапазоне от 0 до 255? |
|
28.12.2013, 14:38 | #17 (permalink) | |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Цитата:
|
|
28.12.2013, 14:56 | #18 (permalink) |
Member
Регистрация: 06.12.2013
Сообщений: 25
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
оу. спасибо)
|
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
|
|