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

Тема в разделе "Delphi - FAQ", создана пользователем safary, 4 дек 2008.

  1. safary

    safary Гость

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

    etc Гость

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

    safary Гость

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

    etc Гость

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

    safary Гость

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

    etc Гость

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

    safary Гость

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

    etc Гость

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

    safary Гость

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

    etc Гость

    safary Показывайте, исправим.
     
  11. safary

    safary Гость

    Код (Text):
    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.
    что примерно так =(
     
  12. etc

    etc Гость

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

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


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

    safary Гость

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

Поделиться этой страницей