По разделам

 

Решение задачи File 27


Дан файл целых чисел с элементами A1, A2, ..., AN (N — количество элементов в файле). Заменить исходное расположение его элементов на следующее: A1, AN, A2, AN−1, A3, ... .

Код (Python)

# -*- coding: utf-8 -*-
import random
import string
import os
import sys
import math

def GenerateInts(fname):
#generate random real numbers and save them to file
    N = random.randint(2,15)
    N = 9
    #N = 10
    print("N = ",N)
    try:
        f = open(fname, "w")
        try:
            for i in range(0,N):
                #x = random.randint(1,11)
                x = i + 1
                line = str(x)+"\n"
                f.write(line)
        finally:
            f.close()
    except IOError:
        print('Write error: ',fname)

def CountFile(fname):
#count number of rows in given text-file 
    N = 0
    try:
        with open(fname,'r') as f:
            for line in f:
                N += 1
                #print(N,":",line)
    except IOError:
        print("Open error:",fname)
        return -1
    finally:
        return N

def GetLineK(fname,K):
    line = ""
    N = 0
    try:
        with open(fname,'r') as f:
            for line in f:
                N += 1
                if K == N:
                    break
    except IOError:
        print("Open error:",fname)
        return -1
    finally:
        return line

file1 = "file27.txt"
GenerateInts(file1)
print("Read from:",file1)

try:
    #file for temporary data
    N = random.randrange(5,8)
    S = ''.join(random.choice(string.ascii_lowercase + string.ascii_uppercase \
        + string.digits) for _ in range(N))
    temp_file_1 = "temp27_" + S + "_1.txt"
    temp_file_2 = "temp27_" + S + "_2.txt"
    #print()
    print("Temp file 1:",temp_file_1)
    print("Temp file 2:",temp_file_2)

    N = CountFile(file1)
    N1 = int(math.ceil(N/2))
    N2 = N - int(N/2)

    try:
        f_in = open(file1, 'r')
        try:
            print("===== Part 1 =====")
            f_out = open(temp_file_1, 'w')
            for i in range(1,N1+1):
                line = f_in.readline()
                print(i,":",line,end="")
                f_out.write(line)
        except IOError:
            print('Read Error: ',temp_file_1)
        finally:
            f_out.close()

        try:
            print("===== Part 2 =====")
            f_out = open(temp_file_2, 'w')
            for i in range(N,N2,-1):
                #print(i)
                line = GetLineK(file1,i)
                print(i,":",line,end="")
                f_out.write(line)
        except IOError:
            print('Read Error: ',temp_file_2)
        finally:
            f_out.close()

    except IOError:
        print('Read Error: ',file1)
    finally:
        f_in.close()

    try:
        f_out = open(file1, 'w')
        try:
            f_in1 = open(temp_file_1, 'r')
            f_in2 = open(temp_file_2, 'r')
            for i in range(0,N2):
                line = f_in1.readline()
                f_out.write(line)
                line = f_in2.readline()
                f_out.write(line)
        finally:
            f_in2.close()
            f_in1.close()
            f_out.close()

    except IOError:
        print('Write Error: ',file1)

    try:
        os.remove(temp_file_1)
        os.remove(temp_file_2)
    except OSError as e:
        print("\nError:", e)

except IOError:
    print('Open error: ',file1)
									

Код (Pascal)

program File27;
var
 S:String;
 F_in,F_temp: File of Integer;
 temp,i,i2,len:integer;
begin
  Write('File: ');
  Readln(S);
  Assign(F_in,S);
  Reset(F_in);
  len:=0;
  while (not eof(F_in)) do
   begin
    Read(F_in,temp);
    inc(len);
   end;
  Assign(F_temp,'~'+S);  
ReWrite(F_temp);
  for i2:=1 to (len div 2) do
   begin
    Close(F_in);
    Reset(F_in);
    i:=1;
    while (not eof(F_in)) and (i<=len-i2+1) do 
     begin
      Read(F_in,temp);
      if i=i2 then Write(F_temp,temp);
      inc(i);
     end;
    write(F_temp,temp);
   end;
  if (len mod 2 =1) then 
   begin
    Close(F_in);
    Reset(F_in);
    i:=1;
    while (i<=(len div 2)+1) do
     begin
      Read(F_in,temp);
      inc(i);
     end;
    Write(F_temp,temp);
    inc(i);
   end;
  Close(F_in); 
  Close(F_temp);
  Erase(F_in); 
  Rename(F_temp,S); 
end.
									




File. Абрамян
File 1 Просмотров: 49
File 2 Просмотров: 46
File 3 Просмотров: 49
File 4 Просмотров: 35
File 5 Просмотров: 54
File 6 Просмотров: 30
File 7 Просмотров: 51
File 8 Просмотров: 36
File 9 Просмотров: 39
File 10 Просмотров: 33
File 11 Просмотров: 35
File 12 Просмотров: 56
File 13 Просмотров: 47
File 14 Просмотров: 34
File 15 Просмотров: 31
File 16 Просмотров: 41
File 17 Просмотров: 39
File 18 Просмотров: 32
File 19 Просмотров: 33
File 20 Просмотров: 33
File 21 Просмотров: 30
File 22 Просмотров: 26
File 23 Просмотров: 29
File 24 Просмотров: 29
File 25 Просмотров: 38
File 26 Просмотров: 33
File 27 Просмотров: 44
File 28 Просмотров: 38
File 29 Просмотров: 41
File 30 Просмотров: 33
File 31 Просмотров: 35
File 32 Просмотров: 39
File 33 Просмотров: 50
File 34 Просмотров: 43
File 35 Просмотров: 37
File 36 Просмотров: 35
File 37 Просмотров: 32
File 38 Просмотров: 47
File 39 Просмотров: 31
File 40 Просмотров: 24
File 41 Просмотров: 47
File 42 Просмотров: 35
File 43 Просмотров: 31
File 44 Просмотров: 33
File 45 Просмотров: 35
File 46 Просмотров: 30
File 47 Просмотров: 36
File 48 Просмотров: 29
File 49 Просмотров: 36
File 50 Просмотров: 37
File 51 Просмотров: 40
File 52 Просмотров: 36
File 53 Просмотров: 30
File 54 Просмотров: 29
File 55 Просмотров: 33
File 56 Просмотров: 42
File 57 Просмотров: 42
File 58 Просмотров: 42
File 59 Просмотров: 34
File 60 Просмотров: 34

Комментарии

Чтобы написать комментарии вам нужно войти в систему или зарегистрироваться