- •Т.Э. Шульга программирование.
- •Глава 1. Основы программирования на языке высокого уровня 6
- •Глава 2. Динамические структуры данных 40
- •Глава 3. Основы объектно-ориентированного программирования 53
- •Введение
- •Глава 1. Основы программирования на языке высокого уровня
- •Void main()
- •Задания
- •1.2. Переменные. Основные типы данных
- •Ввод – вывод значений переменных
- •Форматирование данных при обменах с потоками ввода-вывода
- •Void main()
- •Void main()
- •Преобразование типов
- •Задание 1. Описание переменных и преобразование типов
- •Задание 2. Форматирование вывода
- •1.3. Основные операции
- •Void main ()
- •Задания
- •1.4. Конструкции выбора
- •Void main()
- •Void main()
- •Void main()
- •Задание 1. Обработка введенного символа
- •Задание 2. Вычисление значения функции
- •Задание 3. Применение разветвляющихся алгоритмов при решении простейших задач
- •Задание 4. Mультиветвление
- •1.5. Конструкции цикла и передачи управления
- •Void main()
- •Задание 1. Детерминированные циклы. Простейшие задачи
- •Void main()
- •Задание 2. Итерационные циклы. Простейшие задачи
- •Void main()
- •Int last;
- •Задание 3. Одномерные массивы
- •Void main ()
- •Int a[100],n,max,imax;
- •Задание 4. Вложенные циклы
- •Void main ()
- •Задание 5. Двумерные массивы
- •Void main ()
- •Задание 6. Посимвольная обработка строк
- •Void main()
- •Задание 7. Сортировка массива
- •Void main ()
- •1.6.Функции
- •Int oct (int a)// определение функции
- •Void main()
- •Void main()
- •Int strcmp(const char *str1, const char* str2);
- •Int fclose (file * stream);
- •Int feof(file *stream);
- •Int fseek ( file* stream, long offset, int origin);
- •Задание 1. Определение и вызов функций
- •Задание 2. Рекурсивные функции
- •Задание 3. Использование библиотечных функций string.H
- •Void main()
- •Задание 4. Использование библиотечных функций stdio.H
- •Void main ()
- •Глава 2. Динамические структуры данных
- •Int year;
- •Int children;
- •Задание 1. Структуры
- •Int year;
- •Int month;
- •Int visokos(int year)
- •Vivod (date d)
- •Int day_number(date d)
- •Vivod(mas[I]);
- •Vivod (min(mas,n));
- •Задание 2. Динамический список
- •Int mark;
- •Void vvod ()
- •Void vivod()
- •If (begin)
- •Void vivod_f()
- •If (begin)
- •Void add()
- •Void udol () //
- •If (begin)
- •Void del()
- •Void main ()
- •Задание 3. Использование стеков и очередей
- •Глава 3. Основы объектно-ориентированного программирования
- •Void empty();
- •If (len) delete []s;
- •Void cStr::empty()
- •Задание 1 . Описание простейшего класса
- •Задание 2 . Класс string
- •Void main()
- •Void main ()
- •Задание 3. Класс fstream
- •Задание 4. Наследование
- •Список литературы
Void main()
{
const int n=255;
char stroka [n];
cin.getline(stroka,n);//считали строку
int len = 0; // будем использовать переменную len
//как индекс массива
while (stroka[len]) len++; // условие окончание цикла
//stroka[len]= ‘\0’
cout<<len;
}
Многомерные массивы описываются как массивы массивов, например,
int a2[3][2] // массив из 3 массивов, содержащих по 2 целых элемента.
Для обращения к элементу двумерного массива используется два индекса, например, a2[i][j]. Рассмотрим, как используется конструкция вложенных циклов для работы с двумерными массивами и как возможен выход из вложенных циклов.
Для принудительного выхода из вложенных циклов используют оператор безусловного перехода goto, который имеет формат:
goto идентификатор;
где идентификатор – имя метки оператора, расположенного в той же функции, где используется оператор безусловного перехода. Метка – это обычный идентификатор, после которого ставится двоеточие и следует некоторый оператор. Использование оператора goto принято считать плохим стилем, однако в некоторых случаях его использование может быть действительно обосновано. Например, при решении задачи поиска в матрице размерности (n,m) поиска в матрице хотя бы одного элемента с заданным значением x.
for (int i=0;i<n; i++)
for (int j=0; j<m;j++)
if (a[i][j]==x) goto success;
…
…
success:
cout << “Элемент найден. Строка i= ”<<i;
cout<< “Столбец j=” <<j;
Также в циклах применяется оператор continue. С его помощь завершается текущая итерация и начинается проверка условий дальнейшего продолжения цикла. Типичный пример использования continue - подсчитать среднее значение только положительных элементов одномерного массива.
for (s=0,k=0,i=0;i<n;i++)
{
if (x[i]<=0) continue;
k++;
s+=x[i];
}
if (k>0) s=s/k;
Каждому студенту рекомендуется выполнить одно из упражнений 1-12 каждого задания 1-6 и все упражнения задания 7.
Задание 1. Детерминированные циклы. Простейшие задачи
Пример. Даны натуральные числа N, x. Вычислить .
# include <iostream.h>
Void main()
{
int x,N,S ed=1, fact=1, stepX=1;
cout << “Enter x,N ”;
cin >>x>> N;
for (int k=1; k<=N; k++)
{
ed=-ed; // меняем знак единицы при каждой итерации
stepX=*x; // вычисляем
fact*=k+1; // вычисляем (k+1)!
S+=ed*stepX/fact;
}
cout<< “S= ”<< S;
}
-
Дано натуральное число N. Вычислить * .
-
Дано натуральное число N. Вычислить, где
-
Даны натуральные числа N и M (N>M). Вычислить.
-
Дано натуральное число N. Вычислить.
-
Дано натуральное число N и вещественное число x. Вычислить, . Функцию pow() не использовать.
-
Дано натуральное число N и вещественное число x. Вычислить, . Функцию pow() не использовать.
-
Дано натуральное число N и вещественное число x. Вычислить, . Функцию pow() не использовать.
-
Дано натуральное число N>2. Вычислить.
-
Дано натуральное число N и вещественное число x. Вычислить.
-
Дано натуральное число N. Вычислить, где
-
Дано натуральное число N. Вычислить.
-
Дано натуральное число N. Вычислить.