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

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

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

2 страниц V < 1 2  
 Ответить  Открыть новую тему 
> Выделить заголовки
сообщение
Сообщение #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 -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #22


Новичок
*

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

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


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


Гость






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

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


Новичок
*

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

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


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

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

на
Код

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

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


Новичок
*

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

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


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


Гость






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


Новичок
*

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

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


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

Добавлено (1.12.04 16:55):
исходные данные хранятся в текстовом файле и записываются тож в текстовой файл
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 -
 К началу страницы 
+ Ответить 
сообщение
Сообщение #29


Новичок
*

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

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


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

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


Новичок
*

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

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


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

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

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

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

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

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

 





- Текстовая версия 12.01.2025 0:33
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name