Другое > Hard'n'Soft
Вспоминаем Turbo Pascal и решаем задачи на нём
<< < (10/15) > >>
Roman:
Код в студию :)!
HardWareMan:

--- Цитата: Fly от 08 Июнь 2010, 14:34:35 ---Массив строк много памяти требует.
Я предлагаю так: берём исходную строку и идём по ней с конца. Когда образуется слово, вложенным циклом ищем это слово дальше по строке. Если находим, то удаляем ранее найденное слово процедурой delete и сбрасываем вложенный цикл. Потом ищем следующее и т. д.

--- Конец цитаты ---
Удалять из строки? Можно. Но массив то можно в кучу положить, а я думаю, что вряд-ли юзер напечатает больше 1КБ с клавиатуры. ;) А так, можно выводить уникальные слова + счетчик - количество повторений. ;)
Fly:
Думаешь, что товарищ, которому нужна эта программа, сможет положить массив в кучу?;)
А вообще с массивом, конечно, лучше, такая программа и работать быстрее будет.
Roman:
Вот нашел:

program string;
uses crt;

var
  i, j, k: integer;
  p, q, s: string;
begin
  write('Enter string: '); readln(s);
  i:=1;
  while i<Length(s) do begin
    while (i<Length(s)) and (s=' ') do Inc(i);
    j:=i;
    while (i<Length(s)) and (s<>' ') do Inc(i);
    q:=Copy(s,j,i-j);
    repeat
      p:=Copy(s,i,Length(s)-i+1);
      k:=Pos(q,p);
      if k>0 then Delete(s,i+k-1,i-j)
    until k=0
  end;
  WriteLn('Result: ' , s);
  Readkey;
end.

Кажись, работает правильно.  :)
Fly:

--- Цитата: Roman ---program string;
--- Конец цитаты ---
И она работает? :?
Roman:

--- Цитата: Fly от 09 Июнь 2010, 16:43:26 ---И она работает? :?

--- Конец цитаты ---

Еще как! Можешь сам проверить.
gepar:
Roman,нельзя такое имя программе задавать.
Roman:
gepar,
Хосссподи, это же пример.
HardWareMan:

--- Цитата: gepar от 09 Июнь 2010, 17:55:01 ---Roman,нельзя такое имя программе задавать.
--- Конец цитаты ---
Кто сказал?

--- Код: ---{ New Borlont Poskal 95 example program.
  This program lets you use new Borlont Poskal 95, which was built-in in the
  Borland Pascal 7.0. (I guess even developers didn't know about it.)
  It can be switched on by using double comments the [see below] way }
program external(private,public); { you can specify type of your program.
This is done in Borland Pascal 7.0, but when using Borlont Poskal 95, it
receives new meaning }

{ now, enable Borlont Poskal 95 syntax }
const forward = ^{; (* this string enables Borlont Poskal 95 }
{ now all the syntax of the new Poskal 95 can be used. Look through these
examples to find new features }
      private =  { Assign Private Action }
      BEGIN
        in case of export, do not object to destructor and goto library
      END;
      public =   { Assign Public Action }
      BEGIN
        goto do program and begin with absolute packed unit in assembler
      END;

type program = unit; { you can give any name to your identifiers }
     program = library; { you can redefine any type as many times }
     program = program; {                           as you want }
     type = var; { you can define type "type" }
     type = const;

var program : program; { you can redefine variables too }
    program : program with library; { you can use any syntax you want }
    program : program with unit;
    var : program; { you can even define variable "var" }
    var : const;
    var : type;

const program : program = program or unit and library;
      program : program = unit with library in program;
      const : const = type shl string in unit shr and;

{ new free object definition }
type object = object (do not object to object)
       constructor begin; external in library program;
       destructor end; assembler with program;
       procedure function; interrupt with assembler;
       function procedure:constructor; packed assembler unit in program;
     and end;

{ Now execute program with predefined constants (what does it mean?) }
do PROGRAM external ( const private, const public );
{ new function/procedure definition - you don't have any restriction to
function/procedure definition now! }
Function Function (Function:Function):Function; Function and Not Procedure;
 FUNCTION BEGIN
   Function:=Program(Unit Near.External(Far));
 FUNCTION END
Procedure Function (far,near : object) : function or procedure;
 begin
   Function(or procedure):=far far far far in program;
 and; { even if you mixed "end" with "and", compiler will understand it }
{ new "if" statement - no any restriction to the syntax }
IF procedure or function far far in program THEN
while repeat do repeat while;
{ You can construct any operator via constructors and destructors
(again, no restriction to the syntax) }
Constructor And (in library) : And:=library.and;
Destructor Constructor (Procedure : Function) : Program; Var;
{ New Great Assembler! Allows to write everything in words }
asm
  1. Write Message "Formatting disk C" on the screen
  2. Format Disk C (and also ignore all the Windows tries to stop it)
  3. Physically destroy hard drive
  4. Connect to the Internet
  5. Cheat Pentagon
  6. Download secret plans to the disk A:
  7. Disconnect and destroy computer (along with everything in 10 000 km^2
     around)
  8. Finish
end;
{ and at last, very free syntax. Just write everthing you want and
compiler will understand what you meant }
array begin:case[const] of constructor ...
destructor div do downto else end
exports file for function goto
if implementation in inherited inline then interface label library mod nil
not object or packed procedure program record repeat
set shl string to type shr
unit until uses var
while with xor
{ The only bad thing about Borlont Poskal 95 extension is the next:
Your program will NEVER run (although will ALWAYS compile) ;) guess why? :) }

