5 / 5 / 2
Регистрация: 20.05.2011
Сообщений: 58
1

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

05.06.2011, 00:16. Показов 1271. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Программисты помогите пожалуйста.

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

Как мне объяснили я должен найти положение буквы 'с' затем найти по нему слово букву я нашел а вот со словом проблемка не получается у меня ни как найти слово помогите пожалуйста№
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
uses crt;
var ch,ch1,ch2:char;
    f:text;
    z,x,s:string;
    i,j,b,a,d,g,p,o,u:integer;
    m:array [1..100] of integer;
begin
clrscr;
{---------------------------------------------------------------}
       ch:='С';
       ch1:='с';
       ch2:=' ';
{---------------------------------------------------------------}
       assign(f,'g:\finp.txt');
       reset(f);
       while not eof(f) do
       begin
            read(f,s);
       end;
       close(f);
{---------------------------------------------------------------}
       writeln(s);
       j:=length(s);
{---------------------------------------------------------------}
       u:=pos('с',s);
       writeln(u);
 
       {if (s[i]='С') or (s[i]='с') then
            begin
            writeln(i);
            end;
       }
end.
 Комментарий модератора 
Теги кода исправлены модератором. Для оформления кода Pascal следует выделить этот код и на панели редактирования сообщения нажать кнопку "PASCAL".
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.06.2011, 00:16
Ответы с готовыми решениями:

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

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

Создать строковый файл и записать в него все слова длины K из исходного файла
Дано целое число K и текстовый файл. Создать строковый файл и записать в него все слова длины K из...

Создать строковый файл и записать в него все слова длины K из исходного файла
Text31. Дано целое число K и текстовый файл. Создать строковый файл и запи- сать в него все слова...

1
13104 / 5885 / 1706
Регистрация: 19.09.2009
Сообщений: 8,808
05.06.2011, 02:06 2
Найти все слова, которые содержат заданные буквы:
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
program Project1;
 
