Помощь - Поиск - Пользователи - Календарь
Полная версия: C++ текстовые файлы
Форум «Всё о Паскале» > Delphi, Assembler и другие языки. > Другие языки
NoM
Вот задание
________________________________________________________________________________
________________________________________________________
С помощью текстового редактора создать файл, содержащий текст, длина которого не превышает 700 символов (длина строки текста не должна превышать 70 символов).
Имя файла должно иметь расширение DAT. Написать программу, которая:
- выводит текст на экран дисплея;
- по нажатию произвольной клавиши поочередно выделяет в тексте заданные слова (заданные слова вводить с клавиатуры).
________________________________________________________________________________
_________________________________________________________

Вот код паскаля помогите мне пожалуйста

uses crt;

const
  alpha = ['a'..'z', 'A'..'Z'];
var
  ft: text;
  s: string;

  a, b: array[1 .. 50] of string;

  line_count, n,  i,j,f:integer;
  ch:byte;

  p, len: byte;
  start: integer;
  ss, st: string;
  isgray: boolean;

procedure print_all;
var i: integer;
begin
  clrscr;
  for i := 1 to line_count do begin
	isgray := true; textcolor(lightgray);
	st := a[i];
	for len := 1 to length(a[i]) do
	  if st[len] = '~' then begin
		if isgray then begin
		  textcolor(lightred);
		  isgray := false;
		end
		else begin
		  textcolor(lightgray);
		  isgray := true;
		end
	  end
	  else write(st[len]);

	writeln;
  end;
  readln;
end;

begin
  Assign(ft,'text700.dat');
  reset(ft);

  clrscr;

  line_count := 0;
  while not eof(ft) do begin
	readln(ft,s); writeln(s);
	inc(line_count);
	a[line_count]:=s;
  end;

  close(Ft);

  write('n='); readln(n);
  writeln('new word - new line');
  for i:=1 to n do readln(b[i]);

  clrscr;
  for i:=1 to line_count do begin
	p := 0; st := a[i];

	for j := 1 to n do { !!! }
	  repeat
		start := p;
		p := start + pos(b[j], copy(st, start + 1, 255));
	  if
		(
		  (p <> start)
		  and
		  ((p = 1) or ( (p > 1) and not(st[p-1] in alpha)))
		  and
		  (
			(p + pred(length(b[j])) = length(st)) or
			((p + pred(length(b[j])) < length(st)) and
			not(st[p+length(b[j])] in alpha))
		  )
		) then

		begin
		  ss := a[i];

		  delete(st, p, length(b[j]));
		  insert('~'+b[j]+'~', st, p);

		  inc(p, length(b[j]));
		  a[i] := st;
		  print_all;

		  a[i] := ss;
		  st := ss;
		end;
	  until p = start;
	a[i] := st;

  end;
  readln;
end.


volvo
Ага, больше делать нечего, только извращаться в ПЕРЕВОДЕ программ с Pascal на C++... Попробуй, сделай. Чего же ты сам не делаешь этого?

1000 раз повторять? НЕ ПЕРЕВОДИТЕ программы с одного языка на другой: хотите нормальной функциональности - пишите СРАЗУ на нужном языке... НЕВОЗМОЖНО с Паскаля перенести на С программу, работающую со строками. А если и возможно - она будет корявой и в 3 раза больше по размеру.

Поиск тоже не для красоты:
Работа с файлом, С
NoM
VOLVO ну не мучай меня ты же профи тебе это сделать раз плюнуть ну пожалуйста
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.