(* And now, switch back to the Borland Pascal 7.0 with uncomment :*)

{ next lines are written in Borland Pascal 7.0. }
type far = string;

function near(far:far):far;far;
begin
  external.near:=external.far(far);
end;
{ you can also switch to the Poskal 95 extension with next line: }
const assembler = ^'; { '
begin
uses program external in unit forward xor string with far far in near
end. (* it is not end of program *)
(* another feature: number of begin's and end's doesn't have to match *)
procedure constructor and destructor(function:function and procedure);
begin
  if constructor then destructor else function in constructor;
    end:
    end;
    end,
    end.
end.
begin. begin. begin, begin begin(begin(end)).
asm
  (c) Pavel Anokhin 1999
  Net Mail: 2:5027/16.20
  E-Mail: mna@valley.ru
end and begin;
{ ok, I think that's enough, switch back to BP7 with next character:}
{ we're back in BP. Enjoy :)  Pascal rulezzzz forever!!! }

begin
  near(forward);
end.
--- Конец кода ---
Сохрани код в файл и попробуй в ТР7/ВР7.
Fly:
Ну так "external" не "string", и даже не комментарий.:)
gepar:
HardWareMan,да у тебя там какой-то Borlont Poskal, может в нём и можно, я в free pascal только что попробовал пихнуть он сразу заругался, правда заругался как всегда непонятно (за что и не люблю free pascal) так что сложно понять именно имя программы ему не нравиться или что другое. Если восстановлю загрузчик xp то попробую на обычном паскале запустить.
HardWareMan:

--- Цитата: gepar от 09 Июнь 2010, 20:52:12 ---HardWareMan,да у тебя там какой-то Borlont Poskal, может в нём и можно, я в free pascal только что попробовал пихнуть он сразу заругался, правда заругался как всегда непонятно (за что и не люблю free pascal) так что сложно понять именно имя программы ему не нравиться или что другое. Если восстановлю загрузчик xp то попробую на обычном паскале запустить.
--- Конец цитаты ---
Не парься, это просто прикол же. Прикол над паскальным синтаксис-подсвечником (дырка есть при двойной ремарке). Реальной программы там пара строк. И она пустая. Т.е., ничего не делает. Но вот этот код:

--- Код: ---type far = string;

function near(far:far):far;far;
begin
  external.near:=external.far(far);
end;
--- Конец кода ---
Реально работает. И компилер распознает, где far=модификатор и где far=тип.
Roman:
Следующая задача на расмотрение: "Написать процедуры, реализующие операции вставки, удалния и поиска элемента для динамического двунаправленного списка (списка со ссылками на следующий и предыдущий элементы)".
drak:
помогите мне пожалуйста, никак не могу разобраться эт задач :'( :'( :'( :'( :'( :'( :'(
1)вывести на экран изображение всех возможных символов вместе с их номерами.
2)напишите программу,которая вводит с клавиатуры 10реальных чисел и организовывает их хранение в массиве.после этого массив пересортировывается по закону.первый элемент меняется с последним,второй с предпоследним :'( :'( :'( :'( :'(
3)напишите программу,организующую хранение в файле нескольких записей(до10) л дневной температуре.Каждая запись содержит четыре поля-номер записи,число,месяц,температура.Организуйте вывод на экран всех всех записей, а также определите день максимальной и минимальной температуры
заранее спасибо=*
Йобан Матич:
первая прога

--- Код: ---program one;
var
   i:byte;
begin
   for i := 0 to 255 do
       begin
            writeln(chr(i),' = ', i);
       end;
   readln;
end.

--- Конец кода ---
HardWareMan:

--- Цитата: Йобан Матич от 28 Ноябрь 2010, 20:41:51 ---первая прога

--- Код: ---program one;
var
   i:byte;
begin
   for i := 0 to 255 do
       begin
            writeln(chr(i),' = ', i);
       end;
   readln;
end.

--- Конец кода ---


--- Конец цитаты ---
А вот х*й ты угадал! Все символы менее 32 будут восприняты как управляющие и будет локальный армагеддец. Нужна прямая запись в ОЗУ текстового экрана. :3
Йобан Матич:
HardWareMan,
Ы. Точно.
А может ему нужно с 32-го? Учитывая 2 и 3 задачи рано им ещё до прямой записи в ОЗУ.
gepar:
Я даже не знал что такое есть:

--- Цитата: HardWareMan ---Нужна прямая запись в ОЗУ текстового экрана. :3
--- Конец цитаты ---
Там наверное и правда надо чтобы пищало и визжало.
Хотя мне что-то подсказывает что drak болше на форум не зайдёт потому и не писал я решение для 2 задачи, зайдёт тогда уже и установлю паскаль и напишу  :)
Йобан Матич:

--- Цитата: gepar ---огда уже и установлю паскаль и напишу 
--- Конец цитаты ---
Можно и не устанавливать, так пиши =)
drak:
спасибо ребят) :lol:
Навигация
Главная страница сообщений
Следующая страница
Предыдущая страница

Перейти к полной версии