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

Определить, имеются ли в строке слова со сдвоенными(строенными и т.д) буквами

06.05.2013, 23:04. Показов 1535. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В школе дали написать две программы(Сдать их надо завтра - 07.05.13). Первую на двухмерный массив написал. Вторую почти, не могу понять где ошибку допустил. Помогите найти ошибку или напишите новую программу, пожалуйста))
Задача: Дана произвольная строка символов. Определить, имеются ли в строке слова со сдвоенными(строенными и т.д) буквами. Напечатать их ко-во. Убрать сдвоенные буквы.
Ссылка на программу: http://rghost.ru/45812004
P.S: Паскаль знаю, плохо разбираюсь только в строчках, на что, в принципе, эта программа.
Код:
Code
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
uses CRT;
var str: string;
i,a,b: integer;
d: integer;
c: array[1..100] of integer;
Begin
writeln('Введите строчку: ');
readln(str);
a:=length(str);
for i:=1 to a do
 begin
  if (str<>' ') then
   begin
    b:=b+1;  //сколько букв
    if (b=0) then
     begin
      str[d]:=str[i];
     end;
   end;
  if (str=' ') then
   begin
    c[b]:=c[b]+1; //подсчет слов с 'b' буквами
    if (b=2) then
     begin
      delete(str,d,2);
     end;
    //writeln('Слов, состоящих из ',b,' символов: ',c[b]);
   end;
 end;
 
a:=length(str);
for b:=1 to a do
 begin
  if (c[b]<>0) then
   begin
    writeln('Слов, состоящих из ',b,' символов: ',c[b]);
   end;
 end;
end.
Добавлено через 1 час 2 минуты
Все, сам написал))
Решил полностью переписать)
Может быть есть мелкие недочеты, но главное, что хотел, то программа делает.
Кому надо, вот:
Code
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
uses crt;
var str: string;
i,a,b,d: integer;
c: array[1..100] of integer;
first: array[1..100] of integer;
last: array[1..100] of integer;
Begin
writeln('Введите строчку: ');
readln(str);
a:=length(str);
for i:=1 to a do
 begin
  if (str[i]<>' ') then
   begin
    b:=b+1; //сколько букв
    if (i=a) then  //если в конце нет пробела, то последнее слово не засчитается. Это условие нужно, чтобы слово засчитывалось.
     begin
      c[b]:=c[b]+1; //колличество слов с b буквами
     end;
   end;
  if (str[i]=' ') then
   begin
    c[b]:=c[b]+1; //колличество слов с b буквами
    if (b=2) then //если слово состоит из двух букв, то записываем начало и конец этого слова, чтобы в последсвие его удалить.
     begin
      d:=c[b]; //какое по счету слово состоящее из двух букв.
      first[d]:=i-d*2;
     end;
    b:=0; //обнуляем все для того, чтобы подсчитать сколько букв в слове идущем через пробел(в следующем слове)
   end;
 end;
 
for b:=1 to a do
 begin
  if (c[b]<>0) then
   begin
    writeln('Слов, состоящих из ',b,' букв: ',c[b]);
   end;
 end;
 
for d:=1 to a do
 begin
  delete(str,first[d],2);
  a:=length(str);
  if (d=a) and (str[a-2]=' ') then
   begin
    delete(str,a-1,2);
   end;
 end;
 
write(str);
end.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
06.05.2013, 23:04
Ответы с готовыми решениями:

Удалить слова со сдвоенными буквами
вобщем нужно удалить слова со сдвоенными буквами в символьном массиве, и я тут совсем запутался. я задаю в фале с расширением .PAS строку...

Определить, имеются ли в строке симметричные слова
Дана фраза, Определить, имеются ли в ней симметричные 5-ые слова Добавлено через 44 минуты Print &quot;vedite stroky&quot; Input...

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

4
142 / 148 / 116
Регистрация: 15.11.2012
Сообщений: 537
Записей в блоге: 2
06.05.2013, 23:06
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
var
   str: string;
   i,k: integer;
   f:Boolean;
BEGIN
Write('S='); Readln(str);
str:=str+' ';
i:=2; k:=0; f:=False;
While i<=Length(str) Do Begin
      If str[i]=str[i-1] Then Begin
         Delete(str,i,1);
         Dec(i);
         f:=True;
      End;
      If str[i]=' ' Then Begin
         While str[i]=' ' Do Inc(i);{esli probelov mnogo ;) }
         If f Then Inc(k); {kol-vo slov}
         f:=False;
      End Else Inc(i);
End;
Writeln('stroka=',str);
Writeln('slov=',k);
Readln
END.
Обрати внимание для того чтобы с последним словом в строке не мучаться, к концу строки добавляют пробел, чтобы потом по принципу "дойти до пробела" посчитать правильно, например, кол-во слов.
1
0 / 0 / 0
Регистрация: 06.05.2013
Сообщений: 4
06.05.2013, 23:26  [ТС]
orange_rush, не считает кол-во слов, состоящих из двух и более букв и не удаляет слова, состоящие из двух букв(пробовал в pascal ABC) - выводит:
stroka=да нет го даже еж
slov=0
И цикл бесконечный, так как пока я не нажму STOP, программа не прекратится.
Но все равно поставлю плюс, так как ты один решил помочь мне, спасибо
0
142 / 148 / 116
Регистрация: 15.11.2012
Сообщений: 537
Записей в блоге: 2
06.05.2013, 23:56
у меня в TP7 работу завершает отлично ничего не зацикливается.
А насчёт слов, он считает количество тех слов в которых есть сдвоенные, строенные и т.д. буквы.

Добавлено через 1 минуту
Если тебе надо количество всех слов, замени 17-ю строку на:
Pascal
1
Inc(k);
Добавлено через 7 минут
Я даже знаю где он, скорее всего зацикливает, попробуй 16 строку заменить на
Pascal
1
While (str[i]=' ')and(i<=Length(str)) Do Inc(i);
Добавлено через 11 минут
А, ёпт, а может она вообще не зависает а ждёт нажатия клавиши enter!?
предпоследняя строка Readln.
Ты подумай немного над написанным, если тебе нужно удалить вообще все буквы что являются сдвоенными (я то сделал так чтобы по одной осталось, удалил повторы), то напиши по тому же принципу как я пробегаю по пробелам, т.е.
Если символ равен предыдущему, то пока следующий символ равен предудущему, увеличивать i, а предварительно запомнить позицию i в переменную t, а потом сделать Delete(s,t-1,i-t);
Pascal
1
2
3
4
5
If s[i]=s[i-1] Then Begin 
  t:=i; 
  While s[i]=s[i-1] Do Inc(i); 
End;
Delete(s,t-1,i-t);
0
0 / 0 / 0
Регистрация: 06.05.2013
Сообщений: 4
07.05.2013, 15:26  [ТС]
orange_rush, да, readln не заметил в конце
ок, спасибо)))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
07.05.2013, 15:26
Помогаю со студенческими работами здесь

В каждой строке удалить те слова, в которых первые три буквы совпадают с начальными буквами последнего слова строки
Дан например файл (text.txt) . Этот файл нужно вызвать и удалить те слова, в которых первые три буквы совпадают с начальными буквами...

В строке оставить только слова с чётным количеством символов и и в правой половине слова имеются все символы из левой
Приветствую. Задача звучит таким образом: Требуется разработать программу, которая обеспечивает: 1) возможность ввода строки со...

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

Определить, сколько начальных букв первого слова совпадает с начальными буквами второго слова.
Ввести с клавиатуры два слова. Определить, сколько начальных букв первого слова совпадает с начальными буквами второго слова.

Определить,сколько начальных букв первого слова совпадают с начальными буквами второго слова
Даны 2 слова. Определить,сколько начальных букв первого слова совпадают с начальными буквами второго слова.


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru