Дан файл f, элементы которого являются целыми числами. Никакой из элементов файла не равен нулю. Файл f содержит столько же отрицательных чисел, сколько и положительных. Используя вспомогательный файл h, переписать элементы файла f в файл g так, чтобы в файле g:- не было двух соседних чисел с одним знаком,- сначала шли положительные, потом отрицательные числа.

18 Янв 2020 в 19:41
208 +1
0
Ответы
1

Для решения данной задачи можно использовать следующий алгоритм:

Считываем элементы файла f и записываем положительные и отрицательные числа в файлы h_pos и h_neg соответственно, сохраняя порядок элементов.

Переписываем элементы файлов h_pos и h_neg в файл g, чередуя положительные и отрицательные числа, начиная с положительных.

Удаляем временные файлы h_pos и h_neg.

Пример кода на Python:

with open('f.txt', 'r') as f, open('h_pos.txt', 'w') as h_pos, open('h_neg.txt', 'w') as h_neg:
numbers = [int(num) for num in f.readlines() if int(num) != 0]
pos_numbers = [str(num) + '\n' for num in numbers if num > 0]
neg_numbers = [str(num) + '\n' for num in numbers if num < 0]
h_pos.writelines(pos_numbers)
h_neg.writelines(neg_numbers)
with open('h_pos.txt', 'r') as h_pos, open('h_neg.txt', 'r') as h_neg, open('g.txt', 'w') as g:
pos_numbers = [int(num) for num in h_pos.readlines()]
neg_numbers = [int(num) for num in h_neg.readlines()]
while pos_numbers or neg_numbers:
if pos_numbers:
g.write(str(pos_numbers.pop(0)) + '\n')
if neg_numbers:
g.write(str(neg_numbers.pop(0)) + '\n')
# Удаление временных файлов
import os
os.remove('h_pos.txt')
os.remove('h_neg.txt')

После выполнения данного кода, в файле g будут записаны элементы файла f в требуемом порядке.

18 Апр 2024 в 19:47
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир