11.12 Структуры (продолжение), argv и random

   1 typedef struct dot dot;
   2 struct dot {
   3         float x;
   4         float y;
   5 };

Указатель на структуру

Пятиминутка отдыха

int main(int argc, char *argv)

Массивы структур, malloc / calloc

Если структур планируется много, локально их заводить нельзя. Надо malloc() или calloc(), а потом free()

Лайфхак: к серверу практикума можно подключиться из дома! (например, скачать с него файлы)!

Д/З (планируемое)

TODO

  1. Ввести N ⩽ 100, затем — N точек (пар вещественных чисел). Вывести (с помощью print_triangle()) все образуемые ими треугольники в порядке возрастания площади. Вершины треугольника всегда идут в порядке их ввода.

    • Подсказка: поскольку треугольников будет немного, их можно даже не сортировать заранее — просто искать очередной. Это всего лишь в два раза медленнее обменной сортировки…

  2. Написать программу, которая получает в командной строке (стандартный ввод не используется) четыре параметра: координаты центра окружности x, y; её радиус r, и количество точек N. Программа должна вывести N координат случайных точек в формате абсцисса:ордината, равномерно распределённых внутри окружности.

  3. Описать несколько функций, работающих с типом struct rational { int num; int denom; } — рациональными числами, представленными в виде простой дроби.

    • normalize(a) — сокращение дроби (пригодится НОД)

    • add(a, b), mul, sub, div — арифметические операции

    • eq(a, b) — равнение на ==

    • double(a) — преобразование в вещественное число

  4. Ввести N ⩽ 10000, затем — N строк вида «имя фамилия возраст». Отсортировать ввод любым эффективным устойчивым методом (годится сортировка слиянием, quicksort не годится) и вывести. Строки сравниваются лексикографически (например, с помощью strcmp()), возраст — как число.

LecturesCMC/AL/Prac/22_ArgvStructs (последним исправлял пользователь FrBrGeorge 2026-11-15 19:30:06)