Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
 Аватар для Евдокия
8 / 8 / 1
Регистрация: 24.10.2013
Сообщений: 205

Создать строковый файл, содержащий все слова из исходного файла, начинающиеся указанной буквой

19.03.2014, 14:23. Показов 1498. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Дан символ С и текстовый файл. Создать строковый файл,содержащий все слова из исходного файла, начинающиеся этой буквой. Знаки препинания не учитывать. Если нет подходящих слов, оставить файл пустым.
Вот что у меня получилось:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
Program pr;
uses crt;
Var f1,f2:text;
    I,n: integer;
    S: string;
Begin
clrscr;
    Assign(f1, ‘file1.txt); 
    Rewrite(f1);  
    Readln(n); 
    for i:=1 to n do
    begin
        readln(s); 
        writeln(f1,s); 
    end;
    close(f1); 
    Reset(f1); 
    Assign(f2, ‘file2.txt); 
    Rewrite(f2); 
    While not eof(f1) do
    Begin
        Readln(f1,s);
        If (s[1]=’C’) or (s[1]=’c’) then
        Writeln(f2,s); 
    End;
    Close(f1);
     close(f2);
    Writeln;
    Writeln(‘Второй файл содержит слова:);
    Reset(f2); 
    While not eof(f2) do 
    Begin
        Readln(f2,s);
        Writeln(s); 
 readln;
    End;
close(f2);
End.
Но эта программа выводит только строки, которые начинаются с буквы С. Что нужно изменить, чтобы выводились именно слова, начинающиеся с "С"???

Добавлено через 19 часов 49 минут
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
19.03.2014, 14:23
Ответы с готовыми решениями:

