С Новым годом! Форум программистов, компьютерный форум, киберфорум
Turbo Pascal
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
 Аватар для CFYZ
11 / 11 / 4
Регистрация: 21.11.2009
Сообщений: 187

Вывести на экран только те предложения, в которых есть хотя бы одно однобуквенное слово

12.02.2010, 13:01. Показов 2069. Ответов 12
Метки нет (Все метки)

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


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
program lab7;
uses crt;
var
f:text;
str:string[len];
c,b,d:char;
procedure print;        {pe4ataem poka ne natknemsya na konec faila}
begin
write(b,c);
   while (c<>'.') and (c<>'!') and (c<>'?') do
    begin
read(f,c);
write(c);
    end;
    write(' ');
    read(f,b);
end;
 
procedure miss;        {propuskaem predlojenie}
begin
   while (c<>'.') and (c<>'!') and (c<>'?')  do
   read(f,c);
read(f,c);
end;
 
begin
clrscr;
assign(f,'d:\input.txt');                           {otkrivaem, i vivodim predlojeniya s 1 bukvi}
reset(f);
while not eof(f) do
 begin
  read(f,b,c);
  if c=' ' then
   print
  else
   miss;
 end;
close(f);
assign(f,'d:\input.txt');           {otkrivaem i piwem ostatok}
reset(f);
while not eof(f) do
 begin
  read(f,b,c);
  if c<>' ' then
     miss;
 end;
close(f);
readln;
end.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
12.02.2010, 13:01
Ответы с готовыми решениями:

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

Вывести на экран предложения, в которых есть хотя бы одно слово состоящее из 7 букв
Имеется задача в строке записаны несколько предложений. Каждое предложение заканчивается точкой, вопросительным или восклицательными...

Дана строка. Вывести на экран слова, внутри которых имеется хотя бы одна буква, с которой слово начинается. [Turbo prolog][есть решение]
predicates %!--------------------------------------------------------------------------------------------- ...

12
 Аватар для sergkl
6 / 6 / 5
Регистрация: 23.03.2009
Сообщений: 17
12.02.2010, 14:05
Здесь только процедура вывода на экран

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
procedure ppp;
var
  f: Text;
  i: integer;
  b: boolean;
  s: string;
begin
  assign(f, 'file.txt');
  reset(f);
  while not eof(f) do
  begin
    readln(f, s);
    i := 1;
    b := false;
    while (i <= Length(s)) and (not b) do
    begin
        b := (s[i] in ['a'..'z', 'A'..'Z']) and ((i = 1) or (not (s[i-1] in ['a'..'z', 'A', 'Z']))) and ((i = Length(s)) or (not (s[i+1] in ['a'..'z', 'A', 'Z'])));
        inc(i);
    end;
    if b then writeln(s);
  end;
  close(f);
end;
Однобуквенным словам здесь считается буква слева и справа от которой нет букв.
Можете к двум множествам (из кода ниже) добавить еще символы которые не должны окаймлять букву
Pascal
1
(not (s[i-1] in ['a'..'z', 'A', 'Z']))) and ((i = Length(s)) or (not (s[i+1] in ['a'..'z', 'A', 'Z'])));
1
 Аватар для CFYZ
11 / 11 / 4
Регистрация: 21.11.2009
Сообщений: 187
12.02.2010, 22:26  [ТС]
А можно получить непосредственно текст всей программы, а не только одной процедуры?
0
 Аватар для sergkl
6 / 6 / 5
Регистрация: 23.03.2009
Сообщений: 17
12.02.2010, 22:57
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Процедура есть остается просто добавить основную программу.
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
program lab99;
uses crt;
 
procedure ppp;
var
  f: Text;
  i: integer;
  b: boolean;
  s: string;
begin
  assign(f, 'file.txt');
  reset(f);
  while not eof(f) do
  begin
    readln(f, s);
    i := 1;
    b := false;
    while (i <= Length(s)) and (not b) do
    begin
            b := (s[i] in ['a'..'z', 'A'..'Z']) and ((i = 1) or (not (s[i-1] in ['a'..'z', 'A', 'Z']))) and ((i = Length(s)) or (not (s[i+1] in ['a'..'z', 'A', 'Z'])));
            inc(i);
    end;
    if b then writeln(s);
  end;
  close(f);
end;
 
begin
clrscr;
ppp;
readln;
end.
1
 Аватар для CFYZ
11 / 11 / 4
Регистрация: 21.11.2009
Сообщений: 187
12.02.2010, 23:02  [ТС]
Не работает твоя прога она только файл открывает и выводит его на экран.
0
 Аватар для sergkl
6 / 6 / 5
Регистрация: 23.03.2009
Сообщений: 17
12.02.2010, 23:12
Только что проверил на таком файле с таким содержанием

qwe ewqwe eqe
d ewqw w
f
rew 465 r
retttttttttttt tttttttttttttt
gfds t rer
trew t rer t tre
uuuuuuuu543 5uuio 54345


Программа вывела:

d ewqw w
f
rew 465 r
gfds t rer
trew t rer t tre

Все правильно выводит только строке в которых есть однобуквенное слово
1
 Аватар для CFYZ
11 / 11 / 4
Регистрация: 21.11.2009
Сообщений: 187
12.02.2010, 23:18  [ТС]
В задании написано что она должна выводить только те ПРЕДЛОЖЕНИЯ в которых есть хоть одно однобуквенное слово.
0
 Аватар для sergkl
6 / 6 / 5
Регистрация: 23.03.2009
Сообщений: 17
12.02.2010, 23:25
Извиняюсь невнимательно прочитал. Как я понял предложением считается последовательность символов из файла после предыдущего предложения или с начала файла и заканчивающаяся одним из символов '.', '!', '?'

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
     
program lab99;
uses crt;
 
procedure ppp;
var
  f: Text;
  i: integer;
  b: boolean;
  s: string;
  c: char;
begin
  assign(f, 'file.txt');
  reset(f);
  s := '';
  while not eof(f) do
  begin
    read(f, c);
    if (c = '.') or (c = '?') or (c = '!') then
    begin
      i := 1;
      b := false;
      while (i <= Length(s)) and (not b) do
      begin
        b := (s[i] in ['a'..'z', 'A'..'Z']) and ((i = 1) or (not (s[i-1] in ['a'..'z', 'A', 'Z']))) and ((i = Length(s)) or (not (s[i+1] in ['a'..'z', 'A', 'Z'])));
        inc(i);
      end;
      if b then writeln(s, c);
      s := '';
    end
    else s := s + c;
  end;
  close(f);
end;
 
begin
clrscr;
ppp;
readln;
end.
1
 Аватар для CFYZ
11 / 11 / 4
Регистрация: 21.11.2009
Сообщений: 187
13.02.2010, 00:27  [ТС]
Опять что то не то. Вот текст с которым работаю я. Попробуй его открыть.
Вложения
Тип файла: txt input.txt (105 байт, 14 просмотров)
0
 Аватар для sergkl
6 / 6 / 5
Регистрация: 23.03.2009
Сообщений: 17
13.02.2010, 00:35
На самом деле все то, я же еще в начале писал о том какие символы должны окаймлять букву чтоб она считалась однобуквенным словом. Сейчас изменим так что возможны только первые 33 символа

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
program lab99;
uses crt;
 
procedure ppp;
var
  f: Text;
  i: integer;
  b: boolean;
  s: string;
  c: char;
  mn: set of char;
begin
  mn := [];
  for i := 0 to 32 do mn := mn + [chr(i)]; 
  assign(f, 'input.txt');
  reset(f);
  s := '';
  while not eof(f) do
  begin
    read(f, c);
    if (c = '.') or (c = '?') or (c = '!') then
    begin
      i := 1;
      b := false;
      while (i <= Length(s)) and (not b) do
      begin
        b := (s[i] in ['a'..'z', 'A'..'Z']) and ((i = 1) or (s[i-1] in mn)) and ((i = Length(s)) or (s[i+1] in mn));
        inc(i);
      end;
      if b then writeln(s, c);
      s := '';
    end
    else s := s + c;
  end;
  close(f);
end;
 
begin
ppp;
readln;
end.
Если какие-то другие символы так же допустимы добавьте из в множество mn
1
 Аватар для CFYZ
11 / 11 / 4
Регистрация: 21.11.2009
Сообщений: 187
14.02.2010, 20:32  [ТС]
А можно ее упростить как-то, а то препод сказал что слишком запутанно и это все можно сделать кок-то проще. Он сказал что за основу надо брать то, что однобуквенные слова определяются пробелом+слово из 1 буквы+пробел. Можноли на основе этого упростить программу?
0
 Аватар для sergkl
6 / 6 / 5
Регистрация: 23.03.2009
Сообщений: 17
14.02.2010, 21:48
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Тогда можно убрать множество mn и строчку проверки заменить на
Pascal
1
b := (s[i] in ['a'..'z', 'A'..'Z']) and ((i = 1) or (s[i-1] = ' ')) and ((i = Length(s)) or (s[i+1] = ' '));
И тогда весь код примет вид:
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 lab99;
uses crt;
 
procedure ppp;
var
  f: Text;
  i: integer;
  b: boolean;
  s: string;
  c: char;
begin
  assign(f, 'input.txt');
  reset(f);
  s := '';
  while not eof(f) do
  begin
    read(f, c);
    if (c = '.') or (c = '?') or (c = '!') then
    begin
      i := 1;
      b := false;
      while (i <= Length(s)) and (not b) do
      begin
        b := (s[i] in ['a'..'z', 'A'..'Z']) and ((i = 1) or (s[i-1] = ' ')) and ((i = Length(s)) or (s[i+1] = ' '));
        inc(i);
      end;
      if b then writeln(s, c);
      s := '';
    end
    else s := s + c;
  end;
  close(f);
end;
 
begin
ppp;
readln;
end.
1
 Аватар для CFYZ
11 / 11 / 4
Регистрация: 21.11.2009
Сообщений: 187
17.02.2010, 17:57  [ТС]
Спасибо за старание, но все равно не прокатило. Препод говорит переделать мою первую программу, но как это сделать я не знаю. У кого какие идеи поделитесь пожалуйста.

Добавлено через 20 часов 50 минут
Очень срочно нужна Ваша профессиональная помощь!! Чувствую, что сам не справлюсь!!!

Добавлено через 20 часов 47 минут
Народ выручайте очень нужна Ваша помощь!!!!!!!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
17.02.2010, 17:57
Помогаю со студенческими работами здесь

Вывести все строки, в которых содержится хотя бы одно слово, оканчивающееся на “com”
4. Ввести с клавиатуры 7 строк, занести их в массив. Вывести все строки, в которых содержится хотя бы одно слово, оканчивающееся на...

Вывести на экран только те предложения, содержащие введенное с клавиатуры слово
написать программу, которая считывает из текстового файла и выводит на экран только предложения, содержащие введенное с клавиатуры слово.

Дано предложение. Нужно вывести на экран только первое слово предложения
Дано предложение. Нужно вывести на экран только первое слово предложения

Вывести на экран только цитаты, то есть предложения в кавычках
После ввода с клавиатуры произвольного текста,вывести на экран только цитаты, то есть предложения, помещенные в скобки.

Вывести четыре слова на русском языке вывести на экран все согласные буквы которые входят только в одно слово
Вывести четыре слова на русском языке вывести на экран все согласные буквы которые входят только в одно слово c#


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути Сочетание глобально распределённой вычислительной мощности и инновационных. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru