Форум программистов, компьютерный форум, киберфорум
Free Pascal
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
37 / 31 / 13
Регистрация: 08.12.2012
Сообщений: 815

Вывести все номера телефонов, содержащиеся в сообщении

08.10.2013, 14:18. Показов 2123. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
ЗАДАНИЕ "в сообщении могут встречаться номера телефонов записанные в формате
xx-xx-xx ,xxx-xxx,xxx-xx-xx. Вывести все номера телефонов содержащихся в сообщении"
не могу понять ,как можно задать условие для вывода
форматов телефона из строки ...или посимвольно их что-ли считывать как-то
любой намек -приветствуется
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
08.10.2013, 14:18
Ответы с готовыми решениями:

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

Вывести все четные цифры, содержащиеся в слове наибольшей длины, и вывести число повторений каждой этой цифры
Дан массив из n слов произвольной длины (длина слова не превышает 80 символов). Элементами слов...

Вывести адреса и номера телефонов абонента с заданной фамилией
Дан файл - телефонный справочник: ФИО, адрес, номера телефонов. вывести адреса и номера телефонов...

2
 Аватар для chizz
993 / 521 / 102
Регистрация: 19.03.2013
Сообщений: 3,114
Записей в блоге: 19
08.10.2013, 14:32
Лучший ответ Сообщение было отмечено ujif как решение

Решение

Посимвольно. Например так:

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
var s:string;
i:integer;
out_str:string;
start_tag:boolean;
begin
writeln('введите строку');
readln(s);
out_str:='';
start_tag:=false;
    for i:=0 to length(s) do
     begin
     if (not (s[i] in ['0'..'9'])) and (s[i]<>'-') then
      begin
       if (out_str <> '') and (start_tag=true) then
         begin
         writeln(out_str);
         out_str:='';
         end;
         
       start_tag:=false;
 
      end;
 
      if (s[i] in ['0'..'9']) or (s[i]='-') then
      begin
         out_str:=out_str+s[i];
         if s[i]='-' then start_tag:=true;
      end;
 
     end;
end.
Start Tag нужен чтобы определить что есть '-'. Чтобы например "число 123 не телефон, вот телефон 32-234-23" нормально работало.

В данном коде не отрабатывает бажные записи телефонов (234-, 234-243-, -234-234 и т.п)
И отдельно '-' надо отработать. "число 123 не телефон, вот телефон - 32-234-23" выдаст не то, что ожидалось
1
37 / 31 / 13
Регистрация: 08.12.2012
Сообщений: 815
09.10.2013, 14:59  [ТС]
если в сообщении рассматривать только "нормальные" номера ,
которые я привел в задании или подобные им то прога получилась
следующая
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
program telephonegiveme;uses crt;
const n=6;//кол-во ячеек в массиве
type myarray=array[1..n]of string;
  var  a:myarray;// а- имя массива
        i,k:integer;i-номер символа в строке k-кол-во ячеек в массиве занятых телефонными номерами
       s,r:string;//s-строка в которой ищем всю лабудень,r-сюда записываем очередной телеф.номер
procedure firstinto(s:string;var i:integer);//ищет номер символа в строке-где стоит первая цифра телеф.номера
begin
  while not(s[i] in['0'..'9'])and(i<length(s))do//пока не наткнется на символ цифры или не закончится строка
     inc(i);
end;//конец firstinto
procedure intomassiv(var a:myarray;r:string;var k:integer);//заносит номер телефона в массив
begin
  inc(k);//k число ячеек массива занятых найденными телеф.номерами       
  a[k]:=r;//заносим в ячейку под № k массива (a) найденный номер из строки(r)
end;//конец intomassiv
procedure numbertelephone(s,r:string;var i:integer);//формирует строку r,(номер телефона)из символов
begin r:='';                                                       //телеф.номера найденного в строке s
   while(s[i] in['0'..'9'])or(s[i]='-') do begin //посимвольно считывает пока цифра и разделяющий их дефис'-'
     r:=r+s[i];  //тут наверно и так ясно
     inc(i);
   end;//конец while
    intomassiv(a,r,k);//строку r  c, телефонным номером, передаем для записи в массив (а)
end;//конец numbertelephone
procedure output(a:myarray;k:integer);//выводит номера телефонов из массива
 var i:integer;
begin
    for i:=1 to k do
      wrilteln(a[i]);
end;//конец output
begin clrscr;//ОСНОВНОЕ ТЕЛО ПРОГРАММЫ
  s:='кому 12-12-12 а кому 123-12-12 а вот кому 123-123';//веселенькая строчка
     s:=s+' ';//обязательно пробел в конце строки иначе при окончании стоки словами выход может быть ERROR!!!
     i:=1;//искать первую цифру телеф.номера начинаем с первого символа в строке
     k:=0;//количество ячеек занятых телеф.номерами
  while i<length(s) do begin
      firstinto(s,i);//ищет номер символа в строке( i )- первую цифру телеф.номера  
    if i<length(s) then //с этим условием не надо лишний раз ползать в  numbertelephone
       numbertelephone(s,r,i);//выделяет из строки(s) номер телефона и заносит в массив(а)
    end;//конец while i<..
    output(a,k);//вывод всех найденных номеров из массива
end.//конец всему -расслабьтесь
в этой проге не рассматриваются обрывки номеров или номера
с лишними дефисами (-) то есть нормальный чел., написал нормальные
номера телефонов ,только между буквами ,а потом забыл ,как их там найти
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
09.10.2013, 14:59
Помогаю со студенческими работами здесь

Дан текст. Получить множества - Первое включает все символы, содержащиеся в тексте, второе - все символы, которых в тексте нет.
Дан текст. Получить два множества - Первое включает все символы, содержащиеся в тексте, второе -...

Вывести все четные цифры, содержащиеся в слове наибольшей длины
1.Как сделать так, чтобы при выводе информации о количестве повторений каждого четного числа в...

Вывести все содержащиеся в массиве нечетные числа в порядке возрастания их индексов
помогите пожалуйста :gsad::impossible: Array8. Дан целочисленный массив размера N. Вывести все...

Дан целочисленный массив размера N. Вывести все содержащиеся в данном массиве чётные числа в порядке убывания их индексов
Дан целочисленный массив размера N. Вывести все содержащиеся в данном массиве чётные числа в...

Вывести все гласные буквы, содержащиеся в слове наибольшей длины
Дан массив из n слов произвольной длины (длина слова не превышает 80символов). Вывести все гласные...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru