Переписать в файл Н коэффициенты прямых, которые: а) параллельны первой прямой б) пересекаются с последней прямой - C (СИ)
Формулировка задачи:
Прямая на плоскости задается уравнением Ах+Ву+С=0, где А и В одновременно не равны 0. Пусть коэффициенты А, В, С – целые числа, которые хранятся в файле F (файл содержит не менее пяти наборов коэффициентов).
_
Переписать в файл Н коэффициенты прямых, которые:
а) параллельны первой прямой, заданной в файле F
б) пересекаются с последней прямой, заданной в файле F
_
В качестве результата работы высылать программу и файл данных.
fgfg
Решение задачи: «Переписать в файл Н коэффициенты прямых, которые: а) параллельны первой прямой б) пересекаются с последней прямой»
textual
Листинг программы
#include <stdio.h> #include <time.h> #include <stdlib.h> /* Для случая, когда прямые заданы уравнениями в общем виде (6), необходимое и достаточное условие их параллельности состоит в том, что коэффициенты при соответствующих текущих координатах в их уравнениях пропорциональны, т. е. a1/a2=b1/b2; */ /* Прямая на плоскости задается уравнением Ах+Ву+С=0, где А и В одновременно не равны 0. Пусть коэффициенты А, В, С – целые числа, которые хранятся в файле F (файл содержит не менее пяти наборов коэффициентов). Переписать в файл Н коэффициенты прямых, которые: а) параллельны первой прямой, заданной в файле F б) пересекаются с последней прямой, заданной в файле * */ void gen_file(const char * fn); void solve ( const char *fn, const char *fh); int main(void) { const char fi[]="i,dat"; const char fo[]="h.dat"; int i=0; srand(time(NULL)); while(++i<5) { printf ("\n%d------------------------\n",i) ; gen_file(fi); solve(fi, fo); } return EXIT_SUCCESS; } void gen_file(const char * fn) { int a=0, b=0,c=0, i=0; FILE *f=fopen(fn, "w"); while (++i<=5) { a=rand()%2; do { b=rand()%3; } while (a==0 && b==0); c=rand()%5; fprintf(f,"%d %d %d\n",a,b,c); } fclose(f); }; void solve (const char *fn, const char *fh) { int a=0, b=0,c=0, i=0, a1=0, b1=0, c1=0; FILE *f=fopen(fn, "r"); FILE *f1=fopen(fh, "w"); while (!feof(f)&&++i<=5) { if (i==1) { fscanf(f, "%d%d%d", &a,&b,&c); printf("%d. a=%4d, b=%4d, c=%4d\n", i,a,b,c); continue; } else { fscanf(f, "%d%d%d", &a1,&b1,&c1); printf("%d. a=%4d, b=%4d, c=%4d\n", i, a1,b1,c1); }; if (a*b1==b*a1) { fprintf(f1, "%d %d %d\n", a1, b1, c1); printf (" line with coeff in row = %d paralelna\n", i); } } fclose(f); fclose(f1); };
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д