10«В» — Самостоятельная работа №2.

Достаточно сделать первые две задачи.

Задача 1. «Указатели и структуры»

Напишите программу, которая вводит комплексное число (в виде двух чисел: действительной и мнимой части) и выводит его модуль и комплексно-сопряжённое к нему число. (В исходной версии этой задачи требовалось вывести два комплексных числа, являющихся квадратными корнями из введённого числа.)

Комплексные числа должны храниться в структурах (например, с полями double re, im; или с полями double x, y;). Все переменные для входных данных и для результатов должны быть определены в функции main(), в ней же должен быть и весь ввод-вывод. Все вычисления должны выполняться в одной специальной функции, а все параметры этой функции должны быть указателями (как минимум, среди них должны быть указатель на исходную структуру и указатель на структуру для результата).

Задача 2. «Слияние массивов»

Даны два упорядоченных по неубыванию массива. Напишите программу, которая сольёт их в один упорядоченный по неубыванию массив за линейное время.

Ваша программа должна в функции main() ввести входные массивы, создать переменную для массива-результата (с количеством элементов, равным суммарному количеству во входных массивах), вызвать функцию слияния и вывести результат.

Задача 3. «Разбиение списка»

Создайте в своей программе односвязный список из структур точек-на-плоскости.

Вызовите функцию, которая разобъёт этот список на два односвязных списка: в первом должны остаться точки (в исходном порядке), находящиеся не дальше заданного расстояния от начала координат; во второй список надо в любом порядке поместить все остальные точки. Функция должна получить указатель на исходный список и вернуть два указателя на списки-результаты. Внутри функции никакие элементы списков не должны создаваться, удаляться или копироваться — все изменения должны быть только в указателях.

Выведите исходный список и оба полученных списка.