- •Лекция 1 Создание консольного приложения
- •2. Консоль. Построение консольного проекта
- •3. Запуск приложения
- •4. Сохранение и редактирование проекта
- •Лекция 2
- •4. Функции форматированного ввода и вывода
- •4.1. Функция форматированного ввода с клавиатуры
- •4.2. Функция форматированного вывода на экран
- •5. Математические функции
- •Лекция 3 Линейные вычислительные процессы
- •1. Алгоритм. Управляющие структуры
- •2. Линейные вычислительные алгоритмы
- •Лекция 4 Разветвляющиеся вычислительные процессы
- •1. Управляющая структура «развилка». Логические операции и операции отношения
- •2.1. Условный оператор if()
- •2.2. Условное выражение
- •2.3. Оператор выбора switch()
- •Лекция 5 Программирование разветвляющихся вычислительных процессов
- •Лекция 6 Циклические вычислительные процессы.
- •1. Типы циклов
- •3. Операторы безусловного перехода
- •Лекция 7 Вычисление последовательностей
- •4. Примеры вычисления последовательностей
- •5. Структура алгоритмов вычисления рекуррентных последовательностей
- •Лекция 8 Одномерные массивы
- •1. Массивы
- •1.1. Примеры программ обработки одномерных массивов
- •Лекция 9 Алгоритмы сортировки одномерных массивов
- •1. Сортировка одномерных массивов
- •1.1. Метод пузырька (метод обменной сортировкой с выбором)
- •1.2. Сортировка выбором
- •1.3. Сортировка простыми вставками
- •Лекция 10 Двухмерные массивы
- •1. Двухмерные массивы
- •Лекция 11 Алгоритмы матричной алгебры
- •1. Алгоритмы матричной алгебры
- •Лекция 12 Динамические массивы
- •1. Память компьютера. Адресное пространство
- •2. Динамическая память
- •3. Адреса и указатели
- •4. Указатели и массивы. Динамические массивы
- •5. Проблемы, связанные с указателями
- •6. Поразрядные операции
- •Лекция 13
- •1.2. Способы объявления и обращения к элементам двухмерных массивов
- •Лекция 14 Символы и строки
- •1. Символьный тип данных
- •2. Строки
- •Лекция 15 Структуры
- •1. Понятие структуры
- •2. Определение нового имени типа
- •3. Массивы структур. Указатели на структуры
- •3.1. Определение статического массива структур
- •3.1. Определение динамического массива из n структур
- •Лекция 16 Файлы
- •1. Потоковый ввод-вывод данных
- •3. Понятие файла. Функции работы с файлами
- •Лекция 17 Файлы
- •Лекция 18 Функции пользователя
- •I. Приёмы построения алгоритмов
- •2. Понятие функции
- •2.1. Определение функции
- •2.2. Область видимости переменных
- •2.3. Параметры функции
- •2.4. Описание функции
- •2.5. Организация вызова функции
- •2.5. Передача параметров в функцию
- •Лекция 19 Многофайловые программы
- •1. Создание многофайловой программы. Создание и добавление головного файла в проект
- •3. Рекурсия
- •Лекция 20 Нахождение приближенного значения корня нелинейного уравнения
- •На отрезке [a;b] с заданной точностью eps
- •1.1. Метод дихотомии (половинного деления)
- •1.2. Метод хорд
- •1.3. Метод касательных (Ньютона)
- •Лекция 21 Нахождение приближенного значения определенного интеграла
- •1. Нахождение приближенного значения определенного интеграла с заданной точностью
- •Лекция 22 Объектно-ориентированное программирование
- •Полиморфизм – это свойство класса, позволяющее определить одно и то же по имени, но разное по смыслу действие. Основные этапы ооп:
- •Уточнённое имя принадлежит классу (т.Е. Компонентной) функции
- •Лекция 23 Объектно-ориентированное программирование
- •1. Конструкторы и деструкторы
- •Лекция 24 Объектно-ориентированное программирование
- •1. Компонентные данные и компонентные функции
- •1.1. Компонентные данные
- •1.2. Определение компонентных функций
- •Лекция 25 Объектно-ориентированное программирование
- •1. Свойства классов
- •1.1. Наследование классов
- •1.2. Полиморфизм
- •Библиографический список
1.1. Примеры программ обработки одномерных массивов
Пример 1. Дан одномерный массив. Найти минимальный и максимальный элементы массива, их порядковые номера и вывести их на печать.
Ход выполнения работы
Для нахождения минимального элемента применим стандартный ход. На первом шаге примем за минимальный нулевой элемент массива и номер этого элемента равен нулю. Затем, меняя индексы элементов массива, будем сравнивать найденное минимальное значение с текущим элементом. Если окажется, что текущий элемент меньше минимального значения, найденного на предыдущих шагах, то он становится минимальным и т.д. Для нахождения максимального элемента используют аналогичную схему. Следовательно, для того чтобы проверить каждый элемент массива, нужно использовать цикл с параметром. В алгоритме и программе переменные min и imin обозначают соответственно минимальное значение и его номер, а переменные max и imax – максимальное значение и его номер.
Написать программу, соответствующую алгоритму:
Алгоритм
Программа
объявление вещ: а[10], min,max; цел:i,imin,imax
для i=0 до 10-1 шаг 1
ввод а[i]
все для i
//задаются начальные максимальное и //минимальное значения элементов
//массива и их номера
min=a[0],imin=0
max=a[0], imax=0
для i=1 до 10-1 шаг 1
// в цикле изменяется номер i
// элемента массива
//поэтому переменные minиmax
//сравниваются с
// каждым элементом отдельно
если min>а[i]
min=a[i]
imin=i
все_ если
если max<а[i]
max=a[i]
imax=i
все_ если
все_для i
печать imin,min
печать imax,max
для i=0 до 10-1 шаг 1
вывод a[i]
все_дляi
#include "stdio.h"
#define N 10
int main ( )
{
float а[N], min, max;
inti,imin,imax;
// ввод массива с клавиатуры
for ( i=0; i<=N-1; i++ )
{
printf ("a[%i]= " ,i );
scanf("%f", &а[i]);
}
//находим максимальное и минимальное
//значение в массиве
min=a[0],imin=0;
max=a[0], imax=0;
for ( i=1; i<=N-1; i++ )
{
if(min>а[i])
{
min=a[i];
imin=i;
}
if(max<а[i])
{
max=a[i];
imax=i;
}
}
//вывод номеров минимального и
//максимального элементов массива и их
//значений на экран
printf("№min=%i, min=%f\n",imin,min);
printf("№max=%i,max=%f\n",imax,max);
// вывод массива на экран
for(i=0;i<=N-1;i++)
printf ("%.3f ", а[i]);
printf("\n");
return 1;
}
Создать проект и реализовать данную задачу в среде Visual C++ 6.0.
Пример 2. Сформировать массив по закону . При заданномk подсчитать среднее арифметическое элементов массива, больших k.
Ход выполнения работы
Средним арифметическим называется отношение суммы чисел к их количеству. Таким образом, для решения задачи нужно найти сумму и количество элементов, удовлетворяющих условию задачи. Так как нужно проверить каждый элемент массива, то необходимо использовать цикл с параметром, где параметр будет обозначать индекс элемента массива. В алгоритме и программе переменные sum и count будут обозначать сумму и количество определенных элементов соответственно.
Написать программу, соответствующую алгоритму:
Алгоритм
Программа
объявление вещ: а[15], sum,k; цел:i,count
ввод k
// формирование элементов массива
для i=0 до 15-1 шаг 1
все для i
//сначала сумма элементов и их
// количество равны нулю
sum=0,count=0
для i=0 до 15-1 шаг 1
// в цикле изменяется номер iэлемента
// массива
// каждый элемент сравнивается со
//значением k
// нужный элемент добавляется к сумме
если а[i]>k
sum=sum+a[i]
count++
все_ если
все_для i
// находим среднее арифметическое
sum=sum/count
// печатаем полученное значение
печать sum
// вывод массива на экран
для i=0 до 15-1 шаг 1
вывод a[i]
все_для i
#include "stdio.h"
#include "math.h"
#define N 15
int main ( )
{
float а[N], sum, k;
int i, count;
// ввод k
printf ("k=" );
scanf("%f", &k);
// ввод массива с клавиатуры
for ( i=0; i<=N-1; i++ )
{
a[i]=sqrt(i)+sin(i);
}
//сначала сумма элементов и их //количество равны нулю
sum=0,count=0;
//вычисление суммы и количества
//элементов
for ( i=0; i<=N-1; i++ )
{
if(а[i]>k)
{
sum=sum+a[i];
count++;
}
}
// находим среднее арифметическое
sum=sum/count;
// печатаем полученное значение
printf("sred_arif=%f\n",sum);
// вывод массива на экран
for(i=0;i<=N-1;i++)
printf ("%.3f ", а[i]);
printf("\n");
return 1;
}
Создать проект и реализовать данную задачу в среде Visual C++ 6.0.
Пример 3. Дан одномерный массив. Вычислить произведение нечетных элементов массива, расположенных на четных позициях.
Ход выполнения работы
Первоначально значение произведения равно 1 (при умножении на 1 значение произведения не меняется). Затем организуется цикл для проверки каждого элемента на соответствие указанному в задаче условию. Если текущий элемент удовлетворяет условию, то с его помощью изменяется искомое произведение.
Написать программу, соответствующую алгоритму:
Алгоритм
Программа
объявление цел: а[14], цел: i,p
// ввод массива aс клавиатуры
для i=0 до 14-1 шаг 1
ввод а[i]
все_для i
// вычисление произведения
p=1
для i=0 до 14-1 шаг 1
если a[i]%2=1 и i%2=0
p=p*a[i]
все_если
все_для i
// печатаем полученное значение
печать p
// вывод массива aна экран
для i=0 до 4-1 шаг 1
вывод a[i]
все_для i
#include "stdio.h"
#define N 14
int main ( )
{
int а[N]; int i, p=1;
// ввод массива a с клавиатуры
for ( i=0; i<=N-1; i++ )
{
printf ("a[%i]= " ,i );
scanf ("%i", &а[i]);
}
// вычисление произведения
for(i=0;i<=N-1;i++ )
{
if(а[i]%2==1 &&i%2==0)
{
p=p*a[i];
}
}
// печатаем полученное значение
printf("p=%i\n", p);
// вывод массива a на экран
for (i=0; i<=N-1; i++)
printf ("%i ", а[i]);
printf("\n");
return 1;}
Создать проект и реализовать данную задачу в среде Visual C++ 6.0.
Пример 4. Даны одномерные массивы x[5] и y[5]. Сформировать новый массив z[5] по правилу .
Ход выполнения работы
Организуется цикл для проверки индекса каждого элемента на соответствие указанному в задаче условию. Если индекс – четное число, то выполняется одно действие, иначе элементом массива z становится наименьший из текущих элементов массивов x и y.
Написать программу, соответствующую алгоритму.
Алгоритм
Программа
объявление вещ: x[5],y[5],z[5], цел:i
// ввод массива xс клавиатуры
для i=0 до 5-1 шаг 1
ввод x[i]
все_для i
// ввод массива yс клавиатуры
для i=0 до 5-1 шаг 1
ввод y[i]
все_для i
// формирование массива z
для i=0 до 5-1 шаг 1
если i%2= =1 // i – нечетное
z[i]=sin(x[i])
иначе // т.е. i– четное
если x[i]<y[i] // находится
// минимальное из
// xiиyi
z[i]=x[i]
иначе
z[i]=y[i]
все_если
все_если
все_для i
// вывод массива xна экран
для i=0 до 5-1 шаг 1
вывод x[i]
все_для i
// вывод массива yна экран
для i=0 до 5-1 шаг 1
вывод y[i]
все_для i
// вывод массива zна экран
для i=0 до 5-1 шаг 1
вывод z[i]
все_для i
#include "stdio.h"
#include "math.h"
#define N 5
int main ( )
{
float x[N], y[N], z[N];
inti;
// ввод массива xс клавиатуры
for ( i=0; i<=N-1; i++ )
{
printf ("x[%i]= " ,i );
scanf("%f", &x[i]);
}
// ввод массива yс клавиатуры
for ( i=0; i<=N-1; i++ )
{
printf ("y[%i]= " ,i );
scanf("%f", &y[i]);
}
// формирование массива z
for ( i=0; i<=N-1; i++ )
{
if(i%2= =1)
z[i]=sin(x[i]);
else
if(x[i]<y[i])
z[i]=x[i];
else
z[i]=y[i];
}
// вывод массива xна экран
for (i=0; i<=N-1; i++)
printf ("%.3f ", x[i]);
printf("\n");
// вывод массива yна экран
for (i=0; i<=N-1; i++)
printf ("%.3f ", y[i]);
printf("\n");
// вывод массива zна экран
for (i=0; i<=N-1; i++)
printf ("%.3f ", z[i]);
printf("\n");
return 1;
}
Создать проект и реализовать данную задачу в среде Visual C++ 6.0.
Пример 5. Дан одномерный массив a[15]. Сформировать новый массив b из элементов массива а, меньших заданного k.
Ход выполнения работы
При решении данной задачи нужно знать, сколько элементов должен содержать массив b. Так как массив а вводится с клавиатуры, то значения его элементов заранее неизвестно. В общем случае все элементы массива могут быть меньше заданного k. Предполагаем, что массив b будет содержать столько же элементов, что и массив а. Однако при формировании нового массива не все элемента старого могут удовлетворять условию задачи. По этой причине индексация элементов этих массивов может различаться и, следовательно, для этой цели объявляют разные переменные.
Написать программу, соответствующую алгоритму:
Алгоритм
Программа
объявление вещ: a[15],b[15],k, цел:i,j
ввод k
для i=0 до 15-1 шаг 1
ввод a[i]
все_для i
j=0
для i=0 до 15-1 шаг 1
если a[i]<k
b[j]=a[i]
j++
все_если
все_для i
для i=0 до 15-1 шаг 1
вывод a[i]
все_для i
для i=0 доj-1 шаг 1
вывод b[i]
все_для i
#include "stdio.h"
#include "math.h"
#define N 15
int main ( )
{
float a[N], b[N], k;
int i,j;
printf ("k=" );
scanf("%f", &k);
// ввод массива aс клавиатуры
for ( i=0; i<=N-1; i++ )
{
printf ("a[%i]= " ,i );
scanf("%f", &a[i]);
}
j=0;
// формирование массива b
//переменная jпосле завершения
//формирования нового массива будет
//определять количество элементов этого
//массива
for(i=0;i<=N-1;i++ )
{
if(a[i]<k)
{
b[j]=a[i];
j++;
}
}
// вывод массива a на экран
for (i=0; i<=N-1; i++)
printf ("%.3f ", a[i]);
printf("\n");
// вывод массива b на экран
for (i=0; i<=j-1; i++)
printf ("%.3f ", b[i]);
printf("\n");
return 1;
}
Создать проект и реализовать данную задачу в среде Visual C++ 6.0.
Пример 6. Дан одномерный массив t[7]. Осуществить циклический сдвиг массива на k элементов влево.
Ход выполнения работы
Под циклическим сдвигом на k элементов понимается перемещение элементов вправо или влево. Высвободившиеся элементы помещаются в конец массива (в данном случае) в порядке их следования. Начальное состояние массива:
1 |
-5 |
9 |
0 |
8 |
41 |
33 |
Если будет произведен циклический сдвиг на 3 элемента влево, то массив будет изменен следующим образом:
0 |
8 |
41 |
33 |
1 |
-5 |
9 |
Написать программу, соответствующую алгоритму:
Алгоритм |
Программа |
объявление вещ: t[7],x, цел:i,j,k,p ввод k для i=0 до 7-1 шаг 1 ввод t[i] все_для i //цикл по jпоказывает сколько раз должен // произойти циклический сдвиг на один //элемент для j=1 доkшаг 1 // запоминаем первый элемент массива p=t[0] //сдвигаем элементы массива на одну // позицию для i=0 доN-2 шаг 1 x=t[i] t[i]=t[i+1] t[i+1]=x все_для i //на место последнего элемента // записываем первый t[N-1]=p все_для j для i=0 до 7-1 шаг 1 вывод t[i] все_для i
|
#include "stdio.h" #include "math.h" #define N 7 int main ( ) { float t[N], x; int i,j, k,p; printf ("k=" ); scanf("%i", &k); // ввод массива tс клавиатуры for ( i=0; i<=N-1; i++ ) { printf ("t[%i]= " ,i ); scanf ("%f", &t[i]); } for ( j=1; j<=k; j++ ) { //запоминаем первый элемент массива p=t[0]; //сдвигаем элементы массива на одну //позицию for ( i=0; i<=N-2; i++ ) { x=t[i]; t[i]=t[i+1]; t[i+1]=x; } //на место последнего элемента //записываем первый t[N-1]=p; } // вывод массива t на экран for (i=0; i<=N-1; i++) printf ("%.3f ", t[i]); printf ("\n"); return 1; } |
Примечание. В алгоритме два соседних элемента массива меняются местами при помощи операторов:
x=t[i-1]
t[i-1]=t[i]
t[i]=x
Создать проект и реализовать данную задачу в среде Visual C++ 6.0.