Создать строковый файл, содержащий все слова длины N из исходного файла
Дано целое число N и текстовый файл. Создать строковый файл, содержащий все слова длины N из исходного файла (знаки препинания,...

Дан строковый файл. Создать новый строковый файл, содержащий все строки исходного файла наибольшей длины (в обратном порядке)
Дан строковый файл. Создать новый строковый файл, содержащий все строки исходного файла наибольшей длины (в обратном порядке). Дана...

Дан символ 'C' (прописная латинская буква) и текстовый файл. Создать строковый файл, содержащий все слова из исходного файла, начинающиеся этой буквой
Дан символ 'C' (прописная латинская буква) и текстовый файл. Создать строковый файл, содержащий все слова из исходного файла, начинающиеся...

5
Модератор
Эксперт Pascal/DelphiЭксперт NIX
 Аватар для bormant
7816 / 4635 / 2837
Регистрация: 22.11.2013
Сообщений: 13,158
Записей в блоге: 1
19.03.2014, 21:32
Pascal
1
2
3
4
5
6
var
  c: char;
...
  Write('Введите букву: '); ReadLn(c); c:=UpCase(c);
...
  if UpCase(s[1])=c then ...
Однако, огорчу. Ваша программа считает, что в исходном файле находится список слов (по одному слову на строку), а в задании сказано, что в исходном файле текст, то есть по нескольку слов на строку, эту часть нужно добавлять.

Добавлено через 5 минут
Пример разбора строки на слова можете посмотреть, например, в этом сообщении: Как будет выглядеть код, написанный на Си в Паскале в программке под №7.
1
0 / 0 / 0
Регистрация: 20.10.2013
Сообщений: 1
19.03.2014, 21:52
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
While not eof(f1) do
  Begin
    Readln(f1,s);
    i:=1;
    M:=0;
 
    //While (S[i]=' ')and(i<>length(S)) then inc(i); //пропуск пробелов в начале
 
    While i+m <= length(S) do
    begin
 
      If (s[i]=’C’) or (s[i]=’c’) then
        While (S[i+m]<>' ')and(i+m<>length(S)) then inc(m);
 
      Writeln(f2,Copy(s,i,m));
 
      i:=M+i+1;
    end;
 
End;
0
 Аватар для Евдокия
8 / 8 / 1
Регистрация: 24.10.2013
Сообщений: 205
20.03.2014, 17:45  [ТС]
Должно получиться что-то вроде этого?
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
Program pr;
uses crt;
Var f1,f2:text;
    I,n,j: integer;
    S: string;
  c: char;
Begin
clrscr;
    Assign(f1, ‘file1.txt); 
    Rewrite(f1);
Write('Введите букву: '); ReadLn(c);  
    Readln(n); 
    for i:=1 to n do
    begin
        readln(s); 
        writeln(f1,s); 
    end;
    close(f1); 
    Reset(f1); 
    Assign(f2, ‘file2.txt); 
    Rewrite(f2); 
    While not eof(f1) do
    Begin
        Readln(f1,s);i:=1;
    repeat
      while (i<=Length(s)) and (s[i]=' ') do inc(i);
      j:=i;
      while (i<=Length(s)) and (s[i]<>' ') do inc(i); 
        if i>j then begin
        Copy(s,j,i-j);
        If (s[j]=’C’) or (s[j]=’c’) then
        Writeln(f2,s); 
    End;
    Close(f1);
     close(f2);
    Writeln;
    Writeln(‘Второй файл содержит слова:);
    Reset(f2); 
    While not eof(f2) do 
    Begin
        Readln(f2,s);
        Writeln(s); 
 readln;
    End;
close(f2);
End.
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
 Аватар для bormant
7816 / 4635 / 2837
Регистрация: 22.11.2013
Сообщений: 13,158
Записей в блоге: 1
20.03.2014, 18:39
Лучший ответ Сообщение было отмечено Евдокия как решение

Решение

Евдокия,
оно же у вас не компилируется, да?
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
program pr;
var
  f1, f2: text;
  i, n, j: integer;
  s: string;
  c: char;
Begin
  Assign(f1,'file1.txt'); Rewrite(f1);
  Assign(f2,'file2.txt'); Rewrite(f2); 
  Write('Введите букву: '); ReadLn(c); c:=UpCase(c); { только латиница }
  WriteLn('Введите текст, окончание - пустая строка:');
  ReadLn(s);
  while s<>'' do begin
    WriteLn(f1,s); ReadLn(s);
  end;
  Close(f1); Reset(f1); 
  while not eof(f1) do begin
    Readln(f1,s); i:=1;
    repeat
      while (i<=Length(s)) and (s[i]=' ') do inc(i);
      j:=i;
      while (i<=Length(s)) and (s[i]<>' ') do inc(i); 
      if (i>j) and (UpCase(s[j])=c) then
        WriteLn(f2,Copy(s,j,i-j)); 
    until i>Length(s);
  end;
  Close(f1); Close(f2); Reset(f2);
  WriteLn;
  WriteLn('Второй файл содержит следующие слова:');
  while not eof(f2) do begin
    Readln(f2,s); WriteLn(s); 
  End;
  Close(f2);
  Write('Нажмите ENTER...'); ReadLn;
end.
1
 Аватар для Евдокия
8 / 8 / 1
Регистрация: 24.10.2013
Сообщений: 205
20.03.2014, 18:44  [ТС]
Спасибо Вам огромное!!!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
20.03.2014, 18:44
Помогаю со студенческими работами здесь

Создать строковый файл и записать в него все слова из исходного файла, начинающиеся на эту букву (прописную или строчную)
Дан символ &quot;С&quot; - прописная (заглавная) русская буква и текстовый файл Создать строковый файл и записать в него все слова из исходного...

Дан символ 'C' (прописная латинская буква) и текстовый файл. Создать строковый файл, содержащий все слова из исходного файла
Дан символ 'C' (прописная латинская буква) и текстовый файл. Создать строковый файл, содержащий все слова из исходного файла, начинающиеся...

Дан строковый файл. Создать новый строковый файл, содержащий все строки исходного файла наибольшей длины
Всем привет! Кто может помочь с двумя небольшими програмками по работе с файлами? Очень буду благодарен... 2)Дана строка S нулевое,...

Дан строковый файл. Создать новый строковый файл, содержащий все строки исходного файла наименьшей длины (в том же порядке).
Даны имена двух файлов вещественных чисел. Известно, что первый из них существует и является непустым, а второй в текущем каталоге...

Создать новый строковый файл, содержащий все строки исходного файла наименьшей длины
Дан строковый файл. Создать новый строковый файл, содержащий все строки исходного файла наименьшей длины (в том же порядке). ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru