Переписать в файл Н коэффициенты прямых, которые: а) параллельны первой прямой б) пересекаются с последней прямой - 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);
};

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 4 из 5
Похожие ответы