Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Последние темы форума

Показать новые сообщения »

Почтовая рассылка

Подписчиков: 6301
Последний выпуск: 19.06.2015

Работа с файлами

78K
02 февраля 2012 года
Pen'
7 / / 02.02.2012
Считать текст из исходного файла, в тексте заменить все буквы а на буквы о, встречающиеся в середине слова, и записать в конечный файл все слова где произошло более двух замен.
Прошу помощи.
315
02 февраля 2012 года
Alm3n
889 / / 29.05.2009
Что уже есть?
78K
02 февраля 2012 года
Pen'
7 / / 02.02.2012
Код:
Program z6;
Uses crt;
Var stroka,result:string;
c:char;
Procedure Read_From_File(Var s:string);
var text_file:text;
file_name:string;
begin
Write('Vvedite im9 faila: ');
Readln(file_name);
Assign(text_file,file_name);
Reset(text_file);
If IOResult<>0 then {proverka owibki otkriti9я}
begin
Writeln('fail',file_name,'ne sywestvyet');
Readln;
Halt;
end
else
begin
Readln(text_file,s);
Close(text_file);
Writeln('Pro4itanni tekst:');
Writeln(s);
end;
end;


Procedure Save_To_File(s:string);
Var text_file:text;
file_name:string;
begin
Write('Im9 faila dl9 zapisi: ');
Readln(file_name);
Assign(text_file,file_name);
Rewrite(text_file);
Writeln(text_file,s);
Close(text_file);
Writeln('Rezyltat zapizan v fail ',file_name);
end;


begin
clrscr;
Read_From_File(stroka);
Save_To_File(result);
end.


собственно сама замена и выборка мне и не понятна.
Если 'а' стоит до пробела и после пробела, тогда оставляем как есть иначе меняем 'а' на 'о'? Потом, если от пробела до пробела было больше 2 замен, то записываем это слово в файл. Я правильно понимаю?
315
02 февраля 2012 года
Alm3n
889 / / 29.05.2009
Цитата: Pen'

Если 'а' стоит до пробела и после пробела, тогда оставляем как есть иначе меняем 'а' на 'о'?


Да. Это получается, что 'а' стоит в начале и конце слова.

Цитата: Pen'

Потом, если от пробела до пробела было больше 2 замен, то записываем это слово в файл


Да, но лучше писать не слово, а всю строку уже после изменения. Читаться из файла же будет по строкам.

78K
02 февраля 2012 года
Pen'
7 / / 02.02.2012
А в коде как это будет выглядеть?
315
03 февраля 2012 года
Alm3n
889 / / 29.05.2009
Не могу написать, не помню уже паскаля. Могу подсказать, в сторону каких функций смотреть:
Length, Delete.
78K
04 февраля 2012 года
Pen'
7 / / 02.02.2012
понятно. Только ничего нового я не узнал((
1
04 февраля 2012 года
kot_
7.3K / / 20.01.2000
Цитата: Pen'
понятно. Только ничего нового я не узнал((


это все потому что учится надо не на форуме.
тем более что требования кода является грубым нарушением и прямо запрещено правилами.

78K
05 февраля 2012 года
Pen'
7 / / 02.02.2012
Извиняюсь, если что ни так. Изначально я ведь пытался разобраться, потом только обратился за помощью на форум.
И требования я никакие не выдвигал, если Вы заметили, прозвучал только вопрос.
Нет так нет. Сейчас решаю своими силами.
1
05 февраля 2012 года
kot_
7.3K / / 20.01.2000
Если бы ты пытался разобраться - то никаких бы претензий к тебе бы и не было. Разобраться - это не значит написать на форум - "Как это выглядит в коде". Разобраться - это ознакомиться с описанием функций, которые тебе посоветовали, доделать свой код и если чтото не понятно - задать уточняющие вопросы. Это куда более эффективно, чем ждать пока у кого либо найдется время и желание вспоминать паскаль [COLOR="silver"]ради очередного бездельника[/COLOR].
Тем более что как это сделать - описали вполне подробно. Дело только за тобой
78K
05 февраля 2012 года
Pen'
7 / / 02.02.2012
Приказ понял, сэр!
78K
06 февраля 2012 года
Pen'
7 / / 02.02.2012
Код:
Program z6;
Uses crt;
Var stroka, result:string;


Procedure Read_From_File (Var s:string);

var text_file:text;
file_name:string;

begin
    Write('Enter file to read: ');
    Readln(file_name);
    Assign(text_file,file_name);
    Reset(text_file);
    If IOResult<>0 then
    begin
        Writeln('fail',file_name,'not found');
        Writeln('Program finished. Press Enter');
        Readln;
        Halt;
    end
    else
    begin
        Readln(text_file,s);
        Close(text_file);
        Writeln('Readed text:');
        Writeln(s);
    end;
end;


Procedure Save_To_File(source:string; result:string);

Var text_file:text;
file_name:string;

begin
    Write('Enter file to write: ');
    Readln(file_name);
    Assign(text_file, file_name);
    Rewrite(text_file);
    Writeln(text_file, result);
    Close(text_file);
    Writeln('Result written into ',file_name);
end;

Procedure Replace(source:string; Var result:string);
Var i, j: Integer;
    allowed_symbols: set of char;
    firstIndex, lastIndex: Integer;
    current_symbol: Char;
    isWordStarted: Boolean;
    temporatory_result: String;
    matches: Integer;

begin
    i := 1;
    j := 1;
    firstIndex := 1;
    lastIndex := 1;
    temporatory_result := '';
    allowed_symbols := ['a'..'z', 'A'..'Z'];
    isWordStarted := false;
    matches := 0;

    While i <= length(source) do begin
        current_symbol := source;
        if current_symbol in allowed_symbols then begin
            if isWordStarted then begin
                lastIndex := i;
            end else begin
                firstIndex := i;
                lastIndex := i;
                isWordStarted := true;
            end;
                        if ((current_symbol = 'a') or (current_symbol = 'A')) and (i <> firstIndex) then begin
                                inc(matches);
            end;
        end else begin
            if (source[lastIndex] = 'a') and (lastIndex <> 1) then begin
                dec(matches);
            end;
            if (matches > 2) and (lastIndex <> 1) then begin
                for j := firstIndex to lastIndex do begin
                    if source[j] = 'a' then begin
                        temporatory_result := temporatory_result + 'o';
                    end else begin
                        if source[j] = 'A' then begin
                            temporatory_result := temporatory_result + 'O';
                        end else begin
                            temporatory_result := temporatory_result + source[j];
                        end;
                    end;
                end;
                temporatory_result := temporatory_result + ' ';
            end;
            firstIndex := i;
            lastIndex := i;
            matches := 0;
            isWordStarted := false;
        end;
        inc(i);
    end;
    if matches > 2 then begin
        for j := firstIndex to i - 1 do begin
            if source[j] = 'a' then begin
                temporatory_result := temporatory_result + 'o';
            end else begin
                if source[j] = 'A' then begin
                    temporatory_result := temporatory_result + 'O';
                end else begin
                    temporatory_result := temporatory_result + source[j];
                end;
            end;
        end;
    end;
    result := temporatory_result;
    Writeln;
    Writeln('Write to file:');
    Writeln(result);
end;

begin
    clrscr;
    Read_From_File(stroka);
    Replace(stroka, result);
    Save_To_File(stroka, result);
end.


Уважаемый, kot_.
Я просил помощи и это было не просто так. Не буду голословен. Вот результат.
Вы просто не правильно меня поняли.

Знаете кого-то, кто может ответить? Поделитесь с ним ссылкой.

Ваш ответ

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог