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

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

08.07.2009, 19:37. Показов 1689. Ответов 8
Метки нет (Все метки)

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

для составления проги нужно использовать процедурный оператор
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
08.07.2009, 19:37
Ответы с готовыми решениями:

В строку SL перенести все буквы латинского алфавита, а в строку SU - все буквы русского алфавита
Ввести с клавиатуры строку S длиной до 80 символов из букв латинского и русского алфавитов. В...

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

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

8
149 / 139 / 57
Регистрация: 05.06.2009
Сообщений: 310
09.07.2009, 13:55
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
program EvgeniiSp;
uses Crt;
var
 st: string;
//----------------------
 procedure InputData;
  begin
   writeln('Ââåäèòå ñòðîêó(òî÷êà â êîíöå ñòðîêè îáÿçàòåëüíà):');
   readln(st);
  end;
//----------------------
 procedure AnalysisData;
  var
   i: byte;
   flag: boolean;
   word,symb: string;
   chars,numb: set of char;
  begin
   numb:=['0'..'9'];
   chars:=['0'..'9','A'..'Z'];
   for i:=1 to length(st) do
    begin
     word:='';
     flag:=true;
     while (st[i]<>' ') and (st[i]<>'.') do
      begin
       word:=word+st[i];
       st[i]:=UpCase(st[i]);
       if st[i] in chars
        then if st[i] in numb
              then symb:=symb+'+' else symb:=symb+'-';
       if symb[length(symb)-1] = symb[length(symb)] then flag:=false;
       i:=i+1;
      end;
     if flag = true then writeln(word);
    end;
  end;
  
begin
 ClrScr;
 InputData;
 AnalysisData;
end.
0
2923 / 844 / 324
Регистрация: 30.04.2009
Сообщений: 2,633
09.07.2009, 14:23
что то я не догнал как работает эта программа, или по крайней мере как должна работать , так как когда я ее запустил то оне мне ничего не вывела
0
149 / 139 / 57
Регистрация: 05.06.2009
Сообщений: 310
09.07.2009, 14: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
36
37
38
39
40
41
42
43
44
45
program EvgeniiSp;
uses Crt;
var
 st: string;
//----------------------
 procedure InputData;
  begin
   writeln('Ââåäèòå ñòðîêó(òî÷êà â êîíöå ñòðîêè îáÿçàòåëüíà):');
   readln(st);
  end;
//----------------------
 procedure AnalysisData;
  var
   i: byte;
   flag: boolean;
   words,word,symb: string;
   chars,numb: set of char;
  begin
   numb:=['0'..'9'];
   chars:=['0'..'9','A'..'Z'];
   for i:=0 to length(st) do
    begin
     word:='';
     symb:=' ';
     flag:=true;
     while (st[i]<>' ') and (st[i]<>'.') do
      begin
       word:=word+st[i];
       st[i]:=UpCase(st[i]);
       if st[i] in chars
        then if st[i] in numb
              then symb:=symb+'+' else symb:=symb+'-';
       if symb[length(symb)-1] = symb[length(symb)] then flag:=false;
       i:=i+1;
      end;
     if flag = true then words:=words+' '+word;
    end;
   write(words,'.');
  end;
 
begin
 ClrScr;
 InputData;
 AnalysisData;
end.
Добавлено через 1 минуту 27 секунд
mamedovvms, первая программа выводит слова в столбик, которые имеют чередующиеся символы с цифрами.
1
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,168
09.07.2009, 15:24
Вот немного по другому и с проверкой правильности ввода строки.
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
uses crt;
const bk=['A'..'Z','a'..'z'];{множество латинских букв}
         cf=['0'..'9'];{множество цифр}
procedure Vvod(var s:string);{ввод строки с проверкой правильности ввода}
var i,k:byte;
begin
repeat
writeln;
writeln('Введите строку из латинских букв и цифр,':60);
writeln('слова разделены пробелами, в конце точка':60);
readln(s);
k:=0;
for i:=1 to length(s)-1 do{смотрим до точки(если она есть)}
if (not (s[i] in bk))and(not(s[i] in cf))and(s[i]<>' ') then{если не латинские буквы, цифры и пробелы}
 begin
  k:=1;
  break;
 end;
if k=1 then writeln('Введены недопустимые символы!');
if pos(' ',s)=0 then writeln('В строке нет пробелов!');
if (s[1]=' ')or(s[length(s)-1]=' ')then writeln('Пробел стоит не на месте!');{если пробел первый, или перед точкой}
if s[length(s)]<>'.' then writeln('Строка не оканчивается точкой!');
if (k=1)or(pos(' ',s)=0)or(s[1]=' ')or(s[length(s)]<>'.')or(s[length(s)-1]=' ')
then writeln('Повторите ввод.');
until(k=0)and(pos(' ',s)<>0)and(s[1]<>' ')and(s[length(s)]='.')and(s[length(s)-1]<>' ');{если все нормально, заканчиваем ввод}
end;
procedure NewStr(s:string;var s2:string);{основная процедура, преобразование строки}
var i,j,k,l:byte;
    s1:string;
begin
i:=1;{первый символ}
s2:='';{новая строка}
while i<=length(s) do{идем по строке}
if (s[i]<>' ')and(s[i]<>'.')then{если не пробел и не точка}
 begin
  j:=i;s1:='';{начинаем составлять слово}
  while (s[j]<>' ')and(s[j]<>'.')do{пока не пробел и не точка}
    begin
     s1:=s1+s[j];{составляем}
     j:=j+1;
    end;
  k:=0;
  for l:=1 to length(s1)-1 do{смотрим от первого до предпоследнего символа}
  if ((s1[l] in cf)and(s1[l+1] in cf))or((s1[l] in bk)and(s1[l+1] in bk)) then{если рядом буквы или цифры}
  k:=k+1;{считаем}
  if k=0 then s2:=s2+s1;{если нет такого, записываем слово в новую строку}
  i:=i+length(s1);{перепрыгиваем через слово к следующему}
 end
else
 begin
  s2:=s2+s[i];{иначе записываем символ(пробел или точка)в новую строку}
  i:=i+1;{к следующему символу} 
 end;
k:=0;
for i:=1 to length(s2) do{смотрим получившуюсю строку }
if(s2[i] in bk)or(s2[i] in cf) then k:=k+1;{считаем буквы и цифры}
if k=0 then write('Все слова удалены!')
else write(s2);{иначе выводим строку}
readln
end;
var st,new:string;
begin
clrscr;
Vvod(st);
NewStr(st,new);
end.
1
Отдыхающий:)
 Аватар для <Norton>
94 / 91 / 22
Регистрация: 05.04.2009
Сообщений: 188
09.07.2009, 20:37
А вот прога, если введины не только бувы и цифры латинского алфавита, и с проверкой на множество пробелов.
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
uses crt;
const
    lat=['A'..'Z','a'..'z'];{//Множество латинских букв}
    numb=['0'..'9'];{//Множество цифр}
var s,temp:string;k,i,j,l:byte;p1:boolean;
function kolsl(s:string):byte;var i,b:byte;{//Количество слов в предложении}
begin
    b:=0;
    for i:=1 to length(s) do
    if s[i]=' ' then inc(b);
    kolsl:=b+1;
end;
procedure del_space(var s:string);{//Удаляем все пробелы, и точку(если она есть)}
var i,j:byte;
begin
    for i:=1 to length(s)-1 do
    if(s[i]=' ')and(s[i+1]=' ')then
    while s[i+1]=' ' do
    delete(s,i+1,1);
    if pos('.',s)<>0 then
    delete(s,length(s),1);
end;
function slovo(s:string;a:byte;var f:byte):string;{//Берём из предложения слово}
var s1:string;j,l:byte;begin j:=0;f:=0;
for l:=1 to a do
begin
    s1:='';inc(j);f:=j;
while(s[j]<>' ')and(j<>length(s)+1)do
begin
    s1:=s1+s[j];
    inc(j);
end;
end;
    slovo:=s1;end;
begin clrscr;
    write('Stroka: ');
    readln(s);
    del_space(s);
    i:=1;
    while i<=kolsl(s) do{//Пока все слова не проверены}
    begin
        temp:=slovo(s,i,k);{//Записываем слово}
        l:=length(temp);{//Длина слова}
        p1:=true;
        {//Анализ}
        for j:=1 to l do
        if((temp[j] in lat)and(temp[j+1] in numb))or
        ((temp[j] in numb)and(temp[j+1] in lat))then
                p1:=true
                else if(j<>l)then begin
                p1:=false;
                break;end;
        {//Если слово нам не нужно, удаляем его}
        if(p1=false)or(l mod 2=1)then delete(s,k,l+1)
        {//Иначе, ищем следующее слово}
        else inc(i);
    end;
    {//Выводим оставшиеся слова}
    writeln('Stroka:',s);
    readkey;
end.
1
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,168
09.07.2009, 20:39
Pascal
1
procedure del_space(var s:string);{//Удаляем все пробелы, и точку(если она есть)}
А вот это зря, предложение должно остаться как есть со всеми пробелами и точкой, удаляются лишь ненужные слова.
1
0 / 0 / 0
Регистрация: 08.07.2009
Сообщений: 10
09.07.2009, 21:42  [ТС]
спасибочки всем огромное
0
Отдыхающий:)
 Аватар для <Norton>
94 / 91 / 22
Регистрация: 05.04.2009
Сообщений: 188
09.07.2009, 22:06
Puporev, вы правы, про это я забыл
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
09.07.2009, 22:06
Помогаю со студенческими работами здесь

Дан целочисленный массив размера*N. Проверить, чередуются ли в нем четные и нечетные числа. Если чередуются, то вывести*0, если нет, то вывести поряд
Дан целочисленный массив размера*N. Проверить, чередуются ли в нем четные и нечетные числа. Если...

Слово вводится большими латинскими буквами,выводится маленькими латинскими буквами
слово вводится большими латинскими буквами,выводится маленькими латинскими буквами Добавлено...

Файл f содержит буквы латинского и русского алфавитов. Занести в файл h только латинские буквы, а в файл g - только русские буквы
Помогите пожалуйста!!! Файл f содержит буквы латинского и русского алфавитов. Занести в файл h...

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

Напечатать в обратном порядке латинские буквы, входящие в текст, заменяя маленькие латинские буквы большими
Дан текст — последовательность символов, возможно, пустая, за которой следует точка. Напеча- тать...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и источниками (напряжения, ЭДС и тока). Найти токи и напряжения во всех элементах. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru