Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.03.2013, 14:26   #1
Qifir
 
Регистрация: 24.03.2013
Сообщений: 6
По умолчанию Паскаль. Обработка символьных данных.

Здравствуйте, уважаемые форумчане) Очень нужна ваша помощь. Со строками ещё со школы не дружу, поэтому мне никак не даётся данная задачка. Сколько бы я над ней не билась) Буду вам очень благодарна за помощь)

Условия:

- Написать программу, которая читает с клавиатуры произвольную строку символов, преобразует ее и выводит результат на дисплей в виде строки.
- Длина строки заранее не вводится, а определяется после окончания ввода с клавиатуры.
- В строке группы символов разделяются одним или несколькими пробелами. Пробелы могут находиться в начале и в конце строки. Группа символов - последовательность букв, цифр или знаков, отделенная пробелами от других групп или находящаяся в начале/конце строки.
- Все буквы считать вводимыми только в нижнем регистре, Заглавные буквы не рассматривать.
- В заголовок окна программы записать свои данные: имя, фамилию и номер варианта.

Примеры возможных строк: ‘ 12.3 tryi yu ()?*‘, ‘ 6е-1 swty +12_3‘


Сама задача:

Напечатать симметричные группы символов из строки, если они состоят только из цифр.
Например, строка: ‘ !2! 12321 reter 123 508805’ ; результат: ‘12321 508805’

Спасибо за внимание
Qifir вне форума Ответить с цитированием
Старый 24.03.2013, 14:50   #2
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Для начала напишите программу, которая просто вводит строку, а затем выводит ее на экран.
Потом последовательно нужно будет написать еще 3 процедуры:
- разбиение строки на "группы символов",
- анализ группы символов на симметричность,
- анализ группы символов на то, что она содержит только цифры.
s-andriano вне форума Ответить с цитированием
Старый 24.03.2013, 17:14   #3
Qifir
 
Регистрация: 24.03.2013
Сообщений: 6
По умолчанию

Цитата:
Сообщение от s-andriano Посмотреть сообщение
- анализ группы символов на симметричность,
- анализ группы символов на то, что она содержит только цифры.
Хотя бы маленький намёк на то, как выглядят эти процедуры, можно? :3
Qifir вне форума Ответить с цитированием
Старый 24.03.2013, 19:54   #4
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Я же написал, что нужно сделать сначала.
Где?
s-andriano вне форума Ответить с цитированием
Старый 24.03.2013, 20:32   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

пусть в переменной Gr находится очередная группа символов (БЕЗ пробелов!)

Цитата:
- анализ группы символов на симметричность,
Код:
var isSimmetry : boolean;
...
  isSimmetry := true;
  n := Length(Gr);
  for i:=1 to (n div 2)  do 
    if Gr[i]<>Gr[n-i+1] then  begin
        isSimmetry := false;
        Break
    end;

  if isSimmetry 
    then WriteLn('Группа симметрична')
    else WriteLn('Группа несимметрична');
Цитата:
- анализ группы символов на то, что она содержит только цифры.
Код:
var isDigitsOnly : boolean;
...
  isDigitsOnly := true;
  for i:=1 to Length(Gr) do 
    if Not (Gr[i] in ['0'..'9'] then  begin
        isDigitsOnly := false;
        Break
    end;

  if  isDigitsOnly 
    then WriteLn('Группа содержит только цифры')
    else WriteLn('Группа содержит не только цифры');
Serge_Bliznykov вне форума Ответить с цитированием
Старый 25.03.2013, 00:02   #6
Qifir
 
Регистрация: 24.03.2013
Сообщений: 6
По умолчанию

Serge_Bliznykov, спасибо большое за примеры кода, теперь мне более-менее понятно)

s-andriano, завтра покажу вам весь код, Сэнсэй х)

как-то так... в конце вообще бред. не получается у меня симметричность найти

Код:
var
    fullstr,s,s_int: string;
    int,n,i: integer;
    space,err: integer;
