- •ОГЛАВЛЕНИЕ
- •ВВЕДЕНИЕ
- •1. ЯЗЫК ПРОГРАММИРОВАНИЯ C++
- •1.1. Нововведения C++ в сравнении с C
- •1.3. Технический обзор
- •2. ЛАБОРАТОРНАЯ РАБОТА № 1 «Знакомство с языком C++. Основные функции»
- •2.1. Методические указания
- •2.1.1. Алфавит C++
- •2.1.2. Этапы создания исполняемой программы
- •2.1.3. Типы данных C++
- •2.1.3.1. Концепция типа данных
- •2.1.3.2. Простые типы данных
- •2.1.4. Структура программы на языке C++
- •2.1.5. Директивы препроцессора
- •2.1.5.1. Директива #include
- •2.1.5.2. Директива #define
- •2.1.6. Предварительные замечания о функциях ввода/вывода
- •2.1.7. Переменные и выражения
- •2.1.7.1. Переменные
- •2.1.7.2. Операции
- •2.1.7.3. Выражения
- •2.1.8. Основные функции
- •2.1.8.1. Математические функции
- •2.1.8.2. Функции обработки сигналов
- •2.1.8.3. Функции ввода-вывода в стиле C
- •2.1.8.4. Функция работы с датой и временем
- •2.1.8.5. Функции локализации
- •2.1.8.6. Функции классификации и преобразования символов
- •2.1.8.7. Функции управления программой
- •2.1.8.8. Различные функции в стиле C
- •2.2. Примеры программ для выполнения лабораторной работы № 1
- •2.3. Вопросы для самоконтроля
- •3. ЛАБОРАТОРНАЯ РАБОТА № 2 «Программирование с использованием основных операторов языка C++. Работа с массивами»
- •3.1. Методические указания
- •3.1.1. Основные операторы языка С++
- •3.1.1.1. Базовые конструкции структурного программирования
- •3.1.1.2. Составные операторы
- •3.1.1.3. Операторы выбора
- •3.1.1.4. Операторы циклов
- •Цикл с предусловием (while)
- •Цикл с постусловием (do while)
- •Цикл с параметром (for)
- •3.1.1.5. Операторы передачи управления
- •Оператор goto
- •Оператор break
- •Оператор continue
- •Оператор return
- •3.1.2. Одномерные массивы
- •3.1.2.1. Описание массива в C/C++
- •3.1.2.2. Обработка одномерных массивов
- •3.1.2.3. Перебор массива по одному элементу
- •3.1.2.4. Датчика случайных чисел для формирования массива.
- •3.1.3. Многомерные массивы
- •3.2. Примеры программ для лабораторной работы № 2
- •3.3. Вопросы для самоконтроля
- •3.4. Варианты заданий к лабораторной работе № 2
- •4. КУРСОВАЯ РАБОТА «Создание собственной функции»
- •4.1. Методические указания
- •4.1.1. Объявление и определение функций
- •Глобальные переменные
- •Возвращаемое значение
- •4.1.2. Параметры функции
- •4.2. Вопросы для самоконтроля
- •4.3. Варианты заданий курсовой работы
- •Вариант 1
- •Вариант 2
- •Вариант 3
- •Вариант 4
- •Вариант 5
- •Вариант 6
- •Вариант 7
- •Вариант 8
- •Вариант 9
- •Вариант 10
- •Список литературы
- •Направление – _____________________________________________
- •Кафедра –
- •Выполнил студент гр. _______ __________ _______ ______________
- •Направление – ________________________________________________
- •Выполнил студент гр. _______ __________ _______ __________
3.2. Примеры программ для лабораторной работы № 2
Пример 38. Написать программу для вычисления функции F, используя условный оператор:
|
ì |
cos (5x |
2 |
+ 2) |
|
|
|
|
|
|
||
|
ï y = |
|
, |
|
z = 3 8x + 3, |
x ³ 3 |
||||||
|
|
|
3x3 |
|
||||||||
F = y 2 + z 2 |
ï |
|
|
|
|
|
|
|
|
|
||
í |
|
e(3x-16) |
|
|
|
|
|
|
||||
|
ï y = |
|
|
|
, z = 3x2+ 4x , |
x < 3 |
||||||
|
|
|
|
|
|
|
|
|||||
|
ï |
3 (x + 3)2 (x - 5)2 |
|
|
|
|
|
|||||
|
î |
|
|
|
|
|
#include <stdio.h> #include <conio.h> #include <math.h> void main()
{
float y,z,f; int x;
printf("vvedite x="); scanf("%d",&x);
if (x>=3)
{
y=cos(5*x*x+2)/sqrt(3*x*x*x);
z=pow(8*x+3,1/3);
}
else
{
y=exp(3*x-16)/pow((x+3)*(x+3)*(x-5)*(x-5),1/3); z=3*pow(x,2+4*x);
}
f=y*y+z*z;
printf("F=%.3f\nx=%d\ny=%.3f \nz=%.3f",f,x,y,z); getch();
}
78
Пример 39. Написать программу соответствия между числом и текущим цветом (для процедуры textcolor (color)). «Color» может принимать значение 0…7 из Задания № 5 (0 – черный, 1 – голубой, 2 – зеленый, 3 – васильковый, 4 – красный, 5 – фиолетовый, 6 – коричневый, 7 – светло-серый), либо
8 |
– темносерый |
13 |
– сиреневый |
|
9 |
– светло-голубой |
14 |
– желтый |
|
10 |
-салатовый |
15 |
– белый |
|
11 |
– алый |
|
|
#include <stdio.h> #include <conio.h> #include <math.h> void main()
{
int x; printf("vvedite x:"); scanf("%d",&x); switch(x)
{
case 0:printf("black");break; case 1:printf("blue");break; case 2:printf("green");break;
case 3:printf("cornflower-blue");break; case 4:printf("red");break;
case 5:printf("purple");break; case 6:printf("brown");break;
case 7:printf("light grey");break; case 8:printf("dark grey");break; case 9:printf("light blue");break; case 10:printf("salad");break; case 11:printf("scarlet");break; case 12:printf("orange");break; case 13:printf("liliac");break; case 14:printf("yellow");break; case 15:printf("white");break; default:printf("incorrect number");
}
getch();
}
79
Пример 40. Вычислить факториал числа n.
#include <iostream.h>
void |
main (void) |
{ |
i, n; |
int |
|
float |
fact = 1; |
cout << “введите число, факториал которого вычислить:”;
cin >> n;
for ( i = 1; i <= n; i++) fact = fact*i;
cout <<n<<”!= “ << fact;
}
Пример 41. Домножить все элементы массива на квадрат его
наименьшего элемента. Вывести измененный массив.
#include <iostream.h> #include <math.h> #include <iomanip.h> void main (void)
{
int i, n, a[20], min;
cout << ”введите количество чисел в массиве (<20) ”; cin >> n;
for (i=0; i<n; i++)
{
cout << “введите ” << i << “ элемент массива:”; cin >> a[i];
}
min = a[0];
for (i=0; i<n; i++)
if (a[i] < min) min = a[i]; for (i=0; i<n; i++)
{
a[i] = a[i]*pow(min,2); cout << setw(8) << a[i];
}
}
80
Пример 42. Дана последовательность из n целых чисел. Найти количество элементов этой последовательности, кратных числу K1 и не
кратных числу K2.
#include <iostream.h> #include <conio.h> #include <math.h> #include <stdio.h> void main()
{
int n,x,s1,s2,i,k1,k2; cout<<"vvedite n:"; cin>>n; printf("vvedite k1:"); scanf("%d",&k1); printf("vvedite k2:"); scanf("%d",&k2);
cout<<"vvedite elementi: \n"; for(s1=0,s2=0,i=1;i<(n+1);i++)
{
scanf("%d",&x); if(x%k1==0) s1++; if(x%k2!=0) s2++;
}
printf("kol-vo kratnix k1=%d \nkol-vo ne kratnix k2=%d",s1,s2);
getch();
}
Пример 43. Дана последовательность целых чисел, за которой следует 0. Найти количество элементов этой последовательности, кратных
ее первому элементу.
#include <iostream.h> #include <conio.h> #include <math.h> #include <stdio.h> void main()
{
int a,x,k;
printf("vvedite 4isla posledovatelnosti\n"); scanf("%d",&a);
if (a!=0)
81
{
k=1; do
{
scanf("%d",&x); if(x%a!=0) k++;
}
while (x!=0); --k;
printf("kol-vo kratnix 1-my 4leny noclegovatelnosti=%d",k);
}
else
{
printf(“v posledovatelnosti 1 4len:Hevozmozhno proizvesti racc4et”);
}
getch();
}
Пример 44. B группе учатся n студентов. Вводя по 5 оценок каждого студента, подсчитать количество студентов, не имеющих
оценки 2 и 3.
#include <iostream.h> #include <iomanip.h> #include <conio.h> void main ( void )
{
int n,kol=0,i,j,ch;/*n-количество студентовi, j-параметры циклов,kolколичество студентов на 4 и 5,ch-счетчик предметов*/
int |
k = 5 ; |
// |
5 предметов |
int |
a[30][5] ; |
// |
матрица оценок |
cout<<"Kolichestvo studentov v gruppe:"; cin>>n;
for (i=1;i<=n;i++)
{
for (j=1;j<=5;j++)
{
cout<<"Vvedite"<<j<<"ocenku"<<i<<"studenta:"; cin>>a[i][j] ;
82
}
cout<<endl;
}
/*вывод матрицы в виде таблицы*/ for (i=1; i<=n;i++)
{
for(j=1;j<=5;j++)
cout<<setw(5)<<a[i][j];/* конец цикла по j*/ cout << endl; // конец цикла по i
}
for (i=1;i<=n;i++) /*i-счетчик тудентов, j- счетчик предметов */
{
ch=0;//счетчик оценок для каждого студента for (j=1;j<=5;j++)
if (a[i][j]>3)ch++; if (ch==5)kol++;
}
cout<<"v gruppe"<<kol<<"studentov uchit na 4 i 5 "; getch();
}
При вводе матрицы можно сразу позиционировать курсор в нужное место экрана. Результат работы программы:
83
Пример 45. Заполнить квадратную матрицу порядка 3 с клавиатуры с использованием позиционирования курсора.
#include <iostream.h> #include <conio.h> void main(void)
{
int a[10][10], i, j, n, m; cout<<"strok= ";cin>>n;
cout<<"stolbcov= ";cin>>m; cout<<endl<<endl;
for (i=1; i<=n; i++)
{
for (j=1; j<=m;j++)
{
gotoxy(wherex( )+5*j, wherey( ) - 1); cin >> a[i][j];
}
cout <<" \n"; // либо cout<<endl;
}
}
84
Пример 46. Расчитать матрицу C как произведение матриц A и B, при этом значения матриц задать в теле программы:
|
й1щ |
й1 |
0 |
1 |
щ |
||||
A = |
к |
ъ |
; B = |
к |
0 1 |
0 |
ъ |
; |
|
к |
2ъ |
к |
ъ |
||||||
|
к |
3ъ |
|
к |
1 |
0 |
1 |
ъ |
|
|
л |
ы |
|
л |
|
|
|
ы |
|
Код программы:
#include <iostream.h> #include <math.h> #include <iomanip.h> #include <conio.h> void main(void)
{
//Ввод значений матриц A и B int a[3][1]={{1},{2},{3}};
int b[3][3]={{1,0,1},{0,1,0},{1,0,1}}; int c[3][1];
int k=0;int i=0; int j=0; //Вывод матрицы A на экран cout<<"matrica A=\n";
cout<<"\n";
for(int j=0,i=0;i<3;i++)
{
for(j=0;j<1;j++)cout<<a[i][j]<<" "; cout<<"\n\n";
cout<<"\n"; cout<<endl; } //Вывод матрицы B на экран
cout<<"matrica B=\n"; cout<<"\n";
for(int j=0,i=0;i<3;i++)
{
for(j=0;j<3;j++)cout<<b[i][j]<<" "; cout<<"\n\n";
cout<<"\n"; cout<<endl; } //Вывод матрицы С на экран
cout<<"rezult C="<<"\n";
for(int i=0,j=0,ik=0,jk=0;i<3;i++)
{
for(jk=0;jk<1;jk++) { for(j=0;j<3;j++)
85
{ |
k+=b[i][j]*a[j][jk];} |
c[i][jk]=k; |
|
cout<<c[i][jk]<<"\n\n"; |
|
k=0; |
} |
}
cout<<"\n";
getch();
}
Блок-схема для данной программы имеет вид:
86
начало
int a[3][1, int b[3] [3],int c[3][1];int k=0;int i=0; int j=0;
Вывод |
|
|
matrica A= |
||||
|
|||||||
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
int |
|
|
|
|
j=0,i=0;i |
|
|
|
|
<3;i++ |
|
|
|
|
|
Вывод |
matrica B= |
|
|
j=0; j<1; |
|
|
|
|
j++ |
int |
|
|
|
|
|
|
||
|
j=0,i=0;i |
|
|
|
Вывод |
<3;i++ |
|
|
|
|
|
|
||
a[i][j] |
|
|
|
|
|
j=0; j<3; |
|
|
|
|
j++ |
|
|
|
|
Вывод |
|
|
|
|
b[i][j] |
|
|
|
|
rezult C= |
Вывод |
|
|
|
|
inti=0,j=0,ik |
|
|
|
|
=0,jk=0;i<3;i |
|
|
jk=0; |
|
++ |
|
|
a |
k=0 |
b |
||
jk<1;jk+ |
||||
+ |
|
Вывод |
|
|
k+=b[i][j]*a[j] |
|
|||
c[i][j] |
|
|||
[jk] |
|
|
|
|
j=0; |
b |
a |
|
|
|
|
|
||
j<3;j++ |
|
|
|
|
|
getch () |
|
|
|
k+=b[i] |
|
|
|
|
[j]*a[j][jk] |
конец |
|
|
|
|
|
|
87
Пример 47. Ввести матрицы B и A с клавиатуры. Расчитать
матрицу C=A+BBT.
#include <stdio.h> #include <conio.h> #include <iostream.h> #include <iomanip.h> void main(void)
{// Определение переменных
int a[3][3],b[3][3],c[3][3],d[3] [3],i,j,m,n,m1,n1,f,l,max;
cout<<"vvedite pa3Mep Matrici A:"<<endl; cin>>n;
cin>>m;
cout<<"vvedite pa3Mep Matrici B:"<<endl; cin>>n1;
cin>>m1;
// проверка размерности матриц if (n1>=m1)
{
max=n1;
}
else
{
max=m1;
}
if ((n==m)&(n==max))
{ // Заполнение матрицы А
cout<<"vvedite elementi Matrici A:"<<endl; for (i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
cin>>a[i][j];
}
// Заполнение матрицы B
cout<<"vvedite elementi Matrici B:"<<endl; for (i=1;i<=n1;i++)
{
for(j=1;j<=m1;j++)
cin>>b[i][j];
}
// Транспонирование матрицы В
88
for (i=1;i<=n1;i++)
{
for(j=1;j<=m1;j++)
{d[j][i]=b[i][j];}
}
// Умножение матриц В на В транспонированную for (i=1;i<=n1;i++)
{
for(j=1;j<=n1;j++)
{
f=0;
for (l=1;l<=m1;l++)
{
f=f+b[i][l]*d[l][j];
}
c[i][j]=f;
}
}
// Сложение матриц for (i=1;i<=n1;i++)
{
for(j=1;j<=n1;j++)
{
c[i][j]=a[i][j]+c[i][j];
}
}
// Вывод матрицы A на экран printf("Matrica A: \n"); for (i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
cout<<setw(m)<<a[i][j];
cout<<endl;
}
// Вывод матрицы B на экран printf("Matrica B: \n"); for (i=1;i<=n1;i++)
{
for(j=1;j<=m1;j++)
cout<<setw(m)<<b[i][j];
cout<<endl;
89