Здравстуйте! Очень надеюсь на Вашу помощь.
1.Багаж пассажира характеризуется количеством вещей и общим весом вещей. Дан файл f, содержащий информацию о багаже нескольких пассажиров. Дать сведения о багаже, число вещей в котором не меньше, чем в любом другом багаже, а вес вещей не больше, чем в любом другом багаже с этим же числом вещей.
И ещё одна задачка. Она написана, но на компе не работает. Где закралась ошибка, а? Подскажите...
Дан txt файл. Преобразовать строки файла, удалив после каждой цифры два символа, если эти символы не буквы.
Var f:text;
j,i,n,:integer;
z,s:string;
begin
s:='c:\fff.txt';
assing(f,s);
rewrite(f);
readln(n);
for i:=1 to n do begin
readln(z);
writln(f,z);
end;
close(f);
reset(f);
for i:=1 to n do begin
read(f,z);
for j:=1 to length(z) do
if ((z[j]<'0') and (z[j]>'9')) and (((not((z[j+1]>'A') and (z[j+1]<'Z'))) and (z[j+1]=z[j+2]))
then delet(z,i+1,2);
end;
close(f);
reset(f);
while not(eof(f)) do begin
read(f,z);
write(n);
end;
close(f);
end.
Задача на файлы записей(Паскаль)
Вы неверно подошли к решению задачи.
Судя по всему нужно использовать тип "запись".
Для начала, посмотрите решение в этой http://forum.developing.ru/showthread.php?t=14005 теме, задача почти аналогична.
Судя по всему нужно использовать тип "запись".
Для начала, посмотрите решение в этой http://forum.developing.ru/showthread.php?t=14005 теме, задача почти аналогична.
Ни что так не ограничивает фантазию программиста, как компилятор...
Спасибо большое, что посмотрели задачи. Непонятно, та задача, на которую Вы указали аналогична 1(?). А со второй то что не так, где там ошибка?
Я че-то думал, что это решение второй задачи...
Здесь, как минимум, не нужно ничего вводить, нужно работать с готовым файлом.
Здесь, как минимум, не нужно ничего вводить, нужно работать с готовым файлом.
Ни что так не ограничивает фантазию программиста, как компилятор...
Вот только в этом фрагменте МАССА ошибок. Как в алгоритме, так и "опечаток":Duru писал(а):Она написана, но на компе не работает. Где закралась ошибка, а? Подскажите...
Duru писал(а):for i:=1 to n do begin
read(f,z);
for j:=1 to length(z) do
if ((z[j]<'0') and (z[j]>'9')) and (((not((z[j+1]>'A') and (z[j+1]<'Z'))) and (z[j+1]=z[j+2]))
then delet(z,i+1,2);
end;
1. Не delet, а delete.
2. Если у вас счетчик по символом строки - j, то кой черт вы удаляете символы, начиная с i-й позиции?
3. Условие ((z[j]<'0') and (z[j]>'9')) НИКОГДА не будет истинным. Ибо не можно быть меньше нуля, при и этом одновремеменно быть больше девяти.
4. ((z[j+1]>'A') and (z[j+1]<'Z')) То есть, 'A' и 'Z' буквами уже не являются? (не говоря уже о строчных буквах и буквах кириллицы)
5. for j:=1 to length(z). В процессе цикла вы удаляете символы из строки, тем не менее, счетчик цикла у вас стоит до ПЕРВОНАЧАЛЬНОЙ длины строки.
6. Даже если опустить замечание из п.5, то в проходах цикла при j = <длина строки> - 1 и j = <длина строки> куда вас занесут обращения z[j+2] и z[j+1]?
7. По-моему, все-таки, строки из текстового файла стоит читать как readln(f,z);, а не read(f,z);.