Примеры решения задач по программированию

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

БЕЛОРУССКИЙ НАЦИОНАЛЬНЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ



МЕЖДУНАРОДНЫЙ ИНСТИТУТ ДИСТАНЦИОННОГО ОБРАЗОВАНИЯ









Группа 417315







КОНТРОЛЬНАЯ РАБОТА

по дисциплине “Основы алгоритмизации и программирования”





Выполнил: студент

Проверила: Попова Ю. Б.

















Минск 2006


ЗАДАНИЕ № 1



ЗНАКОМСТВО СО СРЕДОЙ. ОБЪЯВЛЕНИЕ ОСНОВНЫХ ТИПОВ ДАННЫХ. ВВОД/ВЫВОД ДАННЫХ. ОПЕРАЦИИ В ЯЗЫКЕ C/C++



Цель работы

Закрепление практических навыков построения простой программы, объявления основных типов данных и организации ввода/вывода переменных, применения операций при написании программ на языке C/C++.



Постановка задачи

Написать программу вычисления сопротивления электрической цепи, состоящей из двух параллельно соединенных сопротивлений, а затем вычислить сопротивление электрической цепи, состоящей из двух последовательно соединенных сопротивлений. 







a,b

начало





c=a*b

d=a+b

c=c/d





с а





конец





Листинг программы на языке C++



#include <clx.h>

#include<iostream.h> // подсоединение к программе раздела библиотеки с функциями// по потокового ввода/вывода данных

void main()

