Считая, что заданы координаты концов отрезков, найти их длины - C (СИ)
Формулировка задачи:
Дан файл натуральных чисел. Количество чисел в файле кратно четырем, каждые два последовательных числа определяют координаты некоторой точки на плоскости. Считая, что заданы координаты концов отрезков, найти их длины.
Решение задачи: «Считая, что заданы координаты концов отрезков, найти их длины»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int l_vect(FILE *,int*,int*);
int main()
{
int beg[2],end[2]; //координаты точек начала и конца вектора
FILE *f;
char str[20];
scanf("%s",str);
f = fopen(str,"r");
if(f == NULL) // Проверка ошибки открытия файла
{
puts("File open error...");
getchar();
return 0;
}
while(!feof(f)) // Пока не конец файла
printf("Long vector: %i\n",l_vect(f,beg,end));
getchar();
getchar();
return 1;
}
int l_vect(FILE *f,int *beg, int *end)
{
fscanf(f,"%i",&beg[0]);
fscanf(f,"%i",&beg[1]);
fscanf(f,"%i",&end[0]);
fscanf(f,"%i",&end[1]);
return sqrt((pow((double)(end[0]-beg[0]),2)+pow((double)(end[1]-beg[1]),2))); // Возвращаем значение по формуле:
}
Объяснение кода листинга программы
- Включаем необходимые заголовочные файлы для работы с вводом-выводом, математическими функциями и файлами
- Определяем функцию
l_vect, которая будет вычислять длину вектора по заданным координатам концов отрезков - В функции
mainоткрываем файл для чтения с помощьюfopenи проверяем успешность операции с помощьюfeof - Пока файл не закончился, считываем координаты концов отрезков с помощью
fscanfи передаем их в функциюl_vect - Выводим значение длины вектора на экран с помощью
printf - В функции
l_vectсчитываем координаты концов отрезков с помощьюfscanf - Вычисляем длину вектора по формуле
sqrt((pow((double)(end[0]-beg[0]),2)+pow((double)(end[1]-beg[1]),2))и возвращаем результат - Закрываем файл с помощью
fcloseпосле окончания работы с ним - Возвращаем 1 в функции
main, если файл успешно открыт и прочитан, иначе возвращаем 0 и выводим сообщение об ошибке - В функции
l_vectиспользуемpowиз библиотекиmath.hдля вычисления квадрата числа с плавающей точкой - В функции
l_vectиспользуемsqrtиз библиотекиmath.hдля вычисления квадратного корня числа с плавающей точкой - В функции
mainиспользуемgetcharдля считывания символа новой строки - В функции
mainиспользуемfeofдля проверки окончания файла - В функции
mainиспользуемfscanfдля считывания чисел из файла - В функции
mainиспользуемprintfдля вывода значения длины вектора на экран - В функции
mainиспользуемfcloseдля закрытия файла - В функции
mainиспользуемgetcharдля считывания символа новой строки - В функции
mainиспользуемgetcharдля считывания символа новой строки - В функции
mainвозвращаем 1 при успешном выполнении программы, иначе возвращаем 0 - В функции
l_vectиспользуемfscanfдля считывания чисел из файла