Строковые переменные

  • Автор темы safary
  • Дата начала
S

safary

Помогите,пожалуйста, с программой. Незнаю как её делать. Буду очень благодарна за помощь. Написать программу, которая считывает текст из файла и выводит его на экран, заменив цифры от 0 до 9 на слова "ноль","один",...,"девять", начиная каждое предложение с новой строки.
 
E

etc

начиная каждое предложение с новой строки.
Боюсь что в общем задачу по времени будут решать так долго, что смысл в ее решении потеряется, иначе либо надо вводить доп условия, либо покупать готорый енжин. :eek:
 
S

safary

Неужели все так плохо?))) У меня есть пару идей как это сделать, например через 2 массива - цифр и строк, но я не могу представить как это реализовать(
 
E

etc

Плохо, то что,в ОБЩЕМ случае, распознать предложение в каком либо тексте очень не простая задача.
Например: "... Мы приехали в г. Монте-Карло, что находится в княжестве Монако, что-бы на яхте "Алые Паруса" покататься на волнах самого прекрасного моря, и т.д.!"
Сколько тут предложений? Как определили?
 
S

safary

а если взять самый простой и идеализированный пример, где есть из знаков препинания только точка? и она всегда будет стоять только в конце предложения. и вообще это не самое важное, мне больше не понятен алгоритм замены цифр словами! =(
 
E

etc

а если взять самый простой и идеализированный пример
Вот поэтому я сразу и упоминал про доп условия, потому как в задаче об этом нини. А решать задачу неимея на руках все условия, мягко говоря бессмысленно.
не понятен алгоритм замены цифр словами
Ну это самое простое. А вам только цифры или числа? потому как это несколько разные понятия.
 
S

safary

Нужно найти в тексте цифры, заменить их словами и вывести на экран текст из файла(см.условие);
 
E

etc

safary Ну так это совсе не сложно. создаете примерно такой массив:
['нол', 'адын', 'двэ', 'тры', ... 'дэвят']
далее найдя в тексте цифру меняете ее на элемент масива по индексу соответствующему найденной цифре, и все.
 
S

safary

А можно примерный код? у меня постоянно какие то ошибки вылезают(
 
S

safary

Код:
function ReplaceWord(str,word,value:string):string; 
var 
x1,x2,x3:integer; 
begin 
Result:=str; 
x1:=pos(word,str); 
if x1=0 then exit; 
x2:=x1+Length(word); 
x3:=Length(str)-x2+1; 
Result:=Copy(str,0,x1-1)+value+Copy(str,x2,x3); 
end; 

const 
mas:array[0..9]=('ноль', 'один', 'два', 'три',...,'девять'); 

var 
s:string; 
i,ii:integer; 
begin 
assign(f_in, 'num.txt');
reset(f_in); 
s:=st[i]; 
for ii:=0 to 9 do 
begin 
s:=ReplaceWord(s,inttostr(ii),mas[ii]); 
end; 
end;
end.
что примерно так =(
 
E

etc

Перво-наперво надо прочитать в справке про массивы, для этого становитесь на слово array и нажимаете F1.

Но ... тут в принципе и массив не нужен, просто тупо прореплейсить все цифры типа StringReplac или AnsiReplaceStr.
... но у вас и работа с файлами тоже храмает, надо читать ...


ваш код это наверное сбор кусков из разных мест ... надо писать самой, а то так ничему не научитесь, да и к результату прийти проблематично.
 
S

safary

Ну незнаю я как делать( пыталась- не получается( а толком никто не объяняет, я конечно понимаю, что я должна сама учится, но я все лабы сделала, а эту не могу( у меня прям к ней стойкое отсуствие мозгов(
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!