Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.08.2014, 20:44   #41
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

То тебе повезло, они действительно не инициализируюся, по крайней мере в делфийском консольном приложении. Отключив оптимизацию проекта - обнуляются
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 27.08.2014, 20:49   #42
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

А почему? Ведь они ж глобальные!!! (или нет?)
Poma][a вне форума Ответить с цитированием
Старый 27.08.2014, 20:54   #43
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Честно, не знаю, должны, но... Всегда инициализирую, если использую. Использую редко, обычно для переменных-констант
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 27.08.2014, 21:27   #44
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Абалдеть.. Спасибо большое за науку..
Впредь буду инициализировать всех и вся..

И тогда еще вопрос..
Есть код
Код:
var n : Int64;
WriteLn(3 shl (n-1))
Он при больших n косячит..
по логике нужно или приводить тип трехи.. и заводить для нее отдельную переменную бооольшого типа.. Но снова интересует наименьший по кол-ву символов вариант..
Poma][a вне форума Ответить с цитированием
Старый 27.08.2014, 21:54   #45
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

X shl Y -> тип результата как у X. Сдвиг влево на Y mod (количество бит у типа X)
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 27.08.2014, 22:01   #46
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Ясненько..
Тоесть Write(Int64(n) shl (n-1))..
Большое спасибо!
Poma][a вне форума Ответить с цитированием
Старый 03.09.2014, 19:58   #47
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Вечер Добрый.
Позвольте такой вопрос..

Пусть дана задача :
Пусть нам дан массив, упорядоченный по возрастанию..
И дано некое значение K.
Нужно найти элемент массива наиболее близкий к К.

Задача хорошо решается бинарным поиском (и с ним проблем нет)..
Но захотелось побаловаться тернарным поиском.. И тут уже косяк.. Поэтому прошу помощи..
Код:
var
   a : array [1..100000] of Integer;
   n : Integer;

function Srch(k : Integer) : Integer;
function f(t : Integer) : Integer;
begin
   f := Abs(a[t]-k)
end;

var
   l, r, m1, m2 : Integer;
begin
   l := 1; r := n;
   while l < r do begin
      m1 := l+(r-l) div 3;
      m2 := r-(r-l) div 3;

      if f(m1) > f(m2) then l := m1
      else r := m2
   end;
   Srch := l
end;

var
   k, i : Integer;

begin
   Read(n);
   for i := 1 to n do Read(a[i]);
     
   WriteLn(Srch(k))
end.
Poma][a вне форума Ответить с цитированием
Старый 03.09.2014, 20:05   #48
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Ромаха, где ввод k?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 03.09.2014, 20:17   #49
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Ага.. Точно, случайно потер при удалении отладочной информации..
Но проблема не только в этом..
Код:
var
   a : array [1..100000] of Integer;
   n : Integer;

function Srch(k : Integer) : Integer;
function f(t : Integer) : Integer;
begin
   f := Abs(a[t]-k)
end;

var
   l, r, m1, m2 : Integer;
begin
   l := 1; r := n;
   while l < r do begin
      m1 := l+(r-l) div 3;
      m2 := r-(r-l) div 3;

      if f(m1) > f(m2) then l := m1
      else r := m2
   end;
   Srch := l
end;

var
   k, i : Integer;

begin
   ReadLn(n);
   for i := 1 to n do Read(a[i]);
   Read(k);
   WriteLn(Srch(k))
end.
Poma][a вне форума Ответить с цитированием
Старый 03.09.2014, 21:19   #50
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

А так
Код:
      if f(m1) > f(m2) then begin
        if l=m1 then l:=m1+1 else l := m1;
      end
      else begin
        if r=m2 then r:=m2-1 else r := m2;
      end;
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопросы по БД Rost93 PHP 9 28.06.2011 22:18
Вопросы по С++ Fantazerishka Общие вопросы C/C++ 2 19.05.2010 06:52
Вопросы по if, else? molodoyy Помощь студентам 5 21.03.2010 15:34