Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Delphi, Kylix and Pascal


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

Цитата:
Сообщение от furt123 Посмотреть сообщение
посмотрите пожалуйста - не ляпнул ли я чего лишнего?
Не прежде, чем мы увидим формулировку задачи.
Vladimir_S вне форума   Ответить с цитированием

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

Вот топики, которые должны вам во многом помочь

Прошу помощи в написании программы. С++
Помощь в написании программы на Паскале
Нужна помощь в написании программы

Старый 24.12.2013, 10:14   #12 (permalink)
furt123
Member
 
Регистрация: 06.12.2013
Сообщений: 25
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Цитата:
Сообщение от Vladimir_S Посмотреть сообщение
Не прежде, чем мы увидим формулировку задачи.
дан вектор А. сформировать из его элементов вектор В, элементы которого соответствуют условию aj<k, где k - первый отрицательный элемент А.
вот как-то так, хотя я точную формулировку не помню.
furt123 вне форума   Ответить с цитированием
Старый 24.12.2013, 11:24   #13 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от furt123 Посмотреть сообщение
посмотрите пожалуйста - не ляпнул ли я чего лишнего? защит пока не делал.
Уф, ну заставили Вы меня поломать голову! Ну, прежде всего, и Вы, и я вслед за Вами, не поставили в начале программы оператор инициализации генератора случайных чисел (Randomize). В этом случае транслятор будет генерировать всегда один и тот же массив, что "не есть хорошо". Исправил. Но это не главное.
Видите ли, я ведь не случайно изменил формат переменных 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.
Vladimir_S вне форума   Ответить с цитированием
Старый 28.12.2013, 13:59   #14 (permalink)
furt123
Member
 
Регистрация: 06.12.2013
Сообщений: 25
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

спасибо большое)
Цитата:
Сообщение от Vladimir_S Посмотреть сообщение
Видите ли, я ведь не случайно изменил формат переменных n, i, m, j с диапазонов на "byte". Это дало возможность присвоения этим переменным значений, выходящих за границы диапазонов, в частности, i=0 или i=n+1, что было нужно при организации циклов.
я даже не делитант в програмировании.. если не трудно - обьясните смысл этого типа или дайте ссылку на адекватное обьяснение.
с ваших слов понял, что byte для того и используется, чтобы можно было безошибочно выходить за границы массива.
furt123 вне форума   Ответить с цитированием
Старый 28.12.2013, 14:08   #15 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от furt123 Посмотреть сообщение
спасибо большое)

я даже не делитант в програмировании.. если не трудно - обьясните смысл этого типа или дайте ссылку на адекватное обьяснение.
с ваших слов понял, что byte для того и используется, чтобы можно было безошибочно выходить за границы массива.
Byte - это любое целое число от 0 до 255. А Вы задаете диапазон, т.е. позволяете переменной изменяться только в пределах этого диапазона, в данном конкретном случае от 1 до n1. Поэтому если в ходе выполнения программы мне нужно, например, присвоить исходное значение 0, или же поставить прерывание цикла при значении переменной n1+1, то, если заданы диапазоны, возникнет ошибка.
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Старый 28.12.2013, 14:25   #16 (permalink)
furt123
Member
 
Регистрация: 06.12.2013
Сообщений: 25
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Цитата:
Сообщение от Vladimir_S Посмотреть сообщение
Byte - это любое целое число от 0 до 255. А Вы задаете диапазон, т.е. позволяете переменной изменяться только в пределах этого диапазона, в данном конкретном случае от 1 до n1. Поэтому если в ходе выполнения программы мне нужно, например, присвоить исходное значение 0, или же поставить прерывание цикла при значении переменной n1+1, то, если заданы диапазоны, возникнет ошибка.
это понятно.
не понятно - почему именно byte, а не integer или word например. может у byte какое-то особое предназначение)
или это по сути тот же integer, только в диапазоне от 0 до 255?
furt123 вне форума   Ответить с цитированием
Старый 28.12.2013, 14:38   #17 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от furt123 Посмотреть сообщение
это понятно.
не понятно - почему именно byte, а не integer или word например. может у byte какое-то особое предназначение)
или это по сути тот же integer, только в диапазоне от 0 до 255?
Программа на Паскале
Vladimir_S вне форума   Ответить с цитированием
Старый 28.12.2013, 14:56   #18 (permalink)
furt123
Member
 
Регистрация: 06.12.2013
Сообщений: 25
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

оу. спасибо)
furt123 вне форума   Ответить с цитированием
Ads

Яндекс

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


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

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




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

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