ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 11.04.2024
Просмотров: 22
Скачиваний: 0
Министерство образования Республики Беларусь
Учреждение образования
«БЕЛОРУССКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ИНФОРМАТИКИ И РАДИОЭЛЕКТРОНИКИ»
Институт информационных технологий
Специальность Программное обеспечение информационных технологий
КОНТРОЛЬНАЯ РАБОТА
По курсу Основы алгоритмизации и программирования
Вариант № 15
Студент-заочник 1 курса
Группы № 781074
ФИО Красносельская Полина Юрьевна
Адрес Могилевская обл., г. Бобруйск, ул. Урицкого, 71/30
Тел. +375259550391
Минск, 2017
Задание 1. Создать программу вычисления указанной величины. Результат проверить при заданных исходных значениях.
. |
При x = 2.444, y = 0.86910-2, z = –0.13103 h = –0.49871. |
#include "stdafx.h"
#include <iostream>
#include <cmath>
using namespace std;
Int _tmain(int argc, _tchar* argv[])
{
double h, x, y, z;
cout<<"x=";
cin>>x;
cout<<"y=";
cin>>y;
cout<<"z=";
cin>>z;
h=((pow(x,y+1)+exp(y-1))/(1+x*abs(y-tan(z))))*(1+abs(y-x))+pow(abs(y-x),2)/2-pow(abs(y-x),3)/3;
cout<<"h="<<h<<endl;
system("pause");
}
Задание 2. Составить программу для вычисления значения rez в зависимости от поставленного условия.
Для получения результатов подобрать исходные данные так, чтобы выполнялись все возможные ветви алгоритма. Перед выводом полученного результата должно выводиться сообщение о ветви, при прохождении которой он получен. Обратите внимание, что возможен случай, при котором исходные данные не будут подходить ни для одного из предложенных условий.
rez =
#include "stdafx.h"
#include <iostream>
#include <cmath>
using namespace std;
Int _tmain(int argc, _tchar* argv[])
{
setlocale(LC_ALL,"RUS");
double rez, a, b;
cout<<"a=";
cin>>a;
cout<<"b=";
cin>>b;
if (a*b>0.5)
{
rez=exp(-(abs(a)+abs(b))/2)*(1/tan(a));
cout<<"Первая ветвь"<<endl;
cout<<"rez="<<rez<<endl;
}
else if (a*b>0.4 && a*b<=0.5)
{
rez=abs(a+pow(b,2))*(1/tan(b));
cout<<"Вторая ветвь"<<endl;
cout<<"rez="<<rez<<endl;
}
else
cout<<"Исходные данные не подходят для выполнения предложенных условий"<<endl;
system("pause");
}
Задание 3. Для каждого x, изменяющегося от a до b с шагом h, найти значения функции Y(x), суммы S(x) и |Y(x)–S(x)| и вывести в виде таблицы. Значения a, b, h и n вводятся с клавиатуры. Так как значение S(x) является рядом разложения функции Y(x), при правильном решении значения S и Y для заданного аргумента x (для тестовых значений исходных данных) должны совпадать в целой части и в первых двух-четырех позициях после десятичной точки.
Работу программы проверить для a = 0,1; b = 1,0; h = 0,1; значение параметра n выбрать в зависимости от задания.
, .
#include "stdafx.h"
#include <iostream>
#include <cmath>
using namespace std;
Int _tmain(int argc, _tchar* argv[])
{
setlocale(LC_ALL,"RUS");
double y, s, raz, x, a, b, h, n, k;
cout<<"a=";
cin>>a;
cout<<"b=";
cin>>b;
cout<<"h=";
cin>>h;
cout<<"n=";
cin>>n;
for (x=a; x<=b; x=x+h)
{
y=0;
s=0;
y=-log(sqrt(1+pow(x,2)))+x*atan(x);
for (k=1; k<=n; k++)
s=s+pow(-1,k+1)*pow(x,2*k)/(2*k*(2*k-1));
raz=abs(y-s);
cout<<fixed;
cout.precision(5);
cout<<"y="<<y<<"\t s="<<s<<"\t |y-s|="<<raz<<endl;;
}
system("pause");
}
Задание 4. В одномерном целочисленном массиве (размер массива (не больше 20) и значения его элементов вводить с клавиатуры) вычислить:
Сумму положительных элементов массива, расположенных до максимального элемента.
#include "stdafx.h"
#include <iostream>
#include <cmath>
using namespace std;
Int _tmain(int argc, _tchar* argv[])
{
setlocale(LC_ALL,"RUS");
int a[20], i, n, s=0, max=0, i_max;
cout<<"Введите размер массива ";
cin>>n;
for (i=1; i<=n; i++)
{
cout<<"a["<<i<<"]=";
cin>>a[i];
}
for (i=1; i<=n; i++)
if (a[i]>max)
{
max=a[i];
i_max=i;
}
for (i=1; i<i_max; i++)
if (a[i]>0)
s=s+a[i];
cout<<"Сумма положительных элементов массива, расположенных до максимального элемента, равна"<<s<<endl;
system("pause");
}
Задание 5. В двухмерном целочисленном массиве (размеры массива N, M и значения его элементов вводить с клавиатуры) найти указанное значение.
Массив в памяти разместить динамически (с использованием операций new и delete), ввод исходных данных и вывод полученных результатов выполнить в основной функции, а решение задачи оформить в виде отдельной функции пользователя. Не использовать глобальных переменных.
Найти максимальный элемент среди лежащих ниже главной диагонали.
#include "stdafx.h"
#include <iostream>
#include <cmath>
using namespace std;
int max_ngd (int n, int m, int **a)
{
int i, j, max=0;
for (i=0; i<n; i++)
{
for (j=0; j<m; j++)
if (i>j && a[i][j]>max)
max=a[i][j];
}
return max;
}
Int _tmain(int argc, _tchar* argv[])
{
setlocale(LC_ALL,"RUS");
int **a, i, j, n, m, max;
cout<<"Введите размерность матрицы ";
cin>>n>>m;
a=new int *[n];
for(i=0; i<n; i++)
a[i] = new int [m];
for (i=0; i<n; i++)
{
for (j=0; j<m; j++)
{
cout<<"a["<<i<<"]["<<j<<"]=";
cin>>a[i][j];
}
}
for (i=0; i<n; i++)
{
for (j=0; j<m; j++)
cout<<a[i][j]<<" ";
cout<<endl;
}
max=max_ngd(n,m,a);
cout<<"Максимальный элемент, лежащий ниже главной диагонали, равен "<<max<<endl;
delete []a;
system("pause");
}
Задание 6. Написать программу обработки файла типа запись, содержащую следующие пункты меню: «Создание», «Просмотр», «Коррекция» (добавление новых данных или редактирование старых), «Решение индивидуального задания».
Каждая запись должна содержать следующую информацию о студентах:
– фамилия и инициалы;
– год рождения;
– номер группы;
– оценки за семестр: по физике, математике, информатике, химии;
– средний балл.
Организовать ввод исходных данных, средний балл рассчитать по введенным оценкам.
Содержимое всего файла и результаты решения индивидуального задания записать в текстовый файл.
Распечатать анкетные данные студентов интересующей вас группы, имеющих средний балл выше введенного с клавиатуры.
#include "stdafx.h"
#include <iostream>
#include <io.h>
#include <stdio.h>
#include <conio.h>
using namespace std;
struct Students
{
char fio[100];
int god;
int grup;
int balls[4];
double sb;
};
Students student;
FILE *Fs, *Ft;
char fs_name[] = "students.dat";
char ft_name[] = "result.txt";
int size = sizeof(Students);
void create();
void add();
bool view();
void out(Students, int);
void edit(int);
void save(Students *, int);
void zadanie();
void main()
{
setlocale(LC_ALL,"rus");
int kod, kod_edit, edit_number;
Ft = fopen(ft_name, "w");
while(1)
{
puts("Введите пункт меню: ");
puts("\n1 - Создание\t2 - Просмотр\t3 - Коррекция\t4 - Индивидуальное задание\t0 - Выход\n");
scanf("%d", &kod);
switch(kod)
{
case 0:
fclose(Ft);
return;
case 1:
create();
if(!Fs)
{
puts("\nОшибка создания!");
return;
}
break;
case 2:
if (!view())
{
puts("\n\nОшибка создания!\n");
return;
}
break;
case 3:
puts("\n1 - Добавление новых данных\t2 - Редактирование старых данных\n");
scanf("%d", &kod_edit);
switch(kod_edit)
{
case 1:
add();
break;
case 2:
view();
printf("\n\nВведите номер студента:\t");
scanf("%d", &edit_number);
edit(edit_number);
break;
}
break;
case 4:
zadanie();
break;
}
}
getch();
}
void create()
{
Fs = fopen(fs_name, "wb");
puts("\nФайл создан!\n");
}
void add()
{
double fiz, mat, inf, khi, sball;
Fs = fopen(fs_name, "ab");
printf("Фамилия и инициалы - ");
fflush(stdin);
gets(student.fio);
printf("Год рождения - ");
scanf("%d", &student.god);
printf("Номер группы - ");
scanf("%d", &student.grup);
printf("Оценка по физике - ");
scanf("%d", &student.balls[0]);
printf("Оценка по математике - ");
scanf("%d", &student.balls[1]);
printf("Оценка по информатике - ");
scanf("%d", &student.balls[2]);
printf("Оценка по химии - ");
scanf("%d", &student.balls[3]);
fiz = student.balls[0];
mat = student.balls[1];
inf = student.balls[2];
khi = student.balls[3];
sball = (fiz + mat + inf + khi) / 4;
printf("Средний балл %6.2lf ", sball);
student.sb = sball;
fwrite(&student, size, 1, Fs);
fclose(Fs);
cout<<endl<<endl;
}
bool view()
{
int i = 1;
Fs = fopen(fs_name, "rb");
if (!Fs)
return false;
printf("\n\t--------------- Информация ---------------\n");
fprintf(Ft, "\n\n\n\t--------------- Информация ---------------\n");
while(1)
{
if(!fread(&student, size, 1, Fs)) break;
out(student, i);
i++;
}
puts("\n\n\n");
fclose(Fs);
return true;
}
void out(Students s, int i=0)
{
printf("\n%d. %s - %d, Группа: %d; Физика: %d, Математика: %d, Информатика: %d, Химия: %d, Средний балл: %1.2lf", i, s.fio, s.god, s.grup, s.balls[0], s.balls[1], s.balls[2], s.balls[3], s.sb);
fprintf(Ft, "\n%s - %d, Группа: %d; Физика: %d, Математика: %d, Информатика: %d, Химия: %d, Средний балл: %1.2lf", s.fio, s.god, s.grup, s.balls[0], s.balls[1], s.balls[2], s.balls[3], s.sb);
}
void edit(int edit_number)
{
Students *st, newStudent;
int descriptor, i, kol;
long len;
printf("\nРедактирование студента:\nФИО - ");
fflush(stdin);
gets(newStudent.fio);
printf("Год рождения - ");
scanf("%d", &newStudent.god);
printf("Номер группы - ");
scanf("%d", &newStudent.grup);
printf("Оценка по физике - ");
scanf("%d", &newStudent.balls[0]);
printf("Оценка по математике - ");
scanf("%d", &newStudent.balls[1]);
printf("Оценка по информатике - ");
scanf("%d", &newStudent.balls[2]);
printf("Оценка по химии - ");
scanf("%d", &newStudent.balls[3]);
newStudent.sb = (newStudent.balls[0]+newStudent.balls[1] + newStudent.balls[2] + newStudent.balls[3]) / 4;
Fs = fopen(fs_name, "rb");
descriptor = fileno(Fs);
len = filelength(descriptor);
kol = len/size;
st = new Students[kol];
for (i=0; i<kol; i++)
{
fread((st+i), size, 1, Fs);
}
fclose(Fs);
st[edit_number-1] = newStudent;
for (i=0; i<kol; i++)
out(st[i], i+1);
save(st, kol);
delete []st;
}
void save(Students *st, int num)
{
int i;
Fs = fopen(fs_name, "wb");
for (i=0; i<num; i++)
fwrite(&st[i], size, 1, Fs);
fclose(Fs);
}
void zadanie()
{
Students *st;
int descriptor, i, j=0, kol, gr, sr;
long len;
printf("\n ------- Студенты интересующей группы и имеющие средний балл выше введенного с клавиатуры ------- ");