ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > С/С++, C#, Delphi, .NET, Asm
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

Системные функции в текстовом режиме ОС (Pascal)
  #1  
Старый 09.02.2008, 20:01
Hardover
Новичок
Регистрация: 23.02.2007
Сообщений: 24
Провел на форуме:
186184

Репутация: 5
По умолчанию Системные функции в текстовом режиме ОС (Pascal)

Есть задание.
По запросу скрытно (звездочками) ввести строку символов, затем по приглашению в цикле вводить отдельные буквы и открывать их в исходной закрытой строке (при наличии) зеленым цветом на своих местах (ПОЛЕ ЧУДЕС).
Я ВОБЩЕ не понимаю как это реализовать. Сказали что это надо написать на паскале на системном уровне. Собственно есть ли статья на эту тему? Мне ну нужны учебники, а нужна хорошая статья направленная на решение подобных задач. Я бы сам нагуглил но я не понимаю что надо искать.
Заранее благодарен.
 
Ответить с цитированием

  #2  
Старый 09.02.2008, 20:28
rem
Новичок
Регистрация: 10.11.2006
Сообщений: 24
Провел на форуме:
59656

Репутация: 17
По умолчанию

порой та тему исходников програмки OpenPassXP или подобной там реализованы алгоритмы которые те нужны для решения етой задачи.
Если я тя пральльно понял.
А можешь привести текст задания слово в слово))
 
Ответить с цитированием

  #3  
Старый 09.02.2008, 20:40
!{ra!{e/\/
Banned
Регистрация: 27.08.2007
Сообщений: 159
Провел на форуме:
994336

Репутация: 171
Отправить сообщение для !{ra!{e/\/ с помощью ICQ
По умолчанию

Код:
 
program ex1;
uses crt;
var b:char;
st,s2:string;
i:integer;
begin
clrscr;
b:='8';
s2:='';
write('введите строку символов по нажатию нажмите пробел ');
while (b<>' ') do begin
st:=st+b;
b:=readkey;
write('*');
end;
clrscr;
for i:=2 to length(st)+1  do s2:=s2+'*';
write('ведите букву для выхода нажмите пробел  ',s2);
b:='1';
while (b<>' ') do begin
b:=readkey;
if pos(b,st)>0 then begin
clrscr;
s2[pos(b,st)]:=b;
write(s2);
end;
end;
write(length(st));
end.
Вот только написал для тебя..все работает ..сам чуть подправишь..

Последний раз редактировалось !{ra!{e/\/; 09.02.2008 в 21:19..
 
Ответить с цитированием

  #4  
Старый 09.02.2008, 21:50
Hardover
Новичок
Регистрация: 23.02.2007
Сообщений: 24
Провел на форуме:
186184

Репутация: 5
По умолчанию

Цитата:
Сообщение от rem  
порой та тему исходников програмки OpenPassXP или подобной там реализованы алгоритмы которые те нужны для решения етой задачи.
Если я тя пральльно понял.
А можешь привести текст задания слово в слово))
Спасибо посмотрю, это текст задачи слово в слово.
!{ra!{e/\/ Спасибо, навел на мысли, программа правильная, я даже понял как ее дописать, но препод сказал что надо писать ее с подключением модуля DOS.
Вот примеры программ взятые у препода.
http://www.rapidshare.ru/572471
Там 5-ть примеров и сами задания на выбор. (Я взял 29)
 
Ответить с цитированием

  #5  
Старый 11.02.2008, 03:09
Hardover
Новичок
Регистрация: 23.02.2007
Сообщений: 24
Провел на форуме:
186184

Репутация: 5
По умолчанию

Вот вроде так надо выполнять задание.
ВО вторник если доделаю прогу у препода спрошу, так ли надо было делать.
Пока что есть две проблемы.
1) Как сделать так что если в загаданном слове несколько букв одинаковых открывались все эти буквы. например слово moloko открывается только первая о.
2)Как сделать открытые буквы зеленого цвета? Там в программах которые я выложил выше есть одна в которой звездочки меняют цвет. но как это реализовать в моейм, да еще так что бы в зеленный окрашивались только уже отгаданые буквы я не знаю.
Код:
uses crt,dos,objects;

type ps=^string;

var regs:Registers;l:ptrrec;

procedure clrscr;
 begin regs.ax:=3;
       intr($10,regs);end;

procedure readln(p:ps);
   begin l:=ptrrec(p);
   with regs do begin ah:=$3f;
         bx:=0;cx:=80;
         ds:=l.seg;dx:=l.ofs+1;
         msdos(regs);
         p^[0]:=chr(ax-2) end; end;

procedure  write(p:ps);
   begin l:=ptrrec(p);
   with regs do begin ah:=$40;
     bx:=1;cx:=length(p^);
      ds:=l.seg;dx:=l.ofs+1;
         msdos(regs);end;end;

procedure writeln(p:ps);
    var e:ps;
    begin new(e);e^:=#10#13;
    write(p);write(e) end;

function readkey:char;
         begin with regs do begin
         ah:=8;msdos(regs);
         readkey:=chr(al) end end;
procedure putc(c:char);
         begin with regs do begin
         ah:=2;dl:=ord(c);
         msdos(regs);end end;

var p,s,e,st,s2:ps;
i:integer;
b:char;
k:integer;
Begin
      clrscr;new(e);e^:=#10#13;
      new(p);new(s);p^:='Введите слово, по нажатию ввода конец. ';
      new(st);new(s2);
      b:='0';
      s2^:='';
      write(p);
      repeat st^:=st^+b;
      b:=readkey;
      if b=#13 then break;
      putc('*');
      until false;
      clrscr;
      for i:=2 to length(st^)+1 do s2^:=s2^+('*');
      p^:='Введите буквы для выхода нажмите ввод ';
      write(p);
      write(s2);
      repeat b:=readkey;
      if b=#13 then break;
      if pos(b,st^)>0 then begin
      clrscr;
      s2^[pos(b,st^)]:=b;
      write (p);
      write (s2);
      end;
      until false;
      end.

Последний раз редактировалось Hardover; 11.02.2008 в 11:25..
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
OpenGL. От детского сада до гуру MacTep Авторские статьи 8 12.04.2008 21:26



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