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

Файл: Если количество строк больше заданного n, то создать новый файл и записать в него строки из данного файла.

03.02.2019, 22:30. Показов 1709. Ответов 10
Метки нет (Все метки)

Дан файл, содержащий строки. Если количество строк больше заданного n, то создать новый файл и записать в него строки из данного файла. Если количество строк меньше или равно n, то скопировать в новый файл строки по такой схеме: две строки от начала файла, две от конца.
Вот наработки:
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
var
   f1,f2: text;
   s,p:string;
   I,g: integer;
   n:real;
begin
writeln('Введите путь к файлу');
readln(p);
     assign(f1,p);
      reset(f1);
      i:=0;
 while not eof(f1) do 
    begin 
        readln(f1,s); 
     i := i + 1; 
    end; 
    g:=i;
    close(f1); 
    
assign (f2, 'G:\Desktop\мое\92.txt');
 reset(f1);
    rewrite(f2);
    i := 1;
    while not EOF(f1) do begin
        read(f1, n);
          if g>n then 
            write(f2, n);
        i := i + 1;
    end;
    close(f1);
    close(f2);
  
    
end.
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.02.2019, 22:30
Ответы с готовыми решениями:

Дан текстовый файл g. Создать новый файл f и записать в него все слова файла g с количеством символов больше 4 и меньш 6
Дан текстовый файл g. Создать новый файл f и записать в него все слова файла g с количеством...

Создать новый текстовый файл и записать в него строки исходного файла, заканчивающиеся на заданную букву
Создать исходный текстовый файл (Блокнот), содержащий любой текст. Написать программу, которая...

Создать новый текстовый файл, записав в него перевернутые строки исходного файла
дан текстовый файл.создать новый текстовый файл,записав в него перевернутые строки исходного файла:...

Создать текстовый файл G и записать в него строки из файла F в обратном порядке
1. Создать текстовый файл F и записать в него несколько строк. Создать текстовый файл G и записать...

10
online
51 / 34 / 16
Регистрация: 11.02.2018
Сообщений: 220
04.02.2019, 09:53 2
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
program NN_Application;
 
const O = 100;//Размер массива со строками
 
var 
    strings: array[1..O] of string;
    FileInput, FileOutput: string;
    n, count: longint;
 
procedure RecordInNewFile(ExportFileName: string);
var i,k: integer;
begin
  i:= Count; k:= 1;
  Assign(output, ExportFileName);
  ReWrite(output);
    while (i <> 0) do
      begin
        writeln(strings[k]);
        dec(i);
        inc(k);
      end;
  close(output);
end;
 
procedure GetStrings(ImportFileName: string);
var Str: string;
    i: integer;
begin
  i:= 1;
  Assign(input, ImportFileName);
  Reset(input);
    while not eof(input) do
      begin
        readln(Str);
        strings[i]:= Str;
        inc(i);
      end;
  count:= i;
end;
 
begin
  write('n = ');
  readln(n);
  write('Путь к файлу со строками? ');
  readln(FileInput);
  write('Куда переписывать строки после анализа? ');
  readln(FileOutput);
  GetStrings(FileInput);
  if count - 1 > n then 
    begin
      writeln('Число строк в файле '+FileInput+ ' больше заданного n');
      RecordInNewFile(FileOutput);
    end
      else 
        begin
          writeln('Число строк в файле '+FileInput+ ' меньше или равно заданному n');
          Assign(output, FileOutput);
          ReWrite(output);
          write(strings[1]);
          writeln();
          write(strings[2]);
          writeln();
          write(strings[count - 1]);
          writeln();
          write(strings[count - 2]);
          close(output);
        end;
end.
1
Почетный модератор
64270 / 47569 / 32739
Регистрация: 18.05.2008
Сообщений: 115,182
04.02.2019, 10:06 3
Так попробуйте.
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
37
38
39
40
41
42
43
44
45
46
var  f1,f2: text;
     s:string;
     n,g,i,j: integer;
begin
write('n=');
readln(n);
assign(f1,'input.txt');//файл в папке с программой
reset(f1);
g:=0;
while not eof(f1) do
 begin
  readln(f1,s);
  inc(g);
 end;
assign (f2,'output.txt');
rewrite(f2);
if g>n then
 begin
  reset(f1);
  while not EOF(f1) do
   begin
    readln(f1,s);
    writeln(f2,s);
   end;
  close(f1);
  close(f2);
 end
else
 begin
  n:=1;
  for i:=1 to (g+1) div 4 do
   begin
     reset(f1);
     j:=0;
     while not eof(f1) do
      begin
       readln(f1,s);
       inc(j);
       if j in[n,n+1,g-n+1,g-n] then writeln(f2,s);
      end;
     inc(n,2);
   end;
  close(f1);
  close(f2);
 end;
end.
1
online
51 / 34 / 16
Регистрация: 11.02.2018
Сообщений: 220
04.02.2019, 22:10 4
Puporev, прикольно . Было желание как раз таки подсчитать кол-во строк пустой процедурой ввода и увеличения счетчика.
0
0 / 0 / 1
Регистрация: 12.12.2015
Сообщений: 60
05.02.2019, 21:31  [ТС] 5
Цитата Сообщение от Puporev Посмотреть сообщение
Так попробуйте.
это скопировать в новый файл строки по такой схеме: две строки от начала файла, две от конца не выполняется.
Просто копируется все строки.
0
Почетный модератор
64270 / 47569 / 32739
Регистрация: 18.05.2008
Сообщений: 115,182
06.02.2019, 08:17 6
Цитата Сообщение от solop sergei Посмотреть сообщение
Просто копируется все строки.
Это
Цитата Сообщение от solop sergei Посмотреть сообщение
Если количество строк больше заданного n,
0
0 / 0 / 1
Регистрация: 12.12.2015
Сообщений: 60
06.02.2019, 09:02  [ТС] 7
Нет это если количество строк меньше или равно n, то скопировать в новый файл строки по такой схеме: две строки от начала файла, две от конца.
0
Почетный модератор
64270 / 47569 / 32739
Регистрация: 18.05.2008
Сообщений: 115,182
06.02.2019, 09:27 8
Ну так и вводите n меньше или равно количеству строк в файле, а не больше.
Вот пример
Исходный файл
1111111
2222222
3333333
4444444
5555555
6666666
7777777
8888888
g=8
вводим n=5 g>n получаем
1111111
2222222
3333333
4444444
5555555
6666666
7777777
8888888
вводим n=20 g<n получаем
1111111
2222222
7777777
8888888
3333333
4444444
5555555
6666666
1
Модератор
Эксперт Pascal/DelphiЭксперт NIX
7494 / 4363 / 2774
Регистрация: 22.11.2013
Сообщений: 12,494
Записей в блоге: 1
06.02.2019, 10:25 9
Лучший ответ Сообщение было отмечено ZX Spectrum-128 как решение

Решение

Просто инвертировать условие в строке 17 (g<=n), и код станет отвечать условию задачи. Ну или блоки then и else местами поменяйте...
1
0 / 0 / 1
Регистрация: 12.12.2015
Сообщений: 60
06.02.2019, 10:26  [ТС] 10
Попробую напишу
0
0 / 0 / 1
Регистрация: 12.12.2015
Сообщений: 60
06.02.2019, 22:27  [ТС] 11
Получилось.
Спасибо
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.02.2019, 22:27
Помогаю со студенческими работами здесь

Из командной строки получить имя файла, создать файл и записать в него фразу
сделал прогу которая читает командную строку, создает файл и пишет в него фразу. под отладчиком...

Файл: создать файл и записать в него элементы исходного файла в обратном порядке
Дан файл целых чисел. создать новый , содержащий те же элементы, что и исходный файл , но в...

Создать новый текстовый файл, записав в него те строки исходного файла, которые начинаются с k идущих подряд символов m
Дан текстовый файл. Создать новый текстовый файл, записав в него те строки исходного файла, которые...

Создать директорию, в ней - файл, записать в него строку, переписать вторую половину строки в другой файл.
Надо выполнить задание, создать директорию, в ней создать файл записать в него строку, потом...


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

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

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