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

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

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

 
 Ответить  Открыть новую тему 
> Задача на файл и еще...
сообщение
Сообщение #1


Новичок
*

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

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


Пожалуйста помогите рещить такую задачу!!!!!! :molitva:
Реально ,вопрос жизни и смерти!!!!!!
Вот условие:
В текстовый файл занесена строка длиной более 255 символов (в строке может быть только одно слово). Вывести на экран строку, удалив повторяющие «лишние» пробелы, если они есть, и во всех словах перенести последнюю букву в начало слова.
заранее спасибо!!!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






Задание уточните... Здесь есть противоречие:
Цитата(UnSpi @ 28.05.05 13:53)
В текстовый файл занесена строка длиной  более 255 символов (в строке может быть только одно слово). Вывести на экран строку, удалив повторяющие «лишние» пробелы, если они есть, и во всех словах перенести последнюю букву в начало слова.

Сколько строк занесено в файл? Если одна, и в одной строке - одно слово, то что значит "во всех словах перенести..."
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Новичок
*

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

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


Уточняю,
в строке содержится много слов,написанных через один и более пробелов(а строка
состоит из более чем 255 символов).
потом на экран вывести эту же строку,но только чтобы слова были написаны через
ОДИН пробел ,и в каждом слове перенести последнюю букву в начало слова.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






Тогда вот так:
var
ch: char;
s: string;
f: text;
begin
assign(f, 'my.txt');
reset(f);
while not seekeof(f) do begin

repeat
read(f, ch);
until ch <> #32;

s := ch;

repeat
read(f, ch);
if ch <> #32
then s := s + ch;
until (ch = #32) or (eof(f));
s := s[length(s)] + copy(s, 1, pred(length(s)));
write(s, ' ');

end;
end.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Новичок
*

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

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


большое спасибо!!!!!!все понятно!!!!
можно теперь такой вопрос:
как вывести в этой задаче сначала исходный текст,а затем уже переработанный,
и еще как изменится программа,если в данной строке нужно удалить повторяющие «лишние» пробелы, если они есть, и если слово нечетной длины, удалить среднюю букву в каждом слове??????
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Гость






Цитата(UnSpi @ 28.05.05 17:19)
как вывести в этой задаче сначала исходный текст, а затем уже переработанный

while not eof(f) do begin
read(f, ch); write(ch);
end;
reset(f);
{ и потом уже делать по алгоритму }

Цитата(UnSpi @ 28.05.05 17:19)
как изменится программа, если в данной строке нужно удалить повторяющие «лишние» пробелы, если они есть

это не нужно добавлять - оно уже есть. Этим занимается вот этот фрагмент:
    repeat
read(f, ch);
until ch <> #32;


Цитата(UnSpi @ 28.05.05 17:19)
и если слово нечетной длины, удалить среднюю букву в каждом слове??????

вместо
s := s[length(s)] + copy(s, 1, pred(length(s)));

делать
if odd(length(s)) then
delete(s, succ(length(s) div 2), 1);
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Новичок
*

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

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


спасибо!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! smile.gif
А моно еще такую задачку решить:

1).Задан файл, содержащий текст программы на языке высокого уровня. Создать процедуру, позволяющую подсчитать количество памяти, которое будет выделено
в сегменте данных для всех данных програм мы вещественных типов.

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


Гость






Это не так просто как ты думаешь. Попробуй, например, навскидку сказать, сколько данных вещественного типа будет в таком случае:
type
float = double;
f_array = array[1 .. 10] of float;
var
a, b, c: real; d, e, f: float;
const
x: f_array = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10);

Заметь, это - Паскаль... Я не говорю про другие языки...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Новичок
*

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

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


Да,я понимаю!!!
просто у меня есть прога ,которая подсчитывает количество памяти, которое будет выделено в сегменте данных для всех данных программы стандартных типов.
но вот в чем проблема:Я В НЕЕ ВЪЕХАТЬ НЕ МОГУ!!!! :fire:
Но тебе я все равно благодарен!!!!!!!!!!!!!!!!! :thanks:
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Новичок
*

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

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


Вот та задача:
program file5;
uses crt; {strings}
procedure Memory(var f:text);
var x :char;
flag :byte;
stop :boolean;
ChType :string;
Memtype,Totalmem :integer;
begin
stop:=true;
Totalmem:=0;
while stop do
begin
read(f,x);
flag:=1;
if x='b' then begin
read(f,x);
if x='e' then begin
read(f,x);
if x='g' then begin {begin}
read(f,x);
if x='i' then begin
read(f,x);
if x='n' then begin writeln('razmer pamyati dlya dannih=0');
halt;
end;
end;
end;
end;
end;

if x='v' then begin
read(f,x);
if x='a' then begin {var}
read(f,x);
if x='r' then repeat
read(f,x);
if x='b' then begin
read(f,x);
if x='e' then begin
read(f,x);
if x='g' then begin {begin}
read(f,x);
if x='i' then begin
read(f,x);
if x='n' then begin stop:=false;
end;
end;
end;
end;
end;
if x=',' then inc(flag);
if x=':' then begin
ChType:='';
read(f,x);
while x<>';'do begin
Chtype:=Chtype+x;
read(f,x);
end;
{ case ChType of
'byte' :Memtype:=1;
shortint:Memtype:=1;
word :Memtype:=2;
integer :Memtype:=2;
longint :Memtype:=4;
real :Memtype:=6;
double :Memtype:=8;
extended:Memtype:=10;
comp :Memtype:=8
single :Memtype:=4;
char :Memtype:=1;
string :Memtype:=256;
pchar :Memtype:=4;
pointer :Memtype:=4;
boolean :Memtype:=1;
bytebool:Memtype:=2;
wordbool:Memtype:=2;
longbool:Memtype:=4;}
if Chtype='byte' then Memtype:=1;
if Chtype='shortint' then Memtype:=1;
if Chtype='word' then Memtype:=2;
if Chtype='integer' then Memtype:=2;
if Chtype='longint' then Memtype:=4;
if Chtype='real' then Memtype:=6;
if Chtype='double' then Memtype:=8;
if Chtype='extended' then Memtype:=10;
if Chtype='comp' then Memtype:=8;
if Chtype='single' then Memtype:=4;
if Chtype='char' then Memtype:=1;
if Chtype='string' then Memtype:=256;
if Chtype='pchar' then Memtype:=4;
if Chtype='pointer' then Memtype:=4;
if Chtype='boolean' then Memtype:=1;
if Chtype='bytebool' then Memtype:=2;
if Chtype='wordbool' then Memtype:=2;
if Chtype='longbool' then Memtype:=4;
Totalmem:=Totalmem+flag*Memtype;
flag:=1;
end;

until not stop;
end;
end;
end;
writeln('the size of memory for data:',Totalmem);
end;
var
fp :text;
begin
ClrScr;
assign(fp,'FILE.TXT');
{$I+}
reset(fp);
{$I-}
if IOResult <> 0 then BEGIN writeln('FILE NOT FOUND');
halt;
END
else Memory(fp);
readkey;
end.


Сообщение отредактировано: volvo -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 





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