const
  //Множество разделителей слов.
  D = ['.', ',', ':', ';', '!', '?', '-', ' ', #9, #10, #13];
  //Короткое имя входного файла.
  Fn1 = 'file1.txt';
  //Короткое имя выходного файла.
  Fn2 = 'file2.txt';
var
  F1, F2 : Text;
  S, sW : String;
  Ch : Char;
  Dc, Dw : set of Char;
  i, Len, Pos1 : Integer;
begin
  repeat
    Writeln('Задайте набор символов, которые должны присутствовать в искомых словах:');
    Dc := [];
    repeat
      Writeln('Задайте символ:');
      Readln(Ch);
      Dc := Dc + [Ch];
 
      Writeln('Продолжить ввод симолов - Enter. Прекратить ввод - любой символ + Enter.');
      Readln(S);
    until S <> '';
 
    Assign(F1, Fn1);
    Reset(F1);
    Assign(F2, Fn2);
    Rewrite(F2);
 
    while not Eof(F1) do begin
      Readln(F1, S);
      Len := Length(S);
      Dw := [];
      Pos1 := 0;
      for i := 1 to Len do begin
        //Пропускаем разделители.
        if S[i] in D then Continue;
        //Составляем множество символов, присутствующих в слове.
        Dw := Dw + [ S[i] ];
        //Отслеживаем начало слова.
        if (i = 1) or (S[i - 1] in D) then Pos1 := i;
        //Отслеживаем конец слова.
        if (i = Len) or (S[i + 1] in D) then begin
          //Записываем слово во второй файл, если оно содержит
          //заданный набор символов.
          if Dc - Dw = [] then begin
            sW := Copy(S, Pos1, i - Pos1 + 1);
            Writeln(F2, sW);
          end;
          //Сброс множества.
          Dw := [];
        end;
      end;
    end;
 
    Close(F1);
    Close(F2);
 
    //Ответ.
    Writeln('Исходные данные взяты из файла: ', Fn1);
    Writeln('Результат записан в файл: ', Fn2);
 
    Writeln('Повторить - Enter, выход - любой символ + Enter.');
    Readln(S);
  until S <> '';
end.
Найти все слова, которые содержат хотябы одну из заданных букв:
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
program Project1;
 
const
  //Множество разделителей слов.
  D = ['.', ',', ':', ';', '!', '?', '-', ' ', #9, #10, #13];
  //Короткое имя входного файла.
  Fn1 = 'file1.txt';
  //Короткое имя выходного файла.
  Fn2 = 'file2.txt';
var
  F1, F2 : Text;
  S, sW : String;
  Ch : Char;
  Dc, Dw : set of Char;
  i, Len, Pos1 : Integer;
begin
  repeat
    Writeln('Задайте набор символов. В дальнейшем будут искаться те слова,');
    Writeln('которые содержат хотябы один из этих символов.');
    Dc := [];
    repeat
      Writeln('Задайте символ:');
      Readln(Ch);
      Dc := Dc + [Ch];
 
      Writeln('Продолжить ввод симолов - Enter. Прекратить ввод - любой символ + Enter.');
      Readln(S);
    until S <> '';
 
    Assign(F1, Fn1);
    Reset(F1);
    Assign(F2, Fn2);
    Rewrite(F2);
 
    while not Eof(F1) do begin
      Readln(F1, S);
      Len := Length(S);
      Dw := [];
      Pos1 := 0;
      for i := 1 to Len do begin
        //Пропускаем разделители.
        if S[i] in D then Continue;
        //Составляем множество символов, присутствующих в слове.
        Dw := Dw + [ S[i] ];
        //Отслеживаем начало слова.
        if (i = 1) or (S[i - 1] in D) then Pos1 := i;
        //Отслеживаем конец слова.
        if (i = Len) or (S[i + 1] in D) then begin
          //Записываем слово во второй файл, если оно содержит
          //хотябы один из заданных символов.
          if Dc * Dw <> [] then begin
            sW := Copy(S, Pos1, i - Pos1 + 1);
            Writeln(F2, sW);
          end;
          //Сброс множества.
          Dw := [];
        end;
      end;
    end;
 
    Close(F1);
    Close(F2);
 
    //Ответ.
    Writeln('Исходные данные взяты из файла: ', Fn1);
    Writeln('Результат записан в файл: ', Fn2);
 
    Writeln('Повторить - Enter, выход - любой символ + Enter.');
    Readln(S);
  until S <> '';
end.
Цитата Сообщение от Alsi Посмотреть сообщение
Как мне объяснили я должен найти положение буквы 'с' затем найти по нему слово букву я нашел а вот со словом проблемка не получается у меня ни как найти слово помогите пожалуйста№
Решение этим способом для варианта: "Найти все слова, которые содержат хотябы одну из заданных букв":
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
program Project1;
 
const
  //Множество разделителей слов.
  D = ['.', ',', ':', ';', '!', '?', '-', ' ', #9, #10, #13];
  //Короткое имя входного файла.
  Fn1 = 'file1.txt';
  //Короткое имя выходного файла.
  Fn2 = 'file2.txt';
var
  F1, F2 : Text;
  S, sW : String;
  Ch : Char;
  Dc : set of Char;
  i, Len, Pos1, Pos2 : Integer;
begin
  repeat
    Writeln('Задайте набор символов. В дальнейшем будут искаться те слова,');
    Writeln('которые содержат хотябы один из этих символов.');
    Dc := [];
    repeat
      Writeln('Задайте символ:');
      Readln(Ch);
      Dc := Dc + [Ch];
 
      Writeln('Продолжить ввод симолов - Enter. Прекратить ввод - любой символ + Enter.');
      Readln(S);
    until S <> '';
 
    Assign(F1, Fn1);
    Reset(F1);
    Assign(F2, Fn2);
    Rewrite(F2);
 
    while not Eof(F1) do begin
      Readln(F1, S);
      Len := Length(S);
      i := 1;
      while i <= Len do begin
        //Отслеживаем заданные символы.
        if S[i] in Dc then begin
          //Ищем границу слова слева.
          Pos1 := i;
          while (Pos1 > 1) and not ( S[Pos1 - 1] in D ) do Dec(Pos1);
          //Ищем границу слова справа.
          Pos2 := i;
          while (Pos2 < Len) and not ( S[Pos2 + 1] in D ) do Inc(Pos2);
          //Выделяем слово.
          sW := Copy(S, Pos1, Pos2 - Pos1 + 1);
          //Записываем слово в файл.
          Writeln(F2, sW);
          //Перепрыгиваем найденное слово.
          i := Pos2 + 1;
        end else begin
          Inc(i);
        end;
      end;
    end;
 
    Close(F1);
    Close(F2);
 
    //Ответ.
    Writeln('Исходные данные взяты из файла: ', Fn1);
    Writeln('Результат записан в файл: ', Fn2);
 
    Writeln('Повторить - Enter, выход - любой символ + Enter.');
    Readln(S);
  until S <> '';
end.
1
05.06.2011, 02:06
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.06.2011, 02:06
Помогаю со студенческими работами здесь

Создать строковый файл и записать в него все слова длины K из исходного файла
Дано целое число K и текстовый файл. Создать строковый файл и записать в него все слова длины K из...

Создать строковый файл и записать в него , все слова длины К из исходного файла.
Помогите написать програмку на Паскаль! Дано целое число К и текстовый файл .Создать строковый...

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

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


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru