Форум программистов, компьютерный форум, киберфорум
Turbo Pascal
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
0 / 0 / 0
Регистрация: 30.06.2011
Сообщений: 9
1

Выявление строки, в которой заданное слово встречается чаще

16.07.2011, 15:24. Показов 1271. Ответов 17
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Исходные данные представляют собой отдельное слово и далее 2 строки слов.
написать программу, включающую 2 процедуры, выполняющие следующие действия:
1) Печать сведений о совпадающих символах в заданных строках
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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
program task1;
type
    mas=array[1..100] of string;
procedure slova(k1,k2:integer; ws1,ws2:mas);
var
   i,j:integer; {schet4iki}
   flag:boolean;{nali4ie odinakovih slov v raznih strokah}
begin
     writeln('slova, vtrechayshiesa v obeih strokah: ');
     flag:=false;
     for i:=1 to k1 do {proverka na odinakovie slova}
         for j:=1 to k2 do
             if ws1[i]=ws2[j] then
                begin
                     write(ws1[i],' ');
                     flag:=true;
                end;
                if flag=false then
                writeln('net odinakovih slov v raznih strokah');
end;
procedure stroka (u1,u2:string);
var
   c:char;  {vvedennij simvol}
   i,z1,z2:integer;{s4et4iki}
begin
     writeln('vvedite simvol');
     readln(c);
     z1:=0;
     z2:=0;
     for i:=1 to 255 do {pods4et kolva zadannogo simvola v strokah}
         begin
              if (u1[i]=c) then
                 z1:=z1+1;
              if(u2[i]=c) then
                 z2:=z2+1;
         end;
     if z1>z2 then
        for i:=1 to 255 do
            write(u1[i])
     else
         if z2=z1 then
         write('v strokah odinakovoe kol-va simvolov ',c)
         else
            for i:=1 to 255 do
                write(u2[i]);
 
end;
var
    u1, u2:string;  {vvedennie stroki}
    ws1, ws2:mas;   {massivi slow}
    w: string;            {tekyshee slovo}
    len1,len2: integer;        {dlina strok}
    i, j: integer;
    f:text;
    k1,k2:integer; {s4et4ik slov}
    ch:char;
begin
     assign(f,'d:\tp7\ifile.txt');
     reset(f);
     readln(f, ch);
     readln(f,u1);
     readln(f,u2);
     i := 1;
     len1:=length(u1);
     len2:=length(u2);
     k1:=1;
     k2:=1;
     while i <= len1 do   {proverka 1go simvola }
           if ((u1[i]) >= 'A') and ((u1[i]) <= 'z') then
              begin
                   w := (u1[i]);
                   i := i + 1;
                   while (i <= len1) and        {proverka posl simvolov}
                   (u1[i] >= 'A') and
                   (u1[i] <= 'z') do
                         begin
                              w := w + u1[i];
                              i := i + 1;
                         end;
                        ws1[k1] := w;
                        k1:=k1+1;
              end
           else
               i := i + 1;
     i:=1;
     while i <= len2 do   {proverka 1go simvola}
        if ((u2[i]) >= 'A') and ((u2[i]) <= 'z') then
           begin
              w := (u2[i]);
              i := i + 1;
              while (i <= len2) and        {proverka posl simvolov}
              (u2[i] >= 'A') and
              (u2[i] <= 'z') do
                  begin
                     w := w + u2[i];
                     i := i + 1;
                  end;
                  ws2[k2] := w;
                  k2:=k2+1;
             end
                else
                    i := i + 1;
        slova(k1,k2, ws1,ws2);
        stroka(u1,u2);
        readln;
 
 
end.

исходные данные (ifile.txt):
g
programmirovanie v pascal
ne poluchaetsya
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.07.2011, 15:24
Ответы с готовыми решениями:

Вводится слово. Выяснить, какая из букв первая или последняя встречается в заданном слове чаще. Вывести слово в обратном порядке...
...и сколько букв &quot;у&quot; в слове стоит на четных местах? Заранее благодарен, кто откликнется на...

Из двумерного массива строк найти ту стоку в которой буква 's' встречается чаще
задача состоит в том чтобы из двумерного массива строк найти ту стоку в которой буква's'...

Найти и вывести слово, в котором эта буква чаще встречается
Задается строка с текстом на русском языке, также задается некоторая буква, нужно найти и вывести...

Дано слово. Найти букву, которая чаще всего встречается в слове
Дано слово. Найти букву, которая чаще всего встречается в слове. Нужно составить...

17
27 / 27 / 26
Регистрация: 17.01.2011
Сообщений: 153
16.07.2011, 15:32 2
Попробуйте в конце файл закрыть, и сделать массив поменьше
0
Вирусоборец
318 / 120 / 2
Регистрация: 15.07.2011
Сообщений: 293
16.07.2011, 15:43 3
А я бы Вам посоветовал объявлять строки слов не через массив символов, а, собственно, через строку То есть не
Код
ws1=array[1..100] of string;
ws2=array[1..100] of string;
а
Код
ws1,ws2:string
1
0 / 0 / 0
Регистрация: 30.06.2011
Сообщений: 9
16.07.2011, 16:12  [ТС] 4
все равно почему то не получается(((
0
Вирусоборец
318 / 120 / 2
Регистрация: 15.07.2011
Сообщений: 293
16.07.2011, 16:28 5
Уточните пожалуйста
1) Печать сведений о совпадающих символах в заданных строках
О совпадающих символах или все-таки словах?
0
0 / 0 / 0
Регистрация: 30.06.2011
Сообщений: 9
16.07.2011, 16:49  [ТС] 6
О совпадающих символах, т.е. как я поняла программа должна сказать,что совпадения есть и указать на каких позициях они стоят в обеих строках, вроде так
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
16.07.2011, 17:07 7
Цитата Сообщение от rollen Посмотреть сообщение
и указать на каких позициях они стоят в обеих строках,
Т.е. совпадающие не обязательно на одинаковых позициях? Тогда как указывать позиции например для строк
12134526378
1133225566778899

Добавлено через 1 минуту
Я вообще-то понимаю совпадающие, это одинаковые и стоящие на одинаковых позициях, например
123456
013258
совпадают только 3, 5
0
Вирусоборец
318 / 120 / 2
Регистрация: 15.07.2011
Сообщений: 293
16.07.2011, 17:18 8
Я тоже не понимаю Я вот подумал так, например Ваши же строки:
12134526378
1133225566778899
Берем первый символ 1, совпадения в первой строке: 1,3 позиции; во-второй 1,2 позиции.
Берем второй символ 2, совпадения в первой строке: 2,7 позиции; во-второй 5,6 позиции.
и т.д.
Но если это так, то вопрос: кто придумывает такие задания?
0
0 / 0 / 0
Регистрация: 30.06.2011
Сообщений: 9
16.07.2011, 17:19  [ТС] 9
Цитата Сообщение от Puporev Посмотреть сообщение
Я вообще-то понимаю совпадающие, это одинаковые и стоящие на одинаковых позициях, например
123456
013258
совпадают только 3, 5
скорее всего вы правы), только должны указываться позиции, т.е. совпадающий символ "3", стоящий на 3й позиции

Цитата Сообщение от Techno Посмотреть сообщение
12134526378
1133225566778899
Берем первый символ 1, совпадения в первой строке: 1,3 позиции; во-второй 1,2 позиции.
Берем второй символ 2, совпадения в первой строке: 2,7 позиции; во-второй 5,6 позиции.
и т.д.
вот это навряд ли, поскольку тогда маразм полнейший получается
0
Вирусоборец
318 / 120 / 2
Регистрация: 15.07.2011
Сообщений: 293
16.07.2011, 17:28 10
Цитата Сообщение от rollen Посмотреть сообщение
вот это навряд ли, поскольку тогда маразм полнейший получается
Вот и я так подумал

Ну тогда все просто
Гоним цикл и сравниваем

Вы переделали в тип string?
1
0 / 0 / 0
Регистрация: 30.06.2011
Сообщений: 9
16.07.2011, 17:33  [ТС] 11
Цитата Сообщение от Techno Посмотреть сообщение

Вы переделали в тип string?
да, но у меня начали вылезать ошибки, стараясь исправить одну, у меня появляются другие( одним словом я запуталась
0
Вирусоборец
318 / 120 / 2
Регистрация: 15.07.2011
Сообщений: 293
16.07.2011, 17:37 12
Цитата Сообщение от rollen Посмотреть сообщение
да, но у меня начали вылезать ошибки, стараясь исправить одну, у меня появляются другие( одним словом я запуталась
так и должно было быть

Первая процедура:

добавьте в var:
Код
minstr:integer;
Код
if (Length(ws1)<Length(ws2)) then minstr:= Length(ws1) else minstr:= Length(ws2)
for i:=1 to minstr do
  if ws1[i]=ws2[i] then writeln('совпадение в позиции ',i,' ');
где ws1 и ws2 исходные строки
1
0 / 0 / 0
Регистрация: 30.06.2011
Сообщений: 9
16.07.2011, 18:02  [ТС] 13
что то у меня все равно не получается(
не могли бы показать как должна выглядеть вся программа (если не трудно)
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
16.07.2011, 18:11 14
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Можно например так.
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
uses crt;
var f:text;
    sl,s1,s2: string;
{процедура совпадения символов}
procedure Sovp;
var n,i,k:byte;
begin
if length(s1)>length(s2) then n:=length(s1) else n:=length(s2);
k:=0;
writeln('Совпадающие символы в строках');
for i:=1 to n do
if s1[i]=s2[i] then
 begin
  writeln(s1[i],' - ',i);
  k:=1;
 end;
if k=0 then writeln('Совпадающих символов нет');
end;
{процедура количества вхождений данного слова}
procedure Vstr;
const rz=[' ',',',';',':','.','?','!'];
var p,k1,k2:byte;
begin
k1:=0;
repeat
p:=pos(sl,s1);
if (p>0)and((p=1)or(s1[p-1] in rz))and((p+length(sl)-1=length(s1))or(s1[p+length(sl)] in rz))then
k1:=k1+1;
delete(s1,p,length(sl));
until p=0;
k2:=0;
repeat
p:=pos(sl,s2);
if (p>0)and((p=1)or(s2[p-1] in rz))and((p+length(sl)-1=length(s2))or(s2[p+length(sl)] in rz))then
k2:=k2+1;
delete(s2,p,length(sl));
until p=0;
if(k1=0)and(k2=0) then write('Слова ',sl,' в данных строках нет')
else if k1>k2 then   writeln('Слово ',sl,' чаще встречается в строке 1')
else if k2>k1 then  writeln('Слово ',sl,' чаще встречается в строке 2')
else write('Слово ',sl,' встречается в строках поровну');
end;
begin
clrscr;
assign(f,'input.txt');
reset(f);
readln(f,sl);
writeln('Слово ',sl);
readln(f,s1);
writeln('Строка 1');
writeln(s1);
readln(f,s2);
writeln('Строка 2');
writeln(s2);
close(f);
Sovp;
Vstr;
readln
end.
2
0 / 0 / 0
Регистрация: 30.06.2011
Сообщений: 9
16.07.2011, 18:32  [ТС] 15
Спасибки ВСЕМ, что уделили время и помогли разобраться
____
и последнее, не могли бы пояснить вот эту строчку
Цитата Сообщение от Puporev Посмотреть сообщение
21| const rz=[' ',',',';',':','.','?','!'];
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
16.07.2011, 18:35 16
Это множество разделителей слов в строках, поскольку это не оговорено в условии.

Добавлено через 2 минуты
Если У Вас точно кроме пробелов ничего нет, то это можно убрать, а писать так.
Pascal
1
if (p>0)and((p=1)or(s1[p-1]=' '))and((p+length(sl)-1=length(s1))or(s1[p+length(sl)]=' '))then
1
0 / 0 / 0
Регистрация: 30.06.2011
Сообщений: 9
17.07.2011, 04:26  [ТС] 17
Цитата Сообщение от Puporev Посмотреть сообщение
Это множество разделителей слов в строках, поскольку это не оговорено в условии.
Если У Вас точно кроме пробелов ничего нет, то это можно убрать
теперь все понятно спасибо)

Добавлено через 9 часов 48 минут
Pascal
1
if (p>0)and((p=1)or(s1[p-1] in rz))and((p+length(sl)-1=length(s1))or(s1[p+length(sl)] in rz))then
если не трудно, можете прокомментировать эту строку
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
17.07.2011, 07:53 18
Pascal
1
2
3
4
5
6
if (p>0)//если слово есть в строке
and((p=1)or(s1[p-1] in rz))//и оно первое или перед ним разделитель
and((p+length(sl)-1=length(s1))or(s1[p+length(sl)] in rz))//или оно последнее или за ним разделительъ
//т.е. слово отделено, инче можем не те слова найти, например если искать в строке
//стол, сторож, просто слово сто, которого в ней нет, без этих условий мы найдем его 3 раза
then
0
17.07.2011, 07:53
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.07.2011, 07:53
Помогаю со студенческими работами здесь

Сколько раз в тексте встречается заданное слово
прошу помочь!!!! Сколько раз в тексте встречается заданное слово (слова разделены пробелами)?

Подсчитать, сколько раз встречается заданное слово в предложении
Задано предложение y. Проверить, сколько раз встречается данное слово х в предложении у. решите,...

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

Определить, сколько раз в тексте встречается заданное слово
дан текст с клавиатуры. определить сколько раз в тексте встречается данное слово. учесть тот факт,...


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

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