- •Министерство образования Российской федерации новосибирский государственный технический университет
- •Часть 1
- •Работа подготовлена на кафедре
- •Последовательность этапов решения задач при нисходящем проектировании
- •Семь основных элементов программирования.
- •Другие функции вывода: puts() и putchar()
- •Типы данных
- •Использование gets() и getch() для ввода
- •Условные операторы
- •Операции сравнения
- •Логические операции
- •Операторы присваивания
- •Оператор запятая
- •Лабораторная работа № 1 условные операторы. Операторы цикла.
- •Цель работы
- •Общие положения Оператор if
- •Циклические конструкции в программах
- •3. Пример программной реализации
- •4. Варианты заданий
- •5. Контрольные вопросы.
- •Лабораторная работа № 2 массивы целых чисел. Символьные массивы.
- •1. Цель работы.
- •2. Общие положения.
- •3. Примеры программных реализаций
- •Пример 3. Введенное натуральное число записать в виде строки.
- •4. Варианты заданий
- •5. Контрольные вопросы
- •Лабораторная работа № 3 методы сортировки.
- •Цель работы
- •Общие положения
- •Сортировка простыми включениями.
- •Сортировка простым выбором.
- •Сортировка простым обменом.
- •Пример программной реализации
- •Варианты заданий.
- •Лабораторная работа № 4
- •Способы передачи параметров
- •Функция main()
- •Области действия функций. Определения и объявления
- •Примеры программных реализаций
- •Варианты заданий
- •Контрольные вопросы
- •Лабораторная работа № 5 функции. Массивы указателей.
- •Цель работы
- •Общие положения
- •Примеры программных реализаций
- •Варианты заданий
- •Контрольные вопросы
Примеры программных реализаций
Пример 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();
}