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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.04.2012, 11:59   #11
whatever
a.k.a. Skull
Форумчанин
 
Регистрация: 17.11.2009
Сообщений: 963
По умолчанию

Цитата:
Сообщение от TinMan Посмотреть сообщение
И более академично, и наиболее оптимально, а заодно и короче:
Код:
  while not EoF(f) do begin
    readln(f,s);
    writeln(g,s:50);
  end;
Афигенно. Серьезно, я даже проверять начал, почему-то думал, что пробелы в конец добавятся
Все тривиальное просто
whatever вне форума Ответить с цитированием
Старый 11.04.2012, 19:51   #12
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Цитата:
Сообщение от TinMan Посмотреть сообщение
И более академично, и наиболее оптимально, а заодно и короче:
Код:
  while not EoF(f) do begin
    readln(f,s);
    writeln(g,s:50);
  end;
И академично, и оптимально - это верно, только вот данный вариант не удовлетворяет условию "добавив в начало непустой строки нужное количество пробелов".
s-andriano вне форума Ответить с цитированием
Старый 12.04.2012, 04:34   #13
TinMan
Форумчанин
 
Аватар для TinMan
 
Регистрация: 05.09.2011
Сообщений: 869
По умолчанию

Цитата:
Сообщение от whatever Посмотреть сообщение
Афигенно. Серьезно, я даже проверять начал, почему-то думал, что пробелы в конец добавятся
whatever, а ты попробуй еще вот так:
Код:
    writeln(g,s:-50,'and smth else here..');
- просто из любопытства )).

Цитата:
Сообщение от s-andriano Посмотреть сообщение
И академично, и оптимально - это верно, только вот данный вариант не удовлетворяет условию "добавив в начало непустой строки нужное количество пробелов".
Не согласен. В условии сказано только то, что в выходном файле должны быть именно пробелы (а не табуляции, например). Боюсь, ты понял задание слишком буквально. Пробелы _вставлены_. Как вставлены? Посредством применения форматного вывода. Простите за оффтоп, но каждый вставляет, как ему нравится ))
Предпочитаю на "ты".

Последний раз редактировалось TinMan; 12.04.2012 в 07:15.
TinMan вне форума Ответить с цитированием
Старый 12.04.2012, 08:50   #14
f1x
Пользователь
 
Регистрация: 10.04.2012
Сообщений: 10
По умолчанию

Цитата:
Сообщение от TinMan Посмотреть сообщение
И более академично, и наиболее оптимально, а заодно и короче:
Код:
  while not EoF(f) do begin
    readln(f,s);
    writeln(g,s:50);
  end;
можешь написать полный код с бегином и тд у меня не работает всеравно
f1x вне форума Ответить с цитированием
Старый 12.04.2012, 21:57   #15
TinMan
Форумчанин
 
Аватар для TinMan
 
Регистрация: 05.09.2011
Сообщений: 869
По умолчанию

Код:
var
  f,g: text;
  s: string;

begin
  Assign(f,'in.txt');
  Reset(f);
  Assign(g,'out.txt');
  Rewrite(g);
  while not EoF(f) do begin
    readln(f,s);
    writeln(g,s:50);
  end;
  Close(f);
  Close(g)
end.
Предпочитаю на "ты".
TinMan вне форума Ответить с цитированием
Старый 12.04.2012, 23:31   #16
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Цитата:
Сообщение от TinMan Посмотреть сообщение
Не согласен. В условии сказано только то, что в выходном файле должны быть именно пробелы (а не табуляции, например).
В условии вообще ничего не сказано про выходной файл, именно поэтому форматное преобразование и не подходит - пробелы должны быть даже в том случае, когда текст находится в оперативной памяти.
s-andriano вне форума Ответить с цитированием
Старый 13.04.2012, 01:27   #17
TinMan
Форумчанин
 
Аватар для TinMan
 
Регистрация: 05.09.2011
Сообщений: 869
По умолчанию

Цитата:
Сообщение от s-andriano Посмотреть сообщение
В условии вообще ничего не сказано про выходной файл, именно поэтому форматное преобразование и не подходит - пробелы должны быть даже в том случае, когда текст находится в оперативной памяти.
Ну, в условии сказано про _входной_файл_, а это уже значит, что по возможности нужно учесть случай, когда файл слишком велик для оперативной памяти, а вывод скорее всего тоже в файл. Но я не стану с тобой спорить, уважаемый Сан-Андриано )). Сдаюсь на милость победителя.. [смайл, размахивающий белым флагом]
+1 тебе!

Согласен, невозможность работать с памятью так же, как и с файлом - это есть недостаток Паскаля. Хорошо, что этот момент был прояснен в теме )). Каюсь, я несколько утрировал постановку задачи, и сделал это единственно с целью привлечь внимание к довольно мощному, но редкоиспульзуемому средству. А чтоб оправдать свою блаародную цель, еще замечу, что [offtop]мало кто имеет в виду, что параметры формата могут быть выражены также и переменными, типа так:
Код:
for i:=1 to 50 do writeln('*':i);
За сим считаю свою миссию выполненной и откланиваюсь..
[/offtop]
Предпочитаю на "ты".
TinMan вне форума Ответить с цитированием
Старый 13.04.2012, 08:02   #18
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

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

В данном случае упомянуты только два этапа. Поэтому, на мой взгляд, подразумевается, что:
- должна быть предусмотрена возможность добавить еще один этап обработки данных,
- для чего данные должны оставаться в ОП в уже обработанном виде.
Действительно, в Вашем варианте этапы обработки и вывода объединены (что само по себе считается неправильным подходом, хотя в данном случае именно это и позволило одновременно добиться и лаконичности и оптимальности), и включить между ними дополнительный этап не получится без переделки уже написанного кода.
Или представьте, что, скажем, выводить нужно не в файл, а на экран в графическом режиме, используя graph.
Цитата:
Согласен, невозможность работать с памятью так же, как и с файлом - это есть недостаток Паскаля.
Да, честно говоря, не понимаю, почему в Паскале нельзя писать в строковую переменную точно так же, как и в файл. Даже в Фортране (а сколько ему лет!) такая возможность есть.
Цитата:
...замечу, что [offtop]мало кто имеет в виду, что параметры формата могут быть выражены также и переменными, типа так:
Код:
for i:=1 to 50 do writeln('*':i);
[/offtop]
Лично мне приходилось использовать эту возможность исключительно чтобы обойти указанный выше недостаток Паскаля. Впрочем, возможности настройки параметров форматного преобразования в Паскале очень слабы.

Но в целом, вроде, пришли к единому мнению. Приятно было пообщаться.
s-andriano вне форума Ответить с цитированием
Старый 21.12.2012, 03:15   #19
Игopь
Пользователь
 
Аватар для Игopь
 
Регистрация: 19.09.2012
Сообщений: 15
По умолчанию

подскажите как текст выровненный по правому краю выровнять по центру?
Игopь вне форума Ответить с цитированием
Старый 21.12.2012, 10:36   #20
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
подскажите как текст выровненный по правому краю выровнять по центру?
Выровнять пробелами?

Очень просто!
Надо запомнить длину текста (если до какой длинвы выравнивать не задано внешне, конечно). (пусть это будет переменная LenWidth)
удалить все пробелы слева и справа.
запомнить длину полученной строки (пусть это будет переменная LenTrim)
вставить пробелы в начале строки в количестве (LenWidth - LenTrim) div 2
вставить пробелы в конце строки в количестве LenWidth - текущая длина(строки)
всё.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подправить цитату по правому краю nicklifs HTML и CSS 0 15.12.2011 20:58
Cделать поверх Fkash плашку и разместить на ней растровое изображение по середине и текст по правому краю epoletov HTML и CSS 1 19.05.2011 16:30
Выравнивание содержимого страницы по правому краю Krasi JavaScript, Ajax 1 11.07.2010 14:42
StringGrid: выравнивание содержимого столбца по правому краю Art_ Компоненты Delphi 2 06.05.2009 17:30
StringGrid как выровнять по центру и по правому краю? MAcK Компоненты Delphi 5 03.09.2007 14:11