{ // начало функции main()

 int a, b, c, d; // объявление переменных a, b, c целого типа

cout<<"Введите значение сопротивления a и b:"; // вывод строки на экран

cin>>a>>b; // ввод значений a и b

 c=a*b; // умножение значений a и b и присвоение переменной с 

 d=a+b; // присваивание переменной c значения суммы переменных a и b c=c/d;

 cout<<"Сопротивление цепи с последующим соединением ="<<c; // вывод значения переменной c на экран c=a+b;

 cout<<"Сопротивление цепи с параллельным соединением ="<<c; // вывод значения переменной a на экран cin>>a;



Результаты работы программы



Введите значения переменных: 4 7

Результат: 2 и 11



Выводы по лабораторной работе



В ходе выполнения задания была составлена схема машинного алгоритма по условию задачи, написан код программы и получены результаты работы программы. В результате выполнения работы были закреплены практические навыки построения простой программы на языке программирования C/C++, в которой были объявлены переменные целого типа. Организован ввод значений переменных с помощью оператора потокового ввода, произведен расчет суммы значений переменных и организован вывод результата на экран с помощью оператора потокового вывода.



ЗАДАНИЕ № 2



ОПЕРАТОРЫ ЯЗЫКА C/C++. ФОРМАТИРОВАННЫЙ ВВОД/ВЫВОД ДАННЫХ. СТРУКТУРЫ ВЫБОРА. СТРУКТУРЫ ПОВТОРЕНИЯ



Цель работы



Закрепление практических навыков построения программы на языке C/C++ с использованием структур выбора if-else, switch, с использованием структур повторения do-while, while, for, а также с организацией ввода/вывода данных с применением функций форматированного ввода/вывода. 



Постановка задачи

	Написать программу вычисления площади кольца. Программа должна проверять правильность исходных данных. Использовать структуру выбора if-else. Использовать форматированный ввод/вывод данных.

	

Листинг программы на языке C++

	

#include <clx.h>

#include<iostream.h>

void main()

{ int n,x;

cout<<"Введите значение кольца:"<<endl;

cin>>n;

x=3.14;

if (n<0) cout<<"Значение не верные"; // если значение условия (n<0) является истинным, на экран выводится текст Значение не верные 

else if (n>0) cout<<x*n*n; 

}

Результаты работы программы



Введите значения переменных: 0

Результат: Значения не верны

 Введите значения переменных: 4

Результат: 48



Выводы по лабораторной работе



В результате выполнения работы были закреплены практические навыки построения простой программы на языке программирования C/C++, в которой были объявлены переменные целого типа. Организован ввод значений переменных с помощью оператора потокового ввода, произведен расчет суммы значений переменных и организован вывод результата на экран с помощью оператора потокового вывода а также использовалась структуру выбора if-else.



ЗАДАНИЕ № 3



МАССИВЫ И УКАЗАТЕЛИ В C/C++



Цель работы

Закрепление практических навыков построения программы на языке C/C++ с использованием массивов данных и переменных типа указатель. 


Постановка задачи



		Написать программу, которая проверяет, представляют ли элементы введенного с клавиатуры массива возрастающую последовательность. Использовать форматированный ввод-вывод данных.

	

Листинг программы на языке C++

	

	#include <clx.h>

	#include<iostream.h>

	#include<stdio.h>

	void main()

	{

	int i,a;

	int mas[5]; // объявление массива mas 

	printf("Введите элементы массива \n");

	

	for(i=0;i<5;i++) // использование вложенной структуры повторения for для

	{ 

	scanf("%d",&mas[i]); // заносим значение в массив

	a=mas[0]; 

	}

	printf(" Вывод элементов масива \n");

	for(i=0;i<5;i++) // использование вложенной структуры повторения for для

	{ 

	printf("%d",mas[i],"\n"); // вывод суммы элементов массива mas на экран

	

	}

	for(i=1;i<4;i++) // использование вложенной структуры повторения for для if (i++<a) cout<<"Массив не является возрастающей последовательностью "; 

	// использование else-if конструкции

	 }



Результаты работы программы



Введите значения : 4 7 5 6 8

Результат: 4 7 5 6 8 Массив не является возрастающей последовательностью



Выводы по лабораторной работе



В ходе выполнения задания была составлена схема машинного алгоритма по условию задачи, написан код программы и получены результаты работы программы. В результате выполнения работы были закреплены практические навыки построения простой программы на языке программирования C/C++, в которой были объявлен массив MAS. Организован ввод значений переменных с помощью оператора потокового ввода, произведен расчет значений массива на возрастающую последовательность и организован вывод результата на экран с помощью оператора потокового вывода.



ЗАДАНИЕ № 4



ФУНКЦИИ В C/C++. УКАЗАТЕЛИ НА ФУНКЦИИ. ПЕРЕГРУЗКА ФУНКЦИЙ. ШАБЛОНЫ ФУНКЦИЙ



Цель работы

Закрепление практических навыков построения программы на языке C/C++ с использованием функций, указателей на функции, массивов указателей на функции, рекурсивных функций, функций со списком переменной длины, параметров, используемых по умолчанию, аргументов командной строки, встроенных функций, перегруженных функций и шаблонов функций.



Постановка задачи

	

	Написать программу, в которой необходимо определить массив указателей на функции. Вводить цифру, определяющую какую функцию надо выполнить: 0-найти минимальное число, 1-найти максимальное число, 2-вычислить сумму чисел, 3-вычислить разность чисел, 4-найти произведение чисел, 5-найти частное чисел, 6-завершить работу. Выполнить соответствующую функцию, используя указатель на нее, и вывести результаты на экран. В программе предусмотреть использование прототипа функции.

	

Листинг программы на языке C++



//---------------------------------------------------------------------------



#include <clx.h>

#include<stdio.h>

#include<iostream.h>

void fun1(int);

void fun2(int);

void fun3(int);

void fun4(int);

void fun5(int);

void fun6(int);

main()

{

void(*F[6])(int)={fun1, fun2, fun3, fun4, fun5, fun6}; // объявление массива указателей *F[6] на

 // функции и инициализация его именами функций

int choice;

printf("ВВЕДИТЕ НОМЕР ОТ 0 do 5, 6 ДЛЯ ЗАКРИТИЯ");

scanf("%d", &choice);

while(choice>=0 && choice<6)

{ (*F[choice])(choice); // вызов функции при помощи разыменования 

 // указателя на функцию. Указатель на функцию выбирается по индексу choice

 // вызванной функции в качестве аргумента передается переменная choice

printf(" ВВЕДИТЕ НОМЕР ОТ 0 do 5, 6 ДЛЯ ЗАКРИТИЯ");

scanf("%d", &choice);

}

printf("Введено 6 для завершения");

return 0;

}

void fun1(int a)

{

int i,s,m;

int mas[5];

m=99; // максимальное число

for(i=0;i<5;i++)

scanf("%d",&mas[i]); // использование структуры повторения do while

if(i<m) m=i;

printf("Min :%d", m);

}

 // вычисление суммы чмсел

void fun2(int b)

{

int a;

int m; // максимальное число

puts("Введите числа. Для завершения ведите 0:");

m=0;

do {scanf("%d",&a); // использование структуры повторения do while

 if(a>m) m=a; // тело цикла выполняется пока значение условия (a>0)

} while(a>0); // является истина

printf("Максимальное число :%d", m);

}

void fun3(int c)

{

int a, b, x; // объявление переменных a, b, c целого типа

cout<<"Введите значение переменных a и b:"; // вывод строки на экран

cin>>a>>b; // ввод значений a и b

 x=a+b; //присваивание переменной c значения суммы переменных a и b

 cout<<"Сумма="<<x;

 }

void fun4(int d)

{ int a, b, x; // объявление переменных a, b, c целого типа

cout<<"Введите значение переменных a и b:"; // вывод строки на экран

cin>>a>>b; // ввод значений a и b

 x=a-b; // присваивание переменной c значения суммы переменных a и b

 cout<<"Сумма="<<x;}

void fun5(int e)

{ int a, b, x; // объявление переменных a, b, c целого типа

cout<<"Введите значение переменных a и b:"; // вывод строки на экран

cin>>a>>b; // ввод значений a и b

 x=a*b; //присваивание переменной c значения суммы переменных a и b

 cout<<"Сумма="<<x;}

void fun6(int r)

{ printf("Введено %d для вызова функции fun3\n", r);}