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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.11.2014, 22:23   #21
OldOwlOll
Форумчанин
 
Аватар для OldOwlOll
 
Регистрация: 28.11.2014
Сообщений: 172
По умолчанию

ViktorR Спасибо! Внимательно прочитала и запомнила советы

Цитата:
Сообщение от ViktorR Посмотреть сообщение
Очевидно, что в наборе продаваемых печений есть такие, которые мне не по вкусу. Но вот это и есть их недостаток.
Понято

Цитата:
Сообщение от ViktorR Посмотреть сообщение
Попробуйте вводить не по одному числу, а тройкой
Попробовала. Работает Спасибо!
Поработала с процедурами read и readln.

Цитата:
Сообщение от ViktorR Посмотреть сообщение
PS: Я вообще не профессионал. Так, любитель упрощать (автоматизировать) свою работу.
Именно такие люди - на вес золота! Даже - бриллиантов

Проблема. Уперлась в стену и тихо бьюсь с подвываниями
Начала работу с текстовыми файлами. PascalABC.NET не принимает тип text, хотя узнает его.
Не понимаю, что не так.
Скрин в прикрепленном файле.
Разобралась!! Имя надо по-уму выбирать!! /Постукала себя по бестолковке ))))



Stilet, я Вас услышала.
Изображения
Тип файла: jpg 1.JPG (40.1 Кб, 74 просмотров)
Делать то, что любишь - это свобода. Любить то, что делаешь - счастье. (с)
Свободу киндерам!
Счастья всем. Бесплатно. И пусть никто не уйдет обиженным. (с)

Последний раз редактировалось OldOwlOll; 30.11.2014 в 22:29.
OldOwlOll вне форума Ответить с цитированием
Старый 30.11.2014, 22:39   #22
OldOwlOll
Форумчанин
 
Аватар для OldOwlOll
 
Регистрация: 28.11.2014
Сообщений: 172
По умолчанию

Цитата:
Сообщение от Arigato Посмотреть сообщение
Можно упростить так: <...>
Спасибо! До этого я не додумалась... а должна была... Спасибо!

Цитата:
Сообщение от Arigato Посмотреть сообщение
Но еще лучше перейти на массивы.
Да. Иду к ним со всем доступным мне темпом
Делать то, что любишь - это свобода. Любить то, что делаешь - счастье. (с)
Свободу киндерам!
Счастья всем. Бесплатно. И пусть никто не уйдет обиженным. (с)
OldOwlOll вне форума Ответить с цитированием
Старый 30.11.2014, 22:49   #23
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Начала работу с текстовыми файлами. PascalABC.NET
я бы крайне не рекомендовал иметь дело с PascalABC и PascalABC.NET (кстати, это два разных компилятора, каждый со своим "тараканами" и фишками)!

Если изучаете Паскаль, то лучше возмите Free Pascal (+ Lazarus) или Delphi (пиратку).
Serge_Bliznykov вне форума Ответить с цитированием
Старый 30.11.2014, 22:56   #24
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,306
По умолчанию

Мое трезвое предложение:
Скачайте Free Pascal, а про ABC - забудьте как плохой сон.

Можно поставить Lazarus, но возможно и позже.
Там новичку с интерфейсом посложнее разбираться.
Это так же открытое программное обеспечение.

Как-то так, ...
PS:
1. Если есть желание освоить, то более перспективным будет путь изучения не для изучения, а для какой либо, даже не очень большой, задачки.
2. Примеры, в основной своей части - это только примеры, в которых демонстрируется способ применения.
Я с этого и начинал свое понимание процесса программирования.
3. Если в ближайших окрестностях Ваших мыслей таких задач нет, то стоит уделить немного времени и придумать ...
Только супер задач ставить не надо.
4. При этом не следует стесняться использовать/изучать материал, который в параграфах расположен дальше, чем тот, который сейчас изучается. "Прыжки" - последовательное приближение к истине.
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Старый 30.11.2014, 23:30   #25
OldOwlOll
Форумчанин
 
Аватар для OldOwlOll
 
