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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.03.2008, 11:07   #1
Миха_М
 
Аватар для Миха_М
 
Регистрация: 10.03.2008
Сообщений: 3
Лампочка прога исправляющая маленькую букву в новом предложении.

Народ, помогите чем можете.
задание: В текстовом файле хранится текст или
вводится с консоли (около 10 предложений), с пунктунционными ошибками -
после точки новое предложение начинается с маленькой буквы, написать
программу исправляющую эту ошибку.
Миха_М вне форума Ответить с цитированием
Старый 10.03.2008, 11:27   #2
andrey4623
Форумчанин
 
Аватар для andrey4623
 
Регистрация: 31.05.2007
Сообщений: 266
По умолчанию

можно делать так
создадим 2 переменных: temp и all типа string
1. Считал строку
2. проверяем каждый символ в строке
если это не '.' то дописать этот символ в строку temp
если '.', то следующий символ записать большим (поднять регистр)
all := temp; temp := '';
и так далее
andrey4623 вне форума Ответить с цитированием
Старый 10.03.2008, 11:37   #3
Миха_М
 
Аватар для Миха_М
 
Регистрация: 10.03.2008
Сообщений: 3
По умолчанию

спасибо, попробую.
а каким оператором счиать каждый символ? я в дельфи тока 2 день сижу. и не знаешь какой сайт где хорошо описаны большенство переменных?
Миха_М вне форума Ответить с цитированием
Старый 10.03.2008, 13:12   #4
andrey4623
Форумчанин
 
Аватар для andrey4623
 
Регистрация: 31.05.2007
Сообщений: 266
По умолчанию

можно функцией вырезания подстроки
Copy(строка, первый символ, длина вырезания)
или к каждому символу можно обратиться как к массиву.
Допустим, есть переменная str:string;
первый символ - str[0], второй - str[1], третий - str [2]
(не помню, первый символ под индексом 0 или 1)
andrey4623 вне форума Ответить с цитированием
Старый 10.03.2008, 16:52   #5
lamonana
программист
Пользователь
 
Регистрация: 08.03.2008
Сообщений: 19
По умолчанию

Под индексом 1.
Программист-Антиламер со стажем
lamonana вне форума Ответить с цитированием
Старый 10.03.2008, 17:12   #6
Карась
Участник клуба
 
Аватар для Карась
 
Регистрация: 26.10.2007
Сообщений: 1,244
По умолчанию

Цитата:
Сообщение от Миха_М Посмотреть сообщение
спасибо, попробую.
а каким оператором счиать каждый символ? я в дельфи тока 2 день сижу. и не знаешь какой сайт где хорошо описаны большенство переменных?
Нет сайта где описано "большенство переменных"... ибо их придумывают.

Как вариант это создать две строки.
1 - малые буквы(Mal), 2 - заглавные(Big).

Начинаем перебор текста. При встрече точки ставим флаг.
Теперь при дальнейшем "сканировании" мы смотрим не попалась ли нам буква.
Как только она попалась начинаем в цикле проверять эту букву в строке Mal. Найдя такую букву мы узнаём номер большой буквы.
И просто делаем замену. Если буква не встретилась, значит там стоит заглавная.
Сбрасываем флаг и снова ищем точку.
Умом Россию не понять, пока не выпито ноль пять,
А если выпито ноль пять всё делом кажется не хитрым,
Попытка глубже понимать уже попахивает литром...
Карась вне форума Ответить с цитированием
Старый 10.03.2008, 22:50   #7
Миха_М
 
Аватар для Миха_М
 
Регистрация: 10.03.2008
Сообщений: 3
Радость

я имел в виду не переменные, а процедуры и типы
Миха_М вне форума Ответить с цитированием
Старый 11.03.2008, 08:34   #8
andrey4623
Форумчанин
 
Аватар для andrey4623
 
Регистрация: 31.05.2007
Сообщений: 266
По умолчанию

Купи какую-нибудь книжку по Delphi, она лучше, чем самоучители в интернете (правда, не всегда)
andrey4623 вне форума Ответить с цитированием
Старый 11.03.2008, 10:23   #9
Vincent
Пользователь
 
Аватар для Vincent
 
Регистрация: 02.02.2007
Сообщений: 29
По умолчанию

Есть еще вариант, без создания строк типа temp:

...
var boolean prevDot;
Spacer: set of char;
...
prevDot := false;
Spacer := [#$09, #$20, #$0D, #$0A]; // символы, пропускаемые после точки
for i := 1 to length(text) do
if text[i] = '.' then
prevDot := true;
else if (prevDot) and (not (text[i] in Spacer)) then begin
text[i] := UpCase(text[i]);
prevDot := false;
end;
Быстро пойманный эксепшн исключением не считается
Vincent вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблемы с контролами в новом окне Karrde Qt и кроссплатформенное программирование С/С++ 1 13.10.2008 19:09
Получить сообщение о новом диске Comer_Jus Общие вопросы Delphi 2 11.08.2008 15:26
Нужна помощь с алгоритмом расстановки ударения в предложении. Gauss Общие вопросы Delphi 10 14.04.2008 15:31
В введенном предложении удалить все повторяющиеся слова Алена Помощь студентам 5 21.11.2007 14:12
Открытие ссылки в новом окне илья too HTML и CSS 1 14.07.2007 13:31