Файлы.Паскаль
Дан файл целых чисел.Создать новый файл целых чисел,содержащий длины всех серий исходного файла(серией называется набор последовательно расположенных одинаковых элементов,а длиной серии- количество этих элементов).
Вот,например,для исходного файла с элементами 1,5,5,5,4,4,5 содержимое результирующего файла должно быть следующим :1,3,2,1.
Помогите пожалуйста с задачкой=^^=
Заранее домо оригато годзаймасу!!
Вот,например,для исходного файла с элементами 1,5,5,5,4,4,5 содержимое результирующего файла должно быть следующим :1,3,2,1.
Помогите пожалуйста с задачкой=^^=
Заранее домо оригато годзаймасу!!
393877884 Стучись. Сделаю за умеренную плату.
Подскажите пожалуйста:
это связано с одномерным массивом?
если я введу размерность массива с повторяющимися элементами,то как вывести
содержимое результирующего файла было :1,3,2,1?
Заранее спасибо.
это связано с одномерным массивом?
если я введу размерность массива с повторяющимися элементами,то как вывести
содержимое результирующего файла было :1,3,2,1?
Заранее спасибо.
- Naeel Maqsudov
- Сообщения: 2570
- Зарегистрирован: 20 фев 2004, 19:17
- Откуда: Moscow, Russia
- Контактная информация:
Нет. С массивами это не связано вообще.
Один файл читаем, а другой тут же пишем.
Например, будем считать, что цифры, идущие подряд, составляют число.
Все, что не является цифрами (в т.ч. запятая) - это разделители - их надо просто пропускать. Т.е. в итоге, надо открыть и читать файл посимвольно до конца.
Как только накопилось очередное число, сравниваем его с предыдушим числом.
Если равно, то увеличиваем счетчик длины последовательности, а если не равно, то скидываем значение счетчика в выходной файл и сбрасываем его в единицу.
Вот и вся программа.
Один файл читаем, а другой тут же пишем.
Например, будем считать, что цифры, идущие подряд, составляют число.
Все, что не является цифрами (в т.ч. запятая) - это разделители - их надо просто пропускать. Т.е. в итоге, надо открыть и читать файл посимвольно до конца.
Как только накопилось очередное число, сравниваем его с предыдушим числом.
Если равно, то увеличиваем счетчик длины последовательности, а если не равно, то скидываем значение счетчика в выходной файл и сбрасываем его в единицу.
Вот и вся программа.
нам на эту тему посвятили только пример с матрицами..поэтому ещё туго догоняю.
ладно,даже отсутствие железной мужской логики не сломит меня!
Можете написать как пропускать запятые ,как открыть файл и читать посимвольно?
ладно,даже отсутствие железной мужской логики не сломит меня!
Можете написать как пропускать запятые ,как открыть файл и читать посимвольно?
это я поняла..>Как только накопилось очередное число, сравниваем его с предыдушим числом.
Если равно, то увеличиваем счетчик длины последовательности, а если не равно,<
>то скидываем значение счетчика в выходной файл и сбрасываем его в единицу.>[\QUOTE]--это не поняла.
Naeel Maqsudov
Помогите разобраться >0<
Помогите разобраться >0<
- Naeel Maqsudov
- Сообщения: 2570
- Зарегистрирован: 20 фев 2004, 19:17
- Откуда: Moscow, Russia
- Контактная информация:
Код: Выделить всё
const
digits:set of char = ['0'..'9'];
var
fi,fo:text;
ch:char;
prev,curr,count:integer;
function getnum(var x:integer):boolean;
var
_ch:char absolute ch;
begin
getnum:=false;
x:=0;
while not (eof(fi) or (_ch in digits)) do read(fi,_ch);
if _ch in digits then begin
while (_ch in digits) and not eof(fi) do begin
x:=x*10+ord(_ch)-ord('0');
read(fi,_ch);
end;
getnum:=true;
writeln('in',x);
_ch:=#0;
end
end;
begin
ch:=#0;
assign(fi,'c:\inp.txt');
reset(fi);
assign(fo,'c:\outp.txt');
rewrite(fo);
if getnum(prev) then begin {берем первое число из файла}
count:=1; {оно одно (пока)}
while getnum(curr) do begin {пока еще берутся числа из файла, берем}
if curr=prev then inc(count) else begin {если оно такое же, то увел. счетчик}
write(fo,count,','); {а если нет, то записываем результат и}
prev:=curr; {начинаем новый подсчет}
count:=1; {снова с единицы}
end;
end;
write(fo,count); {если числа больше не берутся, записываем последний результат}
end;
close(fi);
close(fo);
end.
Naeel Maqsudov Спасибо,Вам большое!
Буду стараться изо всех сил чтобы как можно реже вас беспокоить!
Буду стараться изо всех сил чтобы как можно реже вас беспокоить!