0 / 0 / 0
Регистрация: 07.06.2016
Сообщений: 7
1

Дан файл целых чисел. Удалить из него все отрицательные числа

08.06.2016, 20:38. Показов 3688. Ответов 7
Метки нет (Все метки)

Вот решение.При запуске просит ввожу полный путь к файлу,который заполнен числами и лежит в той же папке что и программа.Выдает ошибку.Как я не делал и другие решение не пробовал,не работает.Помогите пожалуйста!
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
program File34;
var
 S:String;
 F_in,F_out: File of Integer;
 El,i,len:integer;
 
 
begin
  Write('File1: ');
  Readln(S);
  Assign(F_in,S);
  Reset(F_in);
 
  Assign(F_out,'~'+S);
  ReWrite(F_out);
 
  i:=1;
  while not eof(F_in) do
   begin
    Read(F_in,El);
    if i>=0 then Write(F_out,El);
    inc(i);
   end;
 
  Close(F_in);
  Close(F_out);
  Erase(F_in);
  Rename(F_out,S);
end.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.06.2016, 20:38
Ответы с готовыми решениями:

Сформировать список целых чисел и удалить из него все числа, меньшие 0. Дек и Стек.
привет. Сформировать список целых чисел и удалить из него все числа меньше 0 (операции над деком)...

Дан одномерный массив. Удалить все отрицательные элементы из него
Решите плз задачу. Дан одномерный массив. Удалить все отрицательные элементы из него.

Дан массив целых чисел, содержащих 20 элементов, записать в этот же массив сначала все отрицательные числа и нули
Дан массив целых чисел, содержащих 20 элементов, записать в этот же массив сначала все...

11. Дан массив ненулевых целых чисел размера N. Проверить, чередуются ли в нем положительные и отрицательные числа
11. Дан массив ненулевых целых чисел размера N. Проверить, чередуются ли в нем положительные и...

7
Эксперт Pascal/Delphi
2383 / 1295 / 1491
Регистрация: 29.08.2014
Сообщений: 4,651
09.06.2016, 05:42 2
Цитата Сообщение от ronn Посмотреть сообщение
if i>=0 then Write(F_out,El);
причем тут i, вам же элементы надо положительные оставить, т.е.
Pascal
1
if El>=0 then Write(F_out,El);
Добавлено через 1 минуту
да и файл прикрепите.

Добавлено через 10 минут
вот код:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
program File34;
var
  S:String;
  F_in,F_out: File of Integer;
  El:integer;
procedure printfile(s,t:string);
var
  f:file of integer;
  i:integer;
begin
  writeln(t);
  Assign(f,s);
  Reset(f);
  while not eof(f)do begin read(f,i);write(i:4);end;
  close(f);  
  writeln;
end;
begin
  Write('File1: '); 
  Readln(S);
  printfile(s,'Файл '+s);
  Assign(F_in,S);
  Reset(F_in);
  Assign(F_out,'~'+S);
  ReWrite(F_out);
  while not eof(F_in) do
   begin
     Read(F_in,El);
     if El>=0 then Write(F_out,El);
   end;
   Close(F_in);
   Close(F_out);
   Erase(F_in);
   Rename(F_out,S);
   printfile(s,'Файл '+s+' после обработки');
end.
вот тестовый прогон:
Код
File1: test.dat
Файл test.dat
  -2  -3  -7  -8   3  -1   1   8   0  -1  -2   4  -1  -7  -2 -10   6 -10  -5  -7
Файл test.dat после обработки
   3   1   8   0   4   6
вот код создания типизированного файла с целыми числами
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
program File34;
var
  S:String; 
  F: File of Integer;
  El,i:integer;
begin
  Write('File1: ');
  Readln(S);
  Assign(F,S);
  ReWrite(F);
  for i:=1 to 20 do write(F,Random(21)-10);
  Close(F);
  Reset(F);
  while not eof(F)do begin read(F,El);write(El:4);end;
  close(F);
end.
PS: похоже, что вы содержимое типизированного файла в блокноте набрали и поэтому ошибка
0
0 / 0 / 0
Регистрация: 07.06.2016
Сообщений: 7
09.06.2016, 18:02  [ТС] 3
так мне надо текстовый файл.я в блокноте заполнял.а у вас формат dat какой-то.надо чтоб в блокноте выводило

Добавлено через 21 минуту
так не работает
0
Эксперт Pascal/Delphi
2383 / 1295 / 1491
Регистрация: 29.08.2014
Сообщений: 4,651
09.06.2016, 18:28 4
тогда файл должен быть не типизированный (file of ...) а просто Text
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
program File34;
var
  S:String;
  F_in,F_out: Text;
  El:integer;
procedure printfile(s,t:string);
var
  f:text;
  i:integer;
begin
  writeln(t);
  Assign(f,s);
  Reset(f);
  while not eof(f)do begin read(f,i);write(i:4);end;
  close(f);  
  writeln;
end;
begin
  Write('File1: '); 
  Readln(S);
  printfile(s,'Файл '+s);
  Assign(F_in,S);
  Reset(F_in);
  Assign(F_out,'~'+S);
  ReWrite(F_out);
  while not eof(F_in) do
   begin
     Read(F_in,El);
     if El>=0 then Write(F_out,' ',El);
   end;
   Close(F_in);
   Close(F_out);
   Erase(F_in);
   Rename(F_out,S);
   printfile(s,'Файл '+s+' после обработки');
end.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
program File34;
var
  S:String;
  F_in,F_out: Text;
  El:integer;
procedure printfile(s,t:string);
var
  f:text;
  i:integer;
begin
  writeln(t);
  Assign(f,s);
  Reset(f);
  while not eof(f)do begin read(f,i);write(i:4);end;
  close(f);  
  writeln;
end;
begin
  Write('File1: '); 
  Readln(S);
  printfile(s,'Файл '+s);
  Assign(F_in,S);
  Reset(F_in);
  Assign(F_out,'~'+S);
  ReWrite(F_out);
  while not eof(F_in) do
   begin
     Read(F_in,El);
     if El>=0 then Write(F_out,' ',El);
   end;
   Close(F_in);
   Close(F_out);
   Erase(F_in);
   Rename(F_out,S);
   printfile(s,'Файл '+s+' после обработки');
end.
Добавлено через 9 минут
или на PABC.NET:
Pascal
1
2
3
4
5
6
7
8
begin
  var FileName:=ReadlnString('Имя файла:');
  var s:=System.IO.File.ReadAllText(FileName);
  writeln('Файл:'+newline+s);
  System.IO.File.WriteAllText(FileName,String.Join(' ',s.Split(new string[1](' '),
    System.StringSplitOptions.RemoveEmptyEntries).Where(s->StrToInt(s)>=0).ToArray()));
  writeln('Полученный файл:'+newline+System.IO.File.ReadAllText(FileName));  
end.
1
0 / 0 / 0
Регистрация: 07.06.2016
Сообщений: 7
09.06.2016, 21:42  [ТС] 5
Вставил ваш код,вместо слово файл я так понял надо вставить путь к текстовому файлу,я вставил.Входной и выходной файл один же.Запускаю ввожу путь к файлу и ошибка,как всегда(
0
Эксперт Pascal/Delphi
2383 / 1295 / 1491
Регистрация: 29.08.2014
Сообщений: 4,651
10.06.2016, 13:41 6
Цитата Сообщение от ronn Посмотреть сообщение
Вставил ваш код,вместо слово файл я так понял надо вставить путь к текстовому файлу,я вставил.Входной и выходной файл один же.Запускаю ввожу путь к файлу и ошибка,как всегда(
показывайте что, куда и зачем вставили? Там нужно было только запустить программу и ввести путь к файлу с путем(если файл находится отдельно от программы) для версии PABC.Net, для "обычного" варианта ошибка тут:

Цитата Сообщение от Joy Посмотреть сообщение
Assign(F_out,'~'+S);
тильда будет вставляться перед путем к файлу и вылезет ошибка.
1
0 / 0 / 0
Регистрация: 07.06.2016
Сообщений: 7
10.06.2016, 13:51  [ТС] 7
кароче там на abc.net ничего не запускалось кто мне только не помогал,а на обычном паскале всё работает,несколько вариантов кодов даже,спасибо ,что помогали
0
147 / 128 / 155
Регистрация: 22.03.2016
Сообщений: 502
11.06.2016, 01:25 8
Joy, Можно по другому:
Pascal
1
2
3
begin
  System.IO.File.WriteAllLines('Путь к результирующему файлу',(System.IO.File.ReadAllLines('Путь к исходному файлу').Select(y -> y.JoinIntoString(y.ToIntegers.Where(x -> not(x < 0)))).ToArray));
end.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.06.2016, 01:25
Помогаю со студенческими работами здесь

Дан массив ненулевых целых чисел размера N. Проверить, чередуются ли в нём положительные и отрицательные числа
Дан массив ненулевых целых чисел размера N. Проверить, чередуются ли в нём положительные и...

Типизированный файл целых чисел: Заменить все отрицательные компоненты их квадратами
С клавиатуры вводится последовательность целых чисел, заканчивающихся нулем (в самой...

Дан массив A из n вещественных чисел. Вывести в порядке следования все отрицательные числа
Дан массив A из n вещественных чисел. Вывести в порядке следования все отрицательные числа...

Написать процедуру погружающую все отрицательные числа из файла целых чисел в стек
Написать процедуру погружающую все отрицательные числа из файла целых чисел в стек


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru