- •1. Этапы разработки программы
- •Основные блочные символы
- •Лабораторная работа № 1 условные операторы. Операторы цикла Цель работы
- •Лабораторная работа № 2 массивы целых чисел. Символьные массивы Цель работы
- •Варианты заданий
- •Лабораторная работа № 3 функции. Способы передачи параметров. Матрицы
- •1. Цель работы
- •2. Общие положения
- •Способы передачи параметров
- •Функция main()
- •Области действия функций. Определения и объявления
- •3. Примеры программных реализаций
- •4. Варианты заданий
3. Примеры программных реализаций
Пример 1. На плоскости даны 20 точек, они попарно соединены отрезками. Написать программу вычисления длины наибольшего из отрезков. Считать, что координаты заданы последовательностью действительных чисел х 0, у 0, х 1, у 1, ... х 19, у 19.
#include<stdio.h>
#include<math.h>
#include<conio.h>
int Rasst(int x1,int
y1,
int x2,int y2,int kl)
{
static double max_r =
= 0;
double r;
if(kl==1){printf("%f",
max_r);
return 0; }
r=sqrt(pow(x1-x2,2) +
pow(y1-y2,2));
if(r > max_r)
{
max_r = r;
printf("\t %f",
max_r);
return 1;
}
return 0;
}
void main()
{ int с[40], i,j, n,x1,
x2;
clrscr();
printf("\nВведи кол-во
точек:");
scanf ("%d",&n);n*=2;
for (i=0; i< n; i +=2)
{printf("\n введи
координаты точки:");
scanf("%d%d",&с[i],
&с[i+1]);
}
x1=0;x2=0;
for( i=0; i<n; i+=2)
for( j=i+2;j<n; j+=2)
if(Rasst(с[i],с[i+1],
с[j],с[j+1],0)>0)
{ x1=i; x2=j;}
printf("\n Наибольшее расстояние между точками %d и %d равно", х1,
х2);
Rasst(0,0,0,0,1);
}
Пример 2. Даны длины a, b, c сторон некоторого треугольника. Найти медианы треугольника, сторонами которого являются медианы исходного треугольника. Длина медианы, проведенной к стороне a, равна
0.5 *(2*b2+2*c2-a2)1/2.
#include<stdio.h>
#include<conio.h>
#include<math.h>
float Med(float a,
float b,
float c)
{return((sqrt (2*b*b +
+ 2*c*c- a*a))/2);
}
void main()
{
clrscr();
float a,b,c,a1,a2,a3;
printf("Введи a,b, c:\ n");
scanf("%f %f %f", &a,
&b,&c);
a1=med(a,b,c);
a2=med(b,c,a);
a3=med(c,a,b);
printf("Медиана к стороне а равна: %f",
Med(a1,a2,a3));
printf("\n Медиана к стороне b равна:%f",
med(a2,a3,a1));
printf("\n Медиана к стороне с равна:%f",
Med(a3,a2,a1));
getch();
}
Пример 3. Поиск минимального и максимального элементов матрицы, вычисление суммы элементов.
#include<conio.h>
#include<stdio.h>
void Min_max( int& min,
int& max, int n, int
a[][5])
{
int i,j;
min = max = a[0][0];
for(i=0;i<n;i++)
for(j=0;j<n;j++)
{
if(a[i][j]<min)
min = a[i][j];
if(a[i][j]>max)
max = a[i][j];
}
}
int Summa (int n, int*
pnt[], int ss[])
{
int i, j, sum = 0;
for( i=0; i<n; i++)
{
ss[i] = 0; //Вес
строки
for( j=0; j<n; j++)
ss[i] += pnt[i]
[j];
sum+=ss[i]; //Сумма
элементов
}
return sum;
}
void main()
{
int ks,i,j,m[5][5],
s,s_str[5];
clrscr();
printf("\nВведи
разм-сть:");
scanf("%d", &ks);
for( i=0; i<ks; i++)
{
printf("Введи % dстроку
: ",i);
for( j=0; j<ks; j++)
scanf("%d",&m[i][j]);
}
Min_max(i,j,ks,m);
printf("\n Максимальный
элемент:%d", j);
printf("\n Минимальный
элемент:%d", i);
printf("\n Сумма
элем-в:%d",
Summa(ks,p,s_str));
printf("\n Вес строки
\t Матрица»);
for( i=0; i<ks; i++)
{printf(“\n\t%d\t”,s_str[i]);
for( j=0; j<ks; j++)
printf(“%3d “,m[i][j]);
}
getch();
}