Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ИТиУвТС / Контрольная работа №1 вариант 9

.docx
Скачиваний:
14
Добавлен:
01.04.2014
Размер:
230.43 Кб
Скачать

Министерство образования Республики Беларусь

УО «Белорусский государственный университет информатики и радиоэлектроники»

Факультет заочного обучения

Кафедра вычислительных методов и программирования

Контрольная работа №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.

19