IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

2 страниц V < 1 2  
 Ответить  Открыть новую тему 
> Выделить заголовки
Milena
сообщение 30.11.2004 18:44
Сообщение #21


Новичок
*

Группа: Пользователи
Сообщений: 13
Пол: Женский

Репутация: -  0  +


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

program Verhnii_registr;
uses crt;

var
ch: char;
i : byte;
count:integer;
fin,fout:text;

Function UpStr(S:char):char; {перевод строки в верхний регистр}
Var I:Byte;
Begin

if  S in ['a'..'z']
   then S := UpCase(S)
   else
       begin
       if S in ['а'..'п']
       then

           S:=Chr(Ord(S)-$20)
       else if S in ['р'..'я']
            then S:=Chr(Ord(S)-$50);
       end;

UpStr:=S;
end;

Var
 wasEOLn: boolean;
begin
   clrscr;
   assign(fin,'in.txt');
   reset(fin);
   assign(fout,'out.txt');
   rewrite(fout);
   count:=0; wasEOLn := False;
   while not eof(fin) do
    begin
   read (fin,ch);

   If wasEOLn then ch := UpStr(ch);

   if ch=' ' then  count:=count+1

   else  begin if count>2 then begin

                   ch:= UpStr(ch);
                   count:=0;
              end
                           else  count:=0;
              end;
   write(fout,ch);
   wasEOLn := (ch = #10)
   end;
   close(fin);
   close(fout);
end.

Проверь это

Сообщение отредактировано: volvo - 30.11.2004 19:00
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Milena
сообщение 30.11.2004 18:47
Сообщение #22


Новичок
*

Группа: Пользователи
Сообщений: 13
Пол: Женский

Репутация: -  0  +


Volvo спасибо тебе большое...ты меня так выручаешь. Да я и сама уж заметила эту ошибку...тока теперь у меня еще одна проблема. Смотри выше.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 30.11.2004 18:57
Сообщение #23


Гость






Milena
Есть идея. Дело в том, что в текстовом файле переход на след. строку кодируется 2-мя символами: #13#10. То есть, тебе нужно ввести новую переменную типа Boolean (например, WasEOLn:Boolean), при считывании символа проверять, не был ли считан #10 и если был, то этой переменной присваивать True.

Смотри свой пост выше - я покажу, как это сделать...
 К началу страницы 
+ Ответить 
ShadowWatcher
сообщение 30.11.2004 18:57
Сообщение #24


Новичок
*

Группа: Пользователи
Сообщений: 29
Пол: Мужской

Репутация: -  -1  +


Есть такое предложение:
заменить строки
Код

if ch=' ' then  count:=count+1
else ...

на
Код

If (ch= ' ') Then
 Inc(Count)
Else
 If (ch=#13) Then
   Count := 3
Else ...

Тогда проверка на кол-во предшествующих пробелов сразу выдаст необходимость увеличить букву...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Milena
сообщение 1.12.2004 17:03
Сообщение #25


Новичок
*

Группа: Пользователи
Сообщений: 13
Пол: Женский

Репутация: -  0  +


Прикольно...но проблема то не решилась. Теперь просто становятся заглавными буквы начала строки, но не учитывается тот факт было ли перед ними нужное колическто пробелов в предыдущей строке или нет.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 1.12.2004 17:19
Сообщение #26


Гость






Milena
Давай сразу полное задание. Хорошие программы не пишутся по частям (сделать одно, добавить второе, исправить третье). С самого начала нужно четко знать все условия и правила. Иначе происходит то, что получилось сейчас... Скорее всего, программу придется переписывать...
 К началу страницы 
+ Ответить 
Milena
сообщение 1.12.2004 17:49
Сообщение #27


Новичок
*

Группа: Пользователи
Сообщений: 13
Пол: Женский

Репутация: -  0  +


Ну дык задание :Перевести заголовки в верхний регистр. Заголовком считается буква перед которой 3 или больше пробелов....вот

Добавлено (1.12.04 16:55):
исходные данные хранятся в текстовом файле и записываются тож в текстовой файл
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 1.12.2004 18:03
Сообщение #28


Гость






Milena

Прогонял эту программу по десятку файлов, на всех она отработала...

Код

program Verhnii_registr;
uses crt;

var
ch: char;
i : byte;
count:integer;
fin,fout:text;

Function UpStr(S:char):char;
Var I:Byte;
Begin

 if S in ['a'..'z']
 then S := UpCase(S)
 else
   begin
     if S in ['а'..'п']
       then
         S:=Chr(Ord(S)-$20)
       else if S in ['р'..'я']
            then S:=Chr(Ord(S)-$50);
   end;

 UpStr:=S;
end;


begin
 clrscr;
 assign(fin,'in.txt');
 reset(fin);
 assign(fout,'out.txt');
 rewrite(fout);
 count:=0;
 while not eof(fin) do
   begin
     read (fin,ch);
     if ch=' ' then  count:=count+1

     else
       if not (ch in [#10, #13]) then
         begin
           if count>2 then ch:= UpStr(ch);
           count:=0;
         end;
     write(fout,ch);
   end;
 close(fin);
 close(fout);
end.


Одно замечание - при проверке работы не изменяй текстовые файлы в Паскале. Изменяй их в Блокноте (Паскаль не сохраняет пробелы в конце строки)...

Сообщение отредактировано: volvo - 1.12.2004 18:06
 К началу страницы 
+ Ответить 
Milena
сообщение 1.12.2004 18:53
Сообщение #29


Новичок
*

Группа: Пользователи
Сообщений: 13
Пол: Женский

Репутация: -  0  +


Volvo,спасибо большое ...все клево работает :-) Я счастлива :D

Добавлено (2.12.04 16:37):
вот мне сегодня препод задал переделать прогу так, что переводились в верхний регистр тока символы у которых отступ ОТ НАЧАЛА СТРОКИ з или более пробела huh.gif Как тогда будет <_< ?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 2.12.2004 17:51
Сообщение #30


Гость






Milena
Ну и как это называется? Опять меняем задание?
Код

program Verhnii_registr;
uses crt;

var
ch: char;
i : byte;
count:integer;
fin,fout:text;

Function UpStr(S:char):char;
Var I:Byte;
Begin

 if S in ['a'..'z']
 then S := UpCase(S)
 else
   begin
     if S in ['а'..'п']
       then
         S:=Chr(Ord(S)-$20)
       else if S in ['р'..'я']
            then S:=Chr(Ord(S)-$50);
   end;

 UpStr:=S;
end;


begin
 clrscr;
 assign(fin,'in.txt');
 reset(fin);
 assign(fout,'out.txt');
 rewrite(fout);
 count:=0;
 while not eof(fin) do
   begin
     read (fin,ch);
     if ch = #10 then count := 0
     else
       if ch = ' ' then inc(count, byte(count <> -1))
       else
         begin
           if count > 2 then ch := upstr(ch);
           count := -1;
         end;
     write(fout,ch);
   end;
 close(fin);
 close(fout);
end.
 К началу страницы 
+ Ответить 
Milena
сообщение 2.12.2004 18:44
Сообщение #31


Новичок
*

Группа: Пользователи
Сообщений: 13
Пол: Женский

Репутация: -  0  +


Нет Volvo....это называется, что препод задал дополнительный вопрос. Спасибо :-)

Добавлено (11.12.04 9:56):
:-( опять меняю задания... Оказывается раньше я его сама не понимала. Так вот заголовок-это когда от НАЧАЛА строки пять или более символов.
Например , дано :
здравствуйте дети
здравствуйте

выход:
ЗДРАВСТВУЙТЕ ДЕТИ
здравствуйте

Вооот...мозгов как всегда сделать не хватает....хелп....

Добавлено (11.12.04 10:35):
вопрос отменяется...у меня получилось УРААААААА
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

2 страниц V < 1 2
 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 16.07.2025 12:15
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"