Помощь - Поиск - Пользователи - Календарь
Полная версия: обработка строки текста...
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
ROxY
 var
arr: array [1..20] of string;
ch,c: Char;
count,d,a,i,o: Integer;
st,s: String;
t: text;
fs:text;
begin
a:=0; o:=0; count:=0;
assign(t,'input.txt');
assign(fs,'output.txt');
reset(t);
rewrite(fs);
while not eof(t) do begin
Inc(a);
readln(t,arr[a]);
end;
for ch:='a' to 'я' do bedin
for d:=1 to 20 do begin
st:=arr[d];
if not (st='') then begin
repeat
inc(o);
if st[o]=ch then begin inc(count); end;
until o=length(st);
o:=0;
end;
end;
if not (count=0) then begin
str(count,s);
s:=ch+' - '+s;
writeln(fs,s);
count:=0;
end else count:=0;
end;
close(t);
close(fs);
readln


итак мне нужно вывести в алфавитном порядке и подсчитать количество букв в фразе..
вот это программка...
но у меня выдается ОШИБКА в месте
reset(t);
вот такая: path no found
Что это значит?
почему не работает программка????
nikita182
неверный путь
попробуй полный ввести
ROxY
что полный-то???
мисс_граффити
полный путь
например:
'c:\docs\input.txt'
кстатит, файл-то создан вообще?
ROxY
и еще а можно вот так вот...
 var k,j:integer; I,O: text;
A: array [1..100] of string;
c:string; m:integer;
begin
m:=0;
assign (I,'Input/txt.txt’);
reset(I);
while not Eof(I) do
begin
m:=m+1;
readln(I, A[m]);
end;
close(I);
for j:=1 to m do
for k:=1 to m-j do
if A[k]>A[k+1] then
begin
c:=A[k];
A[k]:=A[k+1];
A[k+1]:=c;
end;
assign(0,'output/txt.txt’);
rewrite(0);
for k:=1 to m do
writeln(0,A[k]);
close(0);
end.

помогите закончить...
нужно подсчитать количество букв...

nikita182
создай файл, например: qwerty.txt
засунь в папку какую - нибудь, например: с:\pascal\qwerty.txt
и при связке пиши : assign (I, 'с:\pascal\qwerty.txt');
ROxY
ну да создан..
nikita182
полный текст задания в студию!
мисс_граффити
Цитата
Input/txt.txt

не /, а \
ROxY
это не важно..
я просто взяла как input.txt
проблема в том что я изменила...но теперь вот
в rewrite(fs) так же ошибку выдает..
создать файл с output.txt??...и пустой или как?
ROxY
текст такой:
нужно в алфавитном порядке расположить
букву находящуюся во фразе(в файловом тексте) и подсчитать их количество..
В дальнейшем при запуске этой программы входным файлом должен стать файл отчета со служебной информацией в результате работы должен быть получен текст из фразы в файле с именем output.txt


nikita182
хм..файл содержит набор букв рандомных?

мисс_граффити
Цитата
assign(0,'output/txt.txt’);
rewrite(0);

у тебя здесь что, нули?
ROxY
нет там не нули...

Добавлено через 3 мин.
nikita182, ну да...
а что же все таки делать с файлом output??
nikita182
Цитата(ROxY @ 19.05.2007 19:01) *

текст такой:
нужно в алфавитном порядке расположить
букву находящуюся во фразе(в файловом тексте) и подсчитать их количество..
В дальнейшем при запуске этой программы входным файлом должен стать файл отчета со служебной информацией в результате работы должен быть получен текст из фразы в файле с именем output.txt


blink.gif это дословно или твоя интерпретация?
ROxY
в принципе начиная от "в дальнейшем при запуске этой программы....."
дословно
nikita182
можно при запуске программы проверять сперва output, если
нет такого, работать с input'ом, а если есть то работать с ним.

есессно, создавать output в программе.
мисс_граффити
для rewrite совсем не нужно, чтобы файл был создан.
можешь прикрепить свой pas-файлик как он есть?
ROxY
уффф...капец как запарилась...
все бы ничего..
только запускается программа...и ничего...
а output в папке с Паскалем появился..

Добавлено через 2 мин.
вот что выдается...
runtime error 002 at 0bf9:0058

Добавлено через 9 мин.
Нажмите для просмотра прикрепленного файла
Айра
Цитата
вот что выдается...
runtime error 002 at 0bf9:0058

У меня было тоже самое. Потом я создала файлы Input и Output в той же папке, где находится код программы (файл.pas), путь прописывала неполный (т.е. только название и расширение) и чтение происходило без ошибок. Попробуй так..
ROxY
нее...не получилось..
сейчас вообще выдает file not found
volvo
Ты нормально можешь ответить на вопрос: ГДЕ именно происходит ошибка (на каком операторе)? И где у тебя СЕЙЧАС находится файл Input.TXT ?
ROxY
input.txt находится в папке с pas. файлом...
Айра
Цитата
нее...не получилось..
сейчас вообще выдает file not found

Значит проверь еще раз, где что находится и как называется (может на букву ошиблась или регистор разный, у меня так бывало smile.gif ). У меня это работает, правда я проверя на том коде, который ты выложила в посте №5. А тот, что прикреплен, у меня вообще не работает, но сбой происходит где-то дальше, не в чтении..
Айра
Вот мой код программы. Проверяла на Input = 'дгвба', Output получился = 'абвгд' - значит работает)) IOresult - специальная функция, позволяющая выполнять файловые операции без сообщений об ошибках.
uses wincrt;
var i,j,m:integer;
Inp,Out: text;
st:string;
c,ch: char;
begin
m:=0;
st:='';
assign (Inp,'Input.txt');
{$I-}
reset(Inp);
{$I+}
if IOResult=0 then
begin
while not Eof(Inp) do
begin
inc(m);
read(Inp,Ch);
st:=st+ch;
end;
Close (Inp);
end;
writeln('Прочитано из файла: ',st,'');
assign(Out,'Output.txt');
{$I-}
rewrite(Out);
{$I+}
if IOResult=0 then
begin
for j:=2 to m do
for i:=m downto j do
if st[i-1]>st[i] then
begin
c:=st[i-1];
st[i-1]:=st[i];
st[i]:=c;
end;
writeln('Записано в файл: ',st,'');
write(Out,st);
close(Out);
end;
end.

Что непонятно - спрашивай, объясним smile.gif
nikita182
Цитата(Айра @ 20.05.2007 0:26) *

IOresult - специальная функция, позволяющая выполнять файловые операции без сообщений об ошибках.

no1.gif

IOresult возвращает код после операции ввода/вывода
убери директивы компилятора {$I-} и {$I+} и увидишь))


