Помощь - Поиск - Пользователи - Календарь
Полная версия: Работа с файлом
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Инкогнито
Задание: Дан файл целых чисел. Удалить из него все отрицательные числа.
uses crt;
var i,j:integer;
a:array [1..30000] of integer;
begin
clrscr;
assign(input,'c:\input.txt');
reset(input);
i:=1;
while not eof(input) do
begin
read(a[i]);
i:=i+1;
end;
close(input);
assign(output,'c:\input.txt');
rewrite(output);
for j:=1 to i do
if a[j]>0 then write(a[j]:4);
close(output);
readkey;
end.



Не пойму почему не работает, файл создал в С, но прога выкидывает лишь чистый экран, а в задании другое....помогите плиз
not_programmer
Тебе нужно переписать все неотрицательные значения из одного файла в другой?

Добавлено через 1 мин.
Извини, не то спросил, невнимательно прочел.
Инкогнито
Цитата(not_programmer @ 17.12.2007 17:53) *

Тебе нужно переписать все неотрицательные значения из одного файла в другой?

Добавлено через 1 мин.
Извини, не то спросил, невнимательно прочел.

Да ниче...только мне надо в коде проблему найти:)
not_programmer

uses crt;
var i,j:integer;
a:array [1..30000] of integer;
n : integer;
begin
clrscr;
assign(input,'с:\input.txt');
reset(input);
i:=0;
while not eof(input) do
begin
inc(i);
read(a[i]);
end;
close(input);
assign(input,'с:\input.txt');
rewrite(input);
for j:=1 to i do
if a[j]>0 then write(a[j]:3);
for j:=1 to i do
if a[j]>0 then write(input,a[j]:3);
close(input);
readkey;
end.


вот. что не понятно - спрашивай.

Добавлено через 1 мин.
В разделе описания переменных n:integer; - не нужно, удали
klem4
зачем массив ?

var
f, temp: Text;
value: Integer;
begin
assign(f, 'c:\input.txt');
reset(f);

assign(temp, 'c:\temp.txt');
rewrite(temp);

while not eof(f) do begin
readln(f, value);
if value >= 0 then
writeln(temp, value);
end;

close(f);
erase(f);

close(temp);
rename(temp, 'c:\input.txt');
end.
Инкогнито
Цитата(klem4 @ 17.12.2007 18:18) *

зачем массив ?

var
f, temp: Text;
value: Integer;
begin
assign(f, 'c:\input.txt');
reset(f);

assign(temp, 'c:\temp.txt');
rewrite(temp);

while not eof(f) do begin
readln(f, value);
if value >= 0 then
writeln(temp, value);
end;

close(f);
erase(f);

close(temp);
rename(temp, 'c:\input.txt');
end.


Блин...спасибо конечно, ноэффект такой же, Никогда не работал с файлами, что ваще должна показать программа? неужели пустой экран?
klem4
если ты внимательно прочитаешь задание, все станет понятно ...
Инкогнито
При удалении отрицательныч чисел разве не должно было показать оставшиеся положительные числа?
not_programmer
Цитата(Инкогнито @ 17.12.2007 20:45) *

При удалении отрицательныч чисел разве не должно было показать оставшиеся положительные числа?


Разве не показывает? У меня все работает.
Инкогнито
Не-а, пустой экран...мож с Паскалем самим какая то фигня, а чё там показывается? набор положительных чисел?
volvo
Цитата
Не-а, пустой экран...
А файл? ТЫ результат должен в файл записать или как? Вот и проверяй в файле... Кстати, "файл целых" <> "текстовый файл", это так, к слову, чтоб потом не удивлялся, если придется переделывать...
Инкогнито
Всё! работает! я в Паскале смотрел, а надо было в самом файле, и еще числа записывал неправильно, но теперь всё понял, работает ура:) Спасибо всем вам:)
klem4
да, кстати, volvo прав, если файл целых, то программа немного изменится ...
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.