begin
    writeln('String:');
    readln(fullstr);
    while fullstr[1] = ' ' do
        delete(fullstr,1,1);
    while fullstr[length(fullstr)] = ' ' do
        delete(fullstr,length(fullstr),1);
    while pos('  ',fullstr) <> 0 do
        delete(fullstr,pos('  ',fullstr),1); 
    s_int := '';    
    while fullstr <> '' do begin
        space := pos(' ',fullstr);
        if space = 0 then
            space := length(fullstr) + 1;
        s := copy(fullstr,1,space-1);
        val(s,int,err);
        if err = 0 then
            s_int := s_int + s + ' ';        
        delete(fullstr,1,space);
    end; 
    n := length (s_int);
for i := 1 to n div 2 do
if s_int[i] = s_int[n-i+1] then
     write('Симметричные числа: ',s_int); 
readln
end.


________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE]
(это кнопочка на панели форматирования с решёточкой #)
Не забывайте об этом!

Модератор.

Последний раз редактировалось Stilet; 27.03.2013 в 23:18.
Qifir вне форума Ответить с цитированием
Старый 25.03.2013, 20:47   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Так чем Вас мой пример не устроил?!
Вы поменяли алгоритм, причём - изменили так, что он стал нерабочим.
подумайте, что будет делать Ваш код, если группа, например, такая:
1275421

прямо, на листике с бумажкой пройдитесь по циклу, посмотрите, что будет происходить...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 25.03.2013, 21:00   #8
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Qifir, а Вы не могли бы прокомментировать код?
Обычно именно это позволяет самому найти ошибки в своем коде без посторонней помощи.
Ну и, кроме того, Ваш код оставляет весьма странное впечатление: с одной стороны Вы аккуратно избавляетесь от всех лишних пробелов (что, конечно, полезно, но условием не регламентируется), но при этом даже не пытаетесь сделать то, чего требует условие. Тем более, что код двух нужных блоков уже был приведен Serge_Bliznykov, но Вы его не используете.
Да и название переменных у Вас почему-то совсем не такие, как в коде Serge_Bliznykov.
Складывается впечатление, что Вы вообще ничего даже не пытались сделать, а вместо этого взяли первый попавшийся не относящийся к теме исходник, и выдаете его за собственные попытки.
s-andriano вне форума Ответить с цитированием
Старый 25.03.2013, 21:16   #9
Qifir
 
Регистрация: 24.03.2013
Сообщений: 6
По умолчанию

Признаюсь, чужой код был бессовестно украден из одного источника с примерами строковых задач, где требовалось найти целые, вещественные числа и слова, но я его адаптировала под мои условия. первая часть программы без проблем находит и выводит числа. При попытке использовать примеры Serge_Bliznykov, Паскаль взбунтовался и выдавал ошибки, которые я безрезультатно пыталась исправить) С процедурами и функциями у меня так же туговато.
Прокомментировать могу так: первая часть программы находит и выводит на экран через пробел все части строк, содержащие только цифры. А дальше у меня были мысли из новой, сформировавшейся строки найти числа, которые симметричны. Честно, ковырялась 2.5 часа, но ничего не смогла придумать. Можете закидать помидорами
Qifir вне форума Ответить с цитированием
Старый 25.03.2013, 22:13   #10
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Вообще-то первая часть приведенного вами кода (примерно половина по объему) очищает строку от лишних пробелов. А вот вторая, действительно, отфильтровывыает только цифры, но совсем не тем методом, что предложил Serge_Bliznykov.
А разница в том, что код Serge_Bliznykov работает корректно, а тот, что у Вас правильно будет работать лишь на последовательностях, не превосходящих 4-5 цифр.

И все-таки приведите Ваши попытки объединить свой код с предложенным Serge_Bliznykov.

PS. 2.5 часа - совершенно недостаточное время, чтобы хоть чуть-чуть научиться программировать.
s-andriano вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обработка символьных данных Ксения love Помощь студентам 1 25.01.2013 00:32
Обработка символьных данных. Паскаль.... Миша_misha Паскаль, Turbo Pascal, PascalABC.NET 2 05.03.2012 15:49
Обработка символьных данных Солнышконанебе Помощь студентам 4 27.02.2012 14:21
обработка символьных данных Olgaandsasha Помощь студентам 3 04.02.2012 17:07
обработка символьных данных. паскаль кусака Помощь студентам 8 26.04.2010 17:28