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

18 Янв 2020 в 19:41
188 +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 Апр в 19:47
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 92 548 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир