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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.04.2012, 20:48   #1
kos19
 
Регистрация: 25.04.2012
Сообщений: 4
По умолчанию задача в Паскале

Здравствуйте! Помогите пожалуйста.
Пусть задан текст, состоящий из слов. Под словом понимаеться последовательность литер, не содержащая пробелов и знаков препинания. Если слово начинается с латинской строчной буквы, то заменить её на прописную. Нельзя использовать массивы и строки(
не могу понять как можно сделать, что бы проверял только первую букву
Код:
uses crt;
var c:char;
begin
writeln ('vvedite text');
repeat
c:=readkey;
read (c);
until (c='!') or (c=' ') or (c=',') or (c='.');
for c:=1 to '!' do
if (c=' ') or (c='.') or (c=',') then begin
if ((c+1)>='A') and ((c+1)<='Z') then begin
 case (c+1) of
 'A': (c+1):='a';
 'B': (c+1):='b';
 'C': (c+1):='c';
 'D': (c+1):='d';
 'E': (c+1):='e';
 'F': (c+1):='f';
 'G': (c+1):='g';
 'H': (c+1):='h';
 'I': (c+1):='i';
 'J': (c+1):='j';
 'K': (c+1):='k';
 'L': (c+1):='l';
 'M': (c+1):='m';
 'N': (c+1):='n';
 'O': (c+1):='o';
 'P': (c+1):='p';
 'Q': (c+1):='q';
 'R': (c+1):='r';
 'S': (c+1):='s';
 'T': (c+1):='t';
 'U': (c+1):='u';
 'V': (c+1):='v';
 'W': (c+1):='w';
 'X': (c+1):='x';
 'Y': (c+1):='y';
 'Z': (c+1):='z';
 end;
 end;
 write (c);
 readln;
end.
мб с boolean как-то...
kos19 вне форума Ответить с цитированием
Старый 26.04.2012, 07:56   #2
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

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

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

Необходимо ввести признак (boolean), что предыдущий символ был разделителем - пробелом или знаком препинания.
Перед началом обработки присваиваем TRUE.
При получении очередного символа:
- если он разделитель - признак := TRUE, печатаем символ,
- если он другой символ: если признак = TRUE, анализируем и выводим, если признак = FALSE, выводим без анализа. После чего признак := FALSE.

Анализ заключается в том, чтобы строчный латинский символ заменить на прописной, а никакие другие не менять.
s-andriano вне форума Ответить с цитированием
Старый 26.04.2012, 11:50   #3
baster128
Форумчанин
 
Аватар для baster128
 
Регистрация: 24.04.2010
Сообщений: 205
По умолчанию

Без массивов если можно множества использовать.
baster128 вне форума Ответить с цитированием
Старый 26.04.2012, 13:38   #4
kos19
 
Регистрация: 25.04.2012
Сообщений: 4
По умолчанию

ну я решил проблему без boolean, но проблема в том что выводится после пробела или точки или запятой большая буква и сразу маленькая
Код:
uses crt;
var c,c1:char;
begin
writeln ('vvedite text');
repeat
c1:=c;
c:=readkey;
write(c);
if (c1=' ') or (c1=',') or (c1='.') then begin
 case c of
 'A': c:='a';
 'B': c:='b';
 'C': c:='c';
 'D': c:='d';
 'E': c:='e';
 'F': c:='f';
 'G': c:='g';
 'H': c:='h';
 'I': c:='i';
 'J': c:='j';
 'K': c:='k';
 'L': c:='l';
 'M': c:='m';
 'N': c:='n';
 'O': c:='o';
 'P': c:='p';
 'Q': c:='q';
 'R': c:='r';
 'S': c:='s';
 'T': c:='t';
 'U': c:='u';
 'V': c:='v';
 'W': c:='w';
 'X': c:='x';
 'Y': c:='y';
 'Z': c:='z';
 end;
 write (c);
 end;
 until (c='!');
end.
надо как то убрать большу

Последний раз редактировалось kos19; 26.04.2012 в 13:41.
kos19 вне форума Ответить с цитированием
Старый 26.04.2012, 14:21   #5
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,427
По умолчанию

Код:
case c of
 'A'..'Z': c:=chr(ord(c)+32);
end;
Упс, плохо прочел ваш пост
Ну по крайней мере сократил ваш код
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )

Последний раз редактировалось BDA; 26.04.2012 в 14:26.
BDA на форуме Ответить с цитированием
Старый 26.04.2012, 14:30   #6
kos19
 
Регистрация: 25.04.2012
Сообщений: 4
По умолчанию

спасибо, за сокращение, тоже пригодиться=) но вот вывод до сих пор не могу отредактировать
kos19 вне форума Ответить с цитированием
Старый 26.04.2012, 15:05   #7
kos19
 
Регистрация: 25.04.2012
Сообщений: 4
По умолчанию

всё, решил проблему сам
достаточно было написать один раз write в конце)
kos19 вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
задача в паскале Anton94.by Помощь студентам 1 02.12.2011 09:15
Задача на Паскале Вика М. Помощь студентам 4 02.12.2010 17:37
Задача в Паскале Наталия2012 Помощь студентам 1 26.07.2010 20:56
Задача в паскале Viktoria90 Помощь студентам 2 30.12.2009 17:51