Регистрация: 28.11.2014
Сообщений: 172
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
Если изучаете Паскаль, то лучше возмите Free Pascal (+ Lazarus) или Delphi (пиратку).
Цитата:
Сообщение от ViktorR Посмотреть сообщение
Мое трезвое предложение: Скачайте Free Pascal
Спасибо за совет!
Я планирую познакомиться с Pascal на начальном уровне, чтобы просто "быть в теме". Далее собираюсь изучать Delphi, поэтому и использую PascalABC.NET - первый, что попался, предназначенный чисто для обучения и поэтому простой для восприятия. Так что перейду на Delphi, но чуточку позже, когда сменю учебник

ViktorR, спасибо за советы

А вот задачка, по которой я хотела бы получить помощь:
Платный участок трассы протянулся с километра P1 до километра P2(P1<P2).
Дорожная служба запланировала ремонт трассы на участке с R1 по R2(R1<R2).
Будут ли ремонтировать весь платный участок P1-P2 ?
· Будут ли ремонтировать хотя бы часть платного участка P1-P2 ? Если да, то
определить длину ремонтируемой платной части.
· Будут ли ремонтировать хотя бы часть бесплатного участка? Если да, то
определить длину ремонтируемой бесплатной части.


При решении у меня получается "монстрик" с десятью похожими кусками типа:
Код:
...if (X2 and Y2) then //ремонтируемый участок внутри платного
  begin
    M1 := R2 - R1;
    K:= Kl(M1);
    Writeln(C, M1,K, E)
  end
  else
  if (X4 and Y4) then //участки совпадают
  begin
    M1 := P2 - P1;
    K:= Kl(M1);
    Writeln(C, M1,K, E)
  end...
Полный код в приложенном файле. Компилируется и исполняется корректно.
Но, судя по тому, что задание находится на первых страницах учебника, должно существовать изящное решение, которого я никак не могу увидеть
Может, подскажите, как улучшить код?
Вложения
Тип файла: txt код.txt (3.9 Кб, 150 просмотров)
Делать то, что любишь - это свобода. Любить то, что делаешь - счастье. (с)
Свободу киндерам!
Счастья всем. Бесплатно. И пусть никто не уйдет обиженным. (с)
OldOwlOll вне форума Ответить с цитированием
Старый 30.11.2014, 23:45   #26
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,306
По умолчанию

Вам предлагалось:
Цитата:
Если изучаете Паскаль, то лучше возмите Free Pascal (+ Lazarus) или Delphi (пиратку).
Выделено мной. Если на работе есть и можно пользоваться Delphi то да ...
В бытовой ситуации лучше будет Lazarus.
Lazarus - это, в некотором смысле, Delphi-подобная версия, но только в свободном обращении.
Мной переделывались мои программы с Delphi на Lazarus. Существенных отличий не обнаружил (видимо по той причине, что глубоко не копал, да и сложных программ не писал).

Как-то так, ...
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Старый 30.11.2014, 23:48   #27
OldOwlOll
Форумчанин
 
Аватар для OldOwlOll
 
Регистрация: 28.11.2014
Сообщений: 172
По умолчанию

Да, у меня есть возможность взять Delphi
Делать то, что любишь - это свобода. Любить то, что делаешь - счастье. (с)
Свободу киндерам!
Счастья всем. Бесплатно. И пусть никто не уйдет обиженным. (с)
OldOwlOll вне форума Ответить с цитированием
Старый 01.12.2014, 00:06   #28
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,306
По умолчанию

К вопросу о задаче.
Я бы подумал в другую сторону.
Взял бы 2-х мерный массив: 4х2.
В первой строке ввел бы координаты участков, а во второй 0 или 1 в зависимости от того, к какому, платному или не платному участку относится координата.
Затем отсортировал массив по первой строке (координаты) по возрастанию (естественно с переносом информации о платности - в последующем такая форма представления данных может быть описана как запись в которой будут поля с указанием координат и платности).
При просмотре массива слева на право можно понять что выводить и как суммировать.
А если посмотреть в сторону того, что ремонтируемый участок может состоять из нескольких частей платных и не платных участков, ...
Так думаю, что это будет более общее решение.

Как-то так, ...
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Старый 01.12.2014, 01:51   #29
OldOwlOll
Форумчанин
 
Аватар для OldOwlOll
 
Регистрация: 28.11.2014
Сообщений: 172
По умолчанию

Цитата:
Сообщение от ViktorR Посмотреть сообщение
К вопросу о задаче.
Ничего не поняла
Спасибо! Вернусь к этому посту после знакомства с массивами
Делать то, что любишь - это свобода. Любить то, что делаешь - счастье. (с)
Свободу киндерам!
Счастья всем. Бесплатно. И пусть никто не уйдет обиженным. (с)
OldOwlOll вне форума Ответить с цитированием
Старый 07.12.2014, 19:16   #30
OldOwlOll
Форумчанин
 
Аватар для OldOwlOll
 
Регистрация: 28.11.2014
Сообщений: 172
По умолчанию

Цитата:
Сообщение от OldOwlOll Посмотреть сообщение
А вот задачка, по которой я хотела бы получить помощь <...>
При решении у меня получается "монстрик" <...>
Цитата:
Сообщение от ViktorR Посмотреть сообщение
К вопросу о задаче. Я бы подумал в другую сторону. Взял бы 2-х мерный массив: 4х2.<...>
По-моему нашла довольно симпатичное решение на множествах. Заполняю множество платных километров и множество ремонтируемых километров и оцениваю их пересечение.
Самое заморочное оказалось посчитать количество элементов в множестве. Есть для этого какая-нибудь функция в Pasсal? Я не нашла...

Код:
var
  P1, P2, R1, R2: integer;//входные данные
  SP, SR: set of byte; //множества километров платного и ремонтируемого участков соответственно 
  LP: set of byte; //множество километров платного ремонтируемого участка 
  L,M: integer;//длина ремонтируемых платного и бесплатного участка

{выбираю нужную форму слова "километров"}  
function K(aL: integer): string;
<...>

{Считаю, сколько платных километров ремонтируется, вычисляя мощность пересечения множеств}
function power(aLP: set of byte): integer;
var
  LX: set of byte;
  X: integer;
begin
  LX := [];
  if R1 < P1 then X := R1 else X := P1;
  while (LX <> aLP) do begin
    if X in aLP then begin LX := LX + [X]; Result := Result + 1; end;
  X := X + 1
  end;
end;

{главная программа}
begin 
  Writeln('Введите через пробел начало и конец платного участка '); Readln(P1, P2);
  Writeln('Введите через пробел начало и конец ремонтируемого участка '); Readln(R1, R2);
  SP := [P1..P2];
  SR := [R1..R2];
  LP := SP * SR;
  L := R2 - R1; 
  if (LP = []) then 
    Write('Платный участок ремонтироваться не будет. Будет отремонтировано ', L, ' ', K(L), ' бесплатного участка')
  else
  if (LP = SR) then 
    Write('Беслатный участок ремонтироваться не будет. Будет отремонтировано ', L, ' ', K(L), ' платного участка')
  else begin
    L := L - power(LP)+1;
    M := power(LP)-1;
    Write('Будет отремонтировано ', L, ' ', K(L), ' бесплатного участка и ', M, ' ', K(M), ' платного участка')
  end;
end.
Предложите решение лучше?...
Делать то, что любишь - это свобода. Любить то, что делаешь - счастье. (с)
Свободу киндерам!
Счастья всем. Бесплатно. И пусть никто не уйдет обиженным. (с)
OldOwlOll вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
БД вопросы spqr82 Microsoft Office Access 3 04.07.2013 11:30
Вопросы по C++ ITTI Помощь студентам 7 20.12.2011 19:14
Вопросы по БД Rost93 PHP 9 28.06.2011 22:18
Вопросы по С++ Fantazerishka Общие вопросы C/C++ 2 19.05.2010 06:52
Вопросы по if, else? molodoyy Общие вопросы C/C++ 1 25.10.2008 18:55