Все файлы одним архивом: zadan.zip 2.5 кБ

Задание 1

Для примера была выбрано следующее составное арифметическое выражение:

func=2*x+3*y при x func=10*x+10*y при x func=x+y+10 при x1
func=x-2*y при x=2 y1
func=x-y при x>2 y2 y=1
func=x+10 при x>2 y>1

Параметры циклов подобраны так:
По x начало 0, конец 4, шаг 1
По y начало 0, конец 2, шаг 2

#include

#define y0 1.
#define x0 2.

// функция для составного арифметического выражения
double function( double x, double y, char** vetv, char** funcname) {

if(yif(x*funcname="2*x+3*y";
*vetv="xx0 y return x-y;
}
}
else if(y==y0) {
if(x *funcname="
10*x+10*y";
*vetv="
xx0 y=y0";
return 2*x-y;
}
}
else { //y>y0
if(x *funcname="
x+y+10";
*vetv="
xy0";
return 10*x+10*y;
}
else if(x==x0) {
*funcname="
3*x-3*y-3";
*vetv="
x=x0 y>y0";
return 3*x-3*y-3;
}
else { // x>x0
*funcname="
x+10";
*vetv="
x>x0 y>y0";
return x+10;
}
}
}

void main() {

char* vetv_out;
char* funcname_out;
double x,y,func;

double first_x,last_x,step_x;
double first_y,last_y,step_y;

printf("
Input first value of x:");
scanf("
%lf",&first_x);
printf("
Input last value of x:");
scanf("
%lf",&last_x);
printf("
Input step of x:");
scanf("
%lf",&step_x);

printf("
\nInput first value of y:");
scanf("
%lf",&first_y);
printf("
Input last value of y:");
scanf("
%lf",&last_y);
printf("
Input step of y:");
scanf("
%lf",&step_y);

printf("
\nResults: x0=%.0f y0=%.0f",x0,y0);

for(x=first_x; xfor(y=first_y; y

func=function(x,y,&vetv_out,&funcname_out);
printf("
\nx=%.0f y=%.0f func=%-9s func=%3.0f %7s",x,y,funcname_out,func,vetv_out);
}
}
}

Результат работы программы

Input first value of x:0
Input last value of x:4
Input step of x:2

Input first value of y:0
Input last value of y:2
Input step of y:1

Results: x0=2 y0=1
x=0 y=0 func=2*x+3*y func= 0 x x=0 y=1 func=10*x+10*y func= 10 x x=0 y=2 func=x+y+10 func= 20 xy0
x=2 y=0 func=x-2*y func= 2 x=x0 yy0
x=4 y=0 func=x-y func= 4 x>x0 yx0 y=y0
x=4 y=2 func=x+10 func= 14 x>x0 y>y0

Задание 2

#include

void main() {

double multiplier=1.;
int negative_counter=0;
int max_index_i,max_index_j;
double max_value=-1.79769e+308; // минимальное значение для double
double a[6][4];

FILE* f=fopen("mass.txt","r");

for(int i=0; ifor(int j=0; jfscanf(f,"%lf",&a[i][j]);
}
}
fclose(f);

for(int i=0; ifor(int j=0; jprintf("%5.1f ",a[i][j]);
}
printf("\n");
}

for(int i=0; ifor(int j=0; j2) multiplier*=a[i][j];
if(a[i][j]max_value) {
max_value=a[i][j];
max_index_i=i;
max_index_j=j;
}
}
}

printf("(a) Product of elements, which modulus > 2: %.2f\n",multiplier);
printf("(b) Number of negative elements: %d\n",negative_counter);
printf("(c) Indexes of the greatest elements: %d,%d\n",max_index_i,max_index_j);
}

Исходный файл с матрицей mass.txt

1.3 5.4 2.5 0.3
-3.7 1.7 8.8 0.2
-1.5 0.3 2.6 0.2
4.7 0.4 1.6 1.1
0.1 -3.0 0.7 1.2
1.8 1.2 1.5 2.9

Результат работы программы

1.3 5.4 2.5 0.3
-3.7 1.7 8.8 0.2
-1.5 0.3 2.6 0.2
4.7 0.4 1.6 1.1
0.1 -3.0 0.7 1.2
1.8 1.2 1.5 2.9
(a) Product of elements, which modulus > 2: 46731.38
(b) Number of negative elements: 3
(c) Indexes of the greatest elements: 1,2

Задание 3

#include
#include

typedef struct { double x,y; } point;
typedef struct { double a,b,c; } line;

line make_line( point A, point B) {

line m;
m.a=B.y-A.y;
m.b=A.x-B.x;
m.c=A.y*(B.x-A.x)-A.x*(B.y-A.y);

return m;
}

void print_line( line m ) {
printf("%.2lf*x%+.2lf*y%+.2lf=0\n",m.a,m.b,m.c);
}

void print_line_in_segments( line m ) {

double div_x=-m.c/m.a;
double div_y=-m.c/m.b;
char sign_x=' ';
if(div_x char sign_y='+';
if(div_y

printf("%cx/%.2lf%cy/%.2lf=1\n",sign_x,fabs(div_x),sign_y,fabs(div_y));
}

point centre_of_gravity(line m) {

point p;
p.x=-m.c/m.a/3.; // центр тяжести с координатами 1/3 от стороны треугольника
p.y=-m.c/m.b/3.;
return p;
}

double distance(point p, line m){
return fabs(m.a*p.x+m.b*p.y+m.c)/sqrt(m.a*m.a+m.b*m.b);
}

void main() {

point P={1,3};

// тут нужно поставить координаты точек в соответствии с вариантом 3
// у меня просто три пары произвольных точек
point A1={-1,-4}, B1={-3.1,-0.9};
point A2={0.5,2.5}, B2={1.5,1.1};
point A3={-0.7,14}, B3={7,-1.4};

line m1=make_line(A1,B1);
line m2=make_line(A2,B2);
line m3=make_line(A3,B3);

point centre1=centre_of_gravity(m1);
point centre2=centre_of_gravity(m2);
point centre3=centre_of_gravity(m3);

printf("Equations of line\n");
print_line(m1);
print_line(m2);
print_line(m3);

printf("\n(a) Equations of line in segments\n");
print_line_in_segments(m1);
print_line_in_segments(m2);
print_line_in_segments(m3);

printf("\n(b) Distance from point (1,3) to line\n");
printf("%lf\n",distance(P,m1));
printf("%lf\n",distance(P,m2));
printf("%lf\n",distance(P,m3));

printf("\n(c) Coordinates of centre of gravity\n");
printf("{%lf,%lf}\n",centre1.x,centre1.y);
printf("{%lf,%lf}\n",centre2.x,centre2.y);
printf("{%lf,%lf}\n",centre3.x,centre3.y);
}

Результат работы программы

Equations of line
3.10*x+2.10*y+11.50=0
-1.40*x-1.00*y+3.20=0
-15.40*x-7.70*y+97.02=0

(a) Equations of line in segments
-x/3.71-y/5.48=1
x/2.29+y/3.20=1
x/6.30+y/12.60=1

(b) Distance from point (1,3) to line
5.581774
0.697486
3.398823

(c) Coordinates of centre of gravity
{-1.236559,-1.825397}
{0.761905,1.066667}
{2.100000,4.200000}

Все файлы одним архивом: zadan.zip 2.5 кБ