Создать программу вычисления указанной величины: Результат проверить при заданных исходных значениях. При x = –2.23510-2, y = 2.23, z = 15.221 = 39.374.
Рис 1 – Cтруктурная схема алгоритма
Рис 2 – Результат выполнение программы
Текст программы:
#include<iostream.h> //Подключаемые директивы #include<conio.h> #include<math.h> int main() //Основная функция { double x,y,z,f; //Описание используемых переменных cout<<"Input: x,y,z"<<endl; //Запрос на ввод данных cin>>x>>y>>z; //Ввод данных с клавиатуры f=(exp(fabs(x-y))*pow(fabs(x-y),x+y)) //Подсчет значения указанной величины /(atan(x)+atan(z))+pow((pow(x,6)+pow(log(y),2)),1*1.0/3); cout<<"\nx="<<x<<endl; //Вывод исходных данных cout<<"y="<<y<<endl; cout<<"z="<<z<<endl; cout<<"Rezult: f="<<f<<endl; //Вывод результата подсчета getch(); return 0; }
№2
Составить программу для вычисления значения rez в зависимости от поставленного условия. rez =
Рис 3 – Cтруктурная схема алгоритма
Рис 4 – Результат выполнение программы
Рис 5 – Результат выполнение программы
Текст программы:
#include<iostream.h> //Подключаемые директивы #include<conio.h> #include<math.h> int main() //Основная функция { double c,k,rez; cout<<"Input: c,k"<<endl; //Запрос на ввод данных cin>>c>>k; //Ввод данных с клавиатуры if (fabs(c+k)>2) //Проверка на выполнение условия { rez=pow(tan(c-2*k),2); //Выполнение расчета если условие выполнилось cout<<"\n c+k > 2"<<endl; //Вывод сообщения о ветви по которой идет вычисление } else if (fabs(c+k)>0.5) //Проверка на выполнение условия { rez=log(fabs(c-2*k))-sin(c/(2*k)); //Выполнение расчета если условие выполнилось cout<<"\n 0.5< c+k <= 2"<<endl; //Вывод сообщения о ветви по которой идет вычисление } cout<<" Rezult: "<<rez<<endl; //Вывод результата расчета getch(); return 0; }
№3
Для каждого x, изменяющегося от a до b с шагом h, найти значения функции Y(x), суммы S(x) и |Y(x)–S(x)| и вывести в виде таблицы. Значения a, b, h и n вводятся с клавиатуры.
Рис 6 – Cтруктурная схема алгоритма
Рис 7 – Результат выполнение программы
Текст программы:
#include<iostream.h> //Подключаемые директивы #include<conio.h> #include<math.h> int main() //Основная функция { double x,y,r,s,h,a,b,rez; int k,n; cout<<"\nInput: a,b,h,n"<<endl; cin>>a>>b>>h>>n; //Ввод данных с клавиатуры for (x=a;x<=b;x+=h) // Цикл при котором х меняет значение от а до b { r=s=1; for(k=1;k<=n;k++) //Цикл расчета суммы функции S(x) при данном значении х { r=r*2*x/k; //Расчет значения функции s+=r; //Подсчет суммы функции S(x) } y=pow(exp(x),2); //Расчет значения функции Y(x) rez=fabs(y-s); //Расчет выражения |Y(x)–S(x)| cout<<"\n\tx="<<x<<"\t s="<<s<<"\t y="<<y<<"\t |y-s|="<<rez<<endl; //Вывод результатов расчета } getch(); return 0; }
№4
В статическом массиве А размером N (не более 20), состоящем из целых чисел найти количество четных чисел и их сумму. Размер массива и его элементы вводятся с клавиатуры.
Рис 8 – Cтруктурная схема алгоритма
Рис 9 – Результат выполнение программы
Текст программы:
#include<iostream.h> //Подключаемые директивы #include<conio.h> int main() //Основная функция { int a[20],n,i,num=0,s=0; cout<<"\nInput N(<=20): \n"; cin>>n; //Ввод количества элементов массива for(i=0;i<n;i++) //Цикл для заполнения массива { cout<<"\n a["<<i+1<<"]="; cin>>a[i]; //Ввод элемента массива } for(i=0;i<n;i++) //Цикл поиска номера последнего отрицательного числа if(a[i]<0) num=i+1; if (num!=0) //Если отрицательные элементы есть в массиве подсчет суммы { for(i=num;i<n;i++) { s+=a[i]; //Подсчет суммы } cout<<"\nResult:"; cout<<"\nSumma="<<s<<"\n"<<endl; //Вывод результата } Else //Если отрицательных элементов нет cout<<"\nNet otritsatelnih chisel"<<endl; //Вывод сообщения getch(); return 0; }
№5
В двухмерном целочисленном массиве (размеры массива N, M и значения его элементов вводить с клавиатуры) найти указанное значение. Найти количество 0-й и 1-ц в массиве, а также сумму единиц.
Рис 10 – Cтруктурная схема алгоритма основной функции
Рис 11 – Cтруктурная схема алгоритма функции пользователя (F_Sum)
Рис 12 – Результат выполнение программы
Текст программы:
#include<iostream.h> //Подключаемые директивы #include<conio.h> int F_Sum(int,int,int**,int*,int*); //Прототип функции пользователя int main() //Основная функция { int **a,i,j,n,m,sum,kol_1,kol_0; cout<<"Input N,M:"; cin>>n>>m; //Ввод размерности матрицы a=new int*[n]; // Захват памяти для n элементов for(i=0;i<n;i++) a[i]=new int[m]; //Захват памяти для m элементов cout<<"Input A:"<<endl; for(i=0;i<n;i++) //Цикл ввода матрицы for(j=0;j<m;j++) { cout<<" a["<<i+1<<"],["<<j+1<<"]="; cin>>a[i][j]; } cout<<"Matrix A:"<<endl; for(i=0;i<n;i++) //Цикл вывода матрицы { for(j=0;j<m;j++) { cout<<" "<<a[i][j];
} cout<<endl; } sum = F_Sum(n, m, a, &kol_1,&kol_0); //Вызов функции пользователя cout << "\n Kol-vo 1 = " << kol_1 << "\n Kol-vo 0 = " << kol_0 << "\n Summa = " << sum << endl; //Вывод результатов delete []a; // Освобождение захваченной памяти getch(); return 0; } int F_Sum(int a, int b, int **x, int *k, int *t) // Функция пользователя подсчета 0 и 1 { int i, j, s = 0; *k = 0; *t = 0; for(i=0;i<a;i++) for(j=0;j<b;j++) if(x[i][j]==1) //Поиск элементов равных 1 { (*k)++; s += x[i][j]; } else if(x[i][j]==0) //Поиск элементов равных 0 (*t)++; return s; }
ЛИТЕРАТУРА
1. Основы алгоритмизации и программирования. Язык Си : учеб. пособие / М. П. Батура, В. Л. Бусько, А. Г. Корбит, Т. М. Кривоносова. – Минск : БГУИР, 2007. – 240 с. 2. Бусько В.Л., Корбит А.Г., Кривоносова Т.М. Конспект лекций по курсу «Основы алгоритмизации и программирования» для студентов всех специальностей и всех форм обучения. - Мн.: БГУИР, 2004. - 89 с.: ил. 4. 3. Методические указания по выполнению контрольной работы по курсу «Основы алгоритмизации и программирования» для студентов заочного отделения ИИТ. / Корбит А.Г., Кривоносова Т.М. – Минск: БГУИР, 2007. 4. Страуструп, Б. Язык программирования С++ / Б. Страуструп. – СПб. : БИНОМ, 1999. 5. Керниган, Б. Язык программирования Си / Б. Керниган, Д. Ритчи. – М. : Финансы и статистика, 1992. 6.