По разделам

 

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


Дан файл вещественных чисел. Поменять в нем местами минимальный и максимальный элементы.

Код (Python)

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

def GenerateReals(fname):
    N = random.randint(2,15)
    print("N = ",N)
    L = []
    x = round(random.uniform(0, 10),1)
    L.append(x)
    for i in range(1,N):
        lst_rnd = [round(random.uniform(0, 10),1) for _ in range(0,10)]
        try:
            lst_rnd.remove(x)
        except:
            pass
        x = random.choice(lst_rnd)
        L.append(x)
    print(L)
    try:
        f = open(fname, "w")
        try:
            for x in L:
                line = str(x)+"\n"
                f.write(line)
        finally:
            f.close()
    except IOError:
        print('Write error: ',fname)


file1 = "file26.txt"
GenerateReals(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 = "temp_" + S + ".txt"
    #print()
    print("Temp file:",temp_file)

    with open(file1, 'r') as f_in, open(temp_file, 'w') as f_out:
        line = f_in.readline()
        x = float(line.strip())
        mx = x
        mn = x
        mx_line = 1
        mn_line = 1
        line_num = 1
        s = str(x)+'\n'
        f_out.write(s)
        for line in f_in:
            line_num += 1
            x = float(line.strip())
            if mx < x:
                mx = x
                mx_line = line_num
            elif mn > x:
                mn = x
                mn_line = line_num
            s = str(x)+'\n'
            f_out.write(s)

        print("Min: %1.1f : %2d" % (mn,mn_line))
        print("Max: %1.1f : %2d" % (mx,mx_line))

        swap1_value = mx
        swap1_line = mn_line
        swap2_value = mn
        swap2_line = mx_line

        print("Swap1: %1.1f : %2d" % (swap1_value,swap1_line))
        print("Swap2: %1.1f : %2d" % (swap2_value,swap2_line))

    #sys.exit()

    with open(file1, 'w') as f_out, open(temp_file, 'r') as f_in:
        line_num = 0
        for line in f_in:
            line_num += 1
            if line_num == swap1_line:
                f_out.write(str(swap1_value)+'\n')
            elif line_num == swap2_line:
                f_out.write(str(swap2_value)+'\n')
            else:
                f_out.write(line)
            print(line,end="")

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

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

Код (Pascal)

program File26;
var
 S:String;
 F_in,F_temp: File of Real;
 temp,maxEl,minEl:Real;
 i,maxI,minI:integer;
begin
  Write('File: ');
  Readln(S);
  Assign(F_in,S);
  Reset(F_in);
  i:=1;
  while (not eof(F_in)) do
   begin
    Read(F_in,temp);
    if (temp>maxEl) or (i=1) then
     begin
      maxEl:=temp;
      maxI:=i;
     end;;
    if (temp<minEl) or (i=1) then
     begin
      minEl:=temp;
      minI:=i;
     end;;
    inc(i);
   end;
  Close(F_in);
  Assign(F_in,S);
  Reset(F_in);
  Assign(F_temp,'~'+S);
  ReWrite(F_temp);
  i:=1;
  while (not eof(F_in)) do
   begin
    Read(F_in,temp);
    if i=maxI then Write(F_temp,minEl)
    else if i=minI then Write(F_temp,maxEl)
         else 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 Просмотров: 32
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

Комментарии

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