КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Примеры программирования задач с использованием подпрограмм
При программировании задач возможны несколько вариантов. Выбор правильного (более эффективного и надежного) варианта зависит от опыта программиста Задача 1 Даны два вектора: = {хi}; i = и ={yi};i = . Вычислить значение: D = , где ; ; тх, ту - максимальные компоненты векторов и соответственно; sx, sy - средние значения компонент векторов и соответственно. Решение: #include "stdafx.h" #include <math.h> float Mod_Otkl (float *a, int n) /* функция для нахождения максимального компонента и среднего значения в любом массиве */ { float ma, sa, Da; int i; ma =-10000; sa=0; for (i =0;i<n;i++) { if (a[i]>ma) ma= a[i]; sa += a[i]; } sa = sa/n; Da= fabs(ma - sa); return Da; } void main() { float X[10],Y[10]; int i; float Dx, Dy, D; printf("Bведитe массив X:\n"); for (i =0;i<8;i++) scanf("%f",&X[i]); printf("Bведитe массив Y:\n"); for (i =0;i<10;i++) scanf("%f",&Y[i]); Dx = Mod_Otkl(X, 8); //вызов функции Mod_Otkl для массива X Dy = Mod_Otkl(Y,10); //вызов функции Mod_Otkl для массива Y D = Dx/Dy; printf("D=%f\n",D); }
Задача 2 Даны две матрицы: А = {a i j }5x6 и В = {b i j }4x7. Вычислить разность: С = КА - KB, где КА и KB - количество положительных элементов в матрицах А и В соответственно. #include "stdafx.h" int CP(float D[7][7], int m, int n) /* функция для подсчета количества положительных элементов в матрице */ { int i, j, KD; KD=0; for (i=0;i<m;i++) for (j=0;j<n;j++) if (D[i][j]>0) KD ++; return KD; } int main() { float A[7][7], B[7][7]; int i,j, C; printf("Введите матрицу А\n"); for (i=0;i<5;i++) for (j=0;j<6;j++) scanf("%f",&A[i][j]); printf("Введите матрицу B\n"); for (i=0;i<4;i++) for (j=0;j<7;j++) scanf("%f",&B[i][j]);
C= CP(A, 5,6) - CP(B, 4, 7); printf("C=%d\n", C); return 0; }
Задача 3 На плоскости декартовыми координатами заданы 10 точек: {x1,y1},{x2,y2},...,{х10,у10}. Вывести полярные координаты точки, имеющей наибольший полярный радиус. Вычисление полярных координат одной точки оформить подпрограммой. Расчетные формулы для вычисления полярных координат следующие: , где а и b - координаты точки. Решение: #include "stdafx.h" #include<math.h> void PK(float a, float b, float *ro, float *fi) /* функция для расчета полярных координат точки */ { *ro = sqrt(a*a + b*b); *fi = atan(b/a); } int main() { float X[10], Y[10], R[10], F[10]; int i, n; float max; printf("Введите абсциссы 10 точек\n"); for (i=0;i<10;i++) scanf("%f",&X[i]); printf(" Введите ординаты 10 точек\n"); for (i=0;i<10;i++) scanf("%f",&Y[i]); max = 0; for (i=0;i<10;i++) { PK(X[i],Y[i],&R[i],&F[i]); if (R[i]>max) // поиск максимального радиуса { max =R[i]; n=i; } } printf("romax=%f fimax=%f\n", R[n],F[n]); return 0; }
Задача 4 Для заданных квадратных матриц: A = {a i j}3x3 и В = {bi j}4х4 вычислить симметричные матрицы по правилу: Решение: #include "stdafx.h" void SM(float Y[4][4], int n, float X[4][4]) { int i,j; for (i=0;i<n;i++) for (j=i;j<n;j++) { X[i][j]=(Y[i][j] + Y[j][i])/2; X[j][i] =X[i][j]; } } void main() { float A[4][4], B[4][4], C[4][4], D[4][4]; int i, j; printf("Введите матрицу А\n"); for (i=0;i<3;i++) for (j=0;j<3;j++) scanf("%f",&A[i][j]); printf("Введите матрицу B\n"); for (i=0;i<4;i++) for (j=0;j<4;j++) scanf("%f",&B[i][j]); SM(A, 3,C); SM(B, 4, D); printf("Симметричная матрица С\n"); for (i=0;i<3;i++) {for (j=0;j<3;j++) printf("%8.2f",C[i][j]); printf("\n"); } printf("Симметричная матрица D\n"); for (i=0;i<4;i++) {for (j=0;j<4;j++) printf("%8.2f",D[i][j]); printf("\n"); } }
Дата добавления: 2014-12-26; Просмотров: 423; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |