
ИТиУвТС / Контрольная работа №1 вариант 9
.docxМинистерство образования Республики Беларусь
УО «Белорусский государственный университет информатики и радиоэлектроники»
Факультет заочного обучения
Кафедра вычислительных методов и программирования
Контрольная работа №1
по дисциплине ‹‹Основы алгоритмизации и программирования››
Выполнил студент гр. 202402 Специальности 530107
|
|
Проверил: Шилин Д. Л. Оценка:_____________ ____________________ (подпись) _________________(дата) |
Минск 2012
Содержание
Тема №1. Среда программирования VISUAL C++. Программирование линейных алгоритмов …………………………………………………………………………………..3
Тема №2. Программирование разветвляющихся алгоритмов ………….……..5
Тема №3. Программирование циклических алгоритмов …………………………..7
Тема №4. Программирование с использованием одномерных массивов ..9
Тема №5. Указатели. Программирование с использованием динамических двумерных массивов ……………………………………………………………………………12
Тема №6. Программирование с использованием строк …………………………..16
Список использованной литературы……………………………………………………………18
Контрольная работа по предмету: ОАиП
Вариант №9
Тема №1
Среда программирования VISUAL C++.
Программирование линейных алгоритмов.
Индивидуальное задание
Написать программу вычисления значения выражения при заданных ис-ходных данных. Сравнить полученное значение с указанным правильным результатом.
9. S=
Ответ: s=1.21308;
При
x=1.825;
y=18.225;
z=-3.298
;
Текст программы:
#include<iostream>
#include<math.h>
int main()
{
double x,y,z,s,a,b,c,d;
x=1.825e2; //std::cin>>x;
y=18.225; //std::cin>>y;
z=-3.298e-2; //std::cin>>z;
a=fabs(pow(x,y/x)-pow(y/x,1/3.));
b=y-x;
c=cos(y)-(z/(y-x));
d=1+pow(y-x,2);
s=a+b*c/d;
std::cout<<"Result s= "<<s<<std::endl;
return 0;
}
Скриншот:
Вывод: Научился работать со средой программирования VISUAI C++. Освоил программирование линейных алгоритмов.
Тема №2
Программирование разветвляющихся алгоритмов.
Индивидуальное задание
Составить программу вычисления выражения согласно указанному варианту. Предусмотреть вывод информации о выбранной ветви вычислений.
9.
S=
#include<iostream>
#include<math.h>
using namespace std;
int main()
{
double x,y,s;
cout<<"Vvedite x: ";
cin>>x;
cout<<"Vvedite y: ";
cin>>y;
if(x>fabs(y))
{
s=2*pow(x,3)+3*pow(y,2);
cout<<"1 vetv. Result= "<<s<<endl;
}
else if(x>3 && x<fabs(y))
{
s=fabs(x-y);
cout<<"2 vetv. Result= "<<s<<endl;
}
else
{
s=pow(fabs(x-y),1/3.);
cout<<"3 vetv. Result= "<<s<<endl;
}
return 0;
}
Скриншот:
Блок-схема
Вывод: Научился составлять блок-схемы. Освоил программирование разветвляющихся алгоритмов.
Тема №3
Программирование циклических алгоритмов.
Индивидуальное задание.
Вывести на экран таблицу значений функции y(x) x, изменяющегося от a=0.1 до b=1.2 с шагом h= 0.1.
9.
y=
Текст программы:
#include<iostream>
#include<iomanip>
#include<math.h>
using namespace std;
int main()
{
double summa,s,x,a=0.1,b=1.2,h=0.1;
int n=20,i;
x=a;
do
{
summa=0;
for(i=1;i<=n;i++)
{
s=(2*i+1)/sin(i*x)*pow(x,i-1);
summa+=s;
}
cout<<setw(15)<<x<<setw(15)<<summa<<endl;
x+=h;
}
while(x<=b);
cout<<endl;
return 0;
}
Скриншот:
Блок-схема:
Вывод: Освоил программирование циклических алгоритмов.
Тема №4
Программирование с использованием одномерных массивов.
Индивидуальное задание.
Ввести одномерный статический массив из k чисел. Выполнить в соответствии с номером варианта индивидуальное задание и вывести на экран исходные данные и полученный результат.
9. Сформировать два новых массива: в первый записать отрицательные элементы исходного массива, во второй – все остальные.
Текст программы:
#include<iostream>
#include<iomanip>
#include<math.h>
using namespace std;
int main()
{
int i,j=0,k=0;
int a[5];
int b[5]={};//отрицательные числа
int c[5]={};//положительные числа
for(i=0;i<5;i++)
{
cout<<"Vvedite a["<<i<<"]: ";
cin>>a[i];
}
for (i=0;i<5;i++)
{
if(a[i]<0)
{
b[j]=a[i];
j++;
}
else
{
c[k]=a[i];
k++;
}
}
for(i=0;i<5;i++)
{
cout<<a[i]<<'\t';
}
cout<<endl;
for(j=0;j<5;j++)
{
cout<<b[j]<<'\t';
}
cout<<endl;
for(k=0;k<5;k++)
{
cout<<c[k]<<'\t';
}
cout<<endl;
return 0;
}
Скриншот:
Блок-схема:
Вывод: Научился программировать с использованием статических одномерных массивов.
Тема №5
Указатели. Программирование с использованием динамических двумерных массивов.
Индивидуальное задание.
Ввести матрицу размером N*M. Память для массива выделить динамически. Выполнить в соответствии с номером варианта индивидуальное задание и вывести на экран исходные данные и полученный результат.
9. Найти максимальный среди элементов, лежащих выше побочной диагонали.
Текст программы:
#include<iostream>
#include<iomanip>
#include<math.h>
using namespace std;
int main ()
{
int **a,i,j,imax,jmax,n,m;
cout<<"Vvedite razmer:n,m"<<endl;
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<<"Vvedite a["<<i<<"]["<<j<<"] ";
cin>>a[i][j];
}
}
cout<<endl;
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
cout<<setw(9)<<a[i][j];
}
cout<<endl;
}
imax=jmax=0;
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
if(i+j<m-1)
{
if(a[i][j]>a[imax][jmax])
{
imax=i;
jmax=j;
}
}
}
cout<<endl;
}
cout<<"Result: "<<a[imax][jmax]<<endl;
for(i=0;i<n;i++)
{
delete [] a[i];
}
delete []a;
a=NULL;
return 0;
}
Скриншот:
Блок-схема:
Вывод: Изучил указатели. Научился программировать с использованием динамических двумерных массивов.
Тема №6
Программирование с использованием строк
Индивидуальное задание.
Вводится строка, каждое слово которой отделяется от других слов одним или несколькими пробелами. Выполнить в соответствии с номером варианта индивидуальное задание и вывести на экран полученный результат.
9. Подсчитать количество слов, заканчивающихся на букву “z”.
Текст программы:
#include <string.h>
#include <iostream>
using namespace std;
int main ()
{
char str[100];
int i,n,k=0;
n=strlen(str);
puts("Vvedite stroki");
gets_s(str);
for(i=0;i<n;i++)
{
if(str[i]=='z' && str[i+1]==' ')
{
k++;
}
}
cout<<"Rezult: "<<k<<endl;
return 0;
}
Скриншот:
Блок-схема:
Вывод: Научился программировать с использованием строк.
Список использованной литературы:
1. Основы алгоритмизации и программирования. Язык Си: учеб. пособие //М. П. Батура [и др.] / – Минск : БГУИР, 2007.
2. Основы алгоритмизации и программирования: конспект лекций для студ. всех спец. и всех форм обуч. БГУИР / В. Л. Бусько [и др.] /. – Минск : БГУИР, 2004.
3. Вирт, Н. Алгоритмы и структуры данных/ Н. Вирт– СПб. : Невский диалект, 2005.
4. Кнут, Д. Искусство программирования: В 3 т. Т. 3/ Д. Кнут Сортировка и поиск / – М.: Вильямс, 2000.
5. Хопкрофт, Дж. Структуры данных и алгоритмы / Дж. Хопкрофт, Дж.Ульман, А. Ахо– М.: Вильямс, 2003.
6. Павловская, Т. А. С/С++. Программирование на языке высокого уровня / Павловская Т. А. – СПб. : Питер, 2004.