to ROxY: только wincrt замени на crt ))
Айра
Цитата
IOresult возвращает код после операции ввода/вывода
убери директивы компилятора {$I-} и {$I+} и увидишь))

И это тоже yes2.gif
Попробуй оставить директивы, неправильно обозвать)) файл и убрать IOresult. Программа выдаст ошибку, а если оставить условие, то она отработает нормально, просто не получит данные.. Поэтому IOresult в сочетании с директивами и обеспечивает нормальную работу файловых операций. Я это имела ввиду в том посте))
ROxY
Айра..
спасибо...
но вот мне нужно ещё чтобы подсчитало количество букв в фразе
допустим: МАМА
А 2
М 2...
вот...
ROxY
и ещё у меня проблема с wincrt...
файл wincrt.tpu не найден..
nikita182
черт, мои посты игнорируют ((((

Цитата(nikita182 @ 20.05.2007 1:30) *

to ROxY: только wincrt замени на crt ))





uses crt;
var i,j,m:integer;
Inp,Out: text;
st, st1, st2:string;
c,ch: char;
begin
m:=0;
st:='';
assign (Inp,'Input.txt');
{$I-}
reset(Inp);
{$I+}
if IOResult=0 then
begin
while not Eof(Inp) do
begin
inc(m);
read(Inp,Ch);
st:=st+ch;
end;
Close (Inp);
end;
writeln('chitka: ',st,'');
assign(Out,'Output.txt');
{$I-}
rewrite(Out);
{$I+}
if IOResult=0 then
begin
for j:=2 to m do
for i:=m downto j do
if st[i-1]>st[i] then
begin
c:=st[i-1];
st[i-1]:=st[i];
st[i]:=c;
end;
st1 := '';
m := 1;
for i := 1 to length(st) do
if st[i] <> st[i + 1] then begin
str(m, st2);
st1 := st1 + st[i] + ' - ' + st2 + ' ';
m := 1;
end
else
m := m + 1;


writeln('zapisano: ',st,'');
writeln(Out,st);
write(Out,st1);
close(Out);
end;
end.




вроде работает.
ROxY
неа..
не совсем работает
записываем слово "СЛОВО" в файл input
в результате получаем
2;>>Aюя
-52-1;-1>-2A-1ю-1я-1
что ЭТО???
Айра
Цитата
не совсем работает

blink.gif У меня все работает нормально.. Программа выводит в файл "встречаемость" каждой буквы: в - 1 л - 1 о - 2 с - 1 . Может какие-то проблемы с кодировкой самого файла или что-то в этом роде?..
Айра
Сейчас попробовала использовать вместо txt файлов doc'и => если так делать, то появляются эти каракули... Ты точно txt используешь, программа сразу работала некрасиво, или как?
ROxY
АЙРА... и Nikita182
ребят огромное спасибо!!
Очень помогли... правда!!
...итак
ТЕМА может быть закрыта! smile.gif
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.