- •6) Операция преобразования типа. Операция sizeof. Пример.
- •12) Исходные файлы и объявление переменных.
- •13) Время жизни и область видимости программных объектов. Инициализация глобальных и локальных переменных.
- •Комментарии в языке Си
- •Оператор с предусловием: (while) Цикл с постусловием: (do…while)
- •Пример кода Напишем программу, которая будет считать сумму всех чисел от 1 до 10.
- •Цикл do while
- •20) Синтаксис цикла с предусловием. Опишите работу цикла. Пример.
- •21) Синтаксис цикла с постусловием. Опишите работу цикла. Пример.
- •22) Синтаксис цикла с параметром. Опишите работу цикла. Пример.
- •23) Опишите работу оператора continue. Опишите работу оператора goto. Пример.
- •25) Вызов функции с переменным числом параметров. Пример.
- •26) Передача параметров функции main.
26) Передача параметров функции main.
27) Рекурсивное определение функции в С++.
В языках Си/Си++ допускается рекурсивное определение функций. Проиллюстрируем определение рекурсивной функции на классическом примере вычисления факториала целого положительного числа.
long Factor(int n)
{ if (n<0) return 0;
if (n==0) return 1;
return n*Factor(n-1);
}
В случае если при вызове функции будет задан отрицательный аргумент, она вернет нулевое значение — признак неверного обращения.
28) Алгоритмы программирования функций в С++. Пример.
29) Определение массива в С++. Формат описания массива. Пример.
Массив — это структура однотипных элементов, занимающих непрерывную область памяти. С массивом связаны следующие его свойства: имя, тип, размерность, размер.
Формат описания массива следующий:
тип_элементов имя [константное_выражение]
int A[10];
объявлен массив с именем А, содержащий 10 элементов целого типа. Элементы массива обозначаются индексированными именами. Нижнее значение индекса равно 0:
А[0], А[1], А[2], А[3], А[4], А[5], А[б], А[7], А[8], А[9]
30) Одномерные массивы в С++. Многомерные массивы в С++. Пример.
Двумерный массив трактуется как одномерный массив, элементами которого является массив с указанным в описании типом элементов. Например, оператор
float R[5] [10] ;
//Ввод и вывод массива
#include <iostream.h>
#include <conio.h>
void main()
{ int i, A[5];
clrscr ();
for(i=0; i<5; i++)
{ cout<<"A["<<i<<"]="; cin>>A[i];}
for(i=0; i<5; i++)
cout<<"A [ "<<i<<" ] ="<<A [i] <<"
}
Пример 5. Заполнение матрицы случайными числами в диапазоне от 0 до 99 и поиск в ней максимального значения.
#include <iostream.h>
#include <iomanip.h>
#include <conio.h>
#include <stdlib.h>
#define n 5
void main()
{ int i,j,ImaxA, JmaxA, A[n][n];
clrscr ();
randomize(); //Установка датчика случайных чисел
for(i=0; i<n; i++)
{ for(j=0; j<n; j++)
{ A[i][j]=rand()%100;
cout<<setw(6)<<A[i] [j];
}
cout<<endl;
}
ImaxA=JmaxA=0;
for(i=0; i<n; i++)
{ for(j=0; j<n; j++)
if (A[i][j]>A[ImaxA][JmaxA])
{ ImaxA=i; JmaxA=j; }
}
cout<<"Максимальное_значение: ["<<ImaxA<<"] ["
<<JmaxA<<"]=" <<A[ImaxA] [JmaxA];
}
В результате тестирования этой программы получен следующий результат:
46 23 57 35 18
8 48 68 4 70
56 98 16 71 40
70 84 66 67 11
20 44 37 57 38
Максимальное значение: А[2][1]=98
31) Описание строки в С++. Функции для работы со строками. Пример.
Строка описывается как символьный массив. Например:
char STR[20];
К стандартным функциям библиотеки cstring относятся:
strlen() — подсчитывает длину строки (количество символов без учета \0);
strcat() — объединяет строки;
strcpy() — копирует символы одной строки в другую;
strcmp() — сравнивает между собой две строки .
strlen() (от слова length — длина)
#include <iostream>
using namespace std;
int main()
{
setlocale(LC_ALL, "rus");
char ourStr[128] = ""; // для сохранения строки
cout << "Введите текст латиницей (не больше 128 символов):\n";
cin.getline(ourStr, 128);
int amountOfSymbol = 0; // счетчик символов
while (ourStr[amountOfSymbol] != '\0')
{
amountOfSymbol++;
}
cout
<< "Строка \"" << ourStr <<
"\" состоит из "
<< amountOfSymbol << " символов!\n\n";
return 0;
}
strcat() (от слова concatenation — соединение)
#include <iostream>
using namespace std;
int main()
{
setlocale(LC_ALL, "rus");
char
someText1[64] = "Сайт purecodecpp.com!";
char someText2[] = "Учите С++ c нами!";
cout << "Строка someText1- \"" << someText1 << "\" \n";
cout << "Строка someText2- \"" << someText2 << "\" \n\n";
int count1 = 0; // для индекса ячейки где хранится '\0' первой строки
while (someText1[count1] != 0)
{
count1++; // ищем конец первой строки
}
int count2 = 0; // для прохода по символам второй строки начиная с 0-й ячейки
while (someText2[count2] != 0)
{ // дописываем вконец первой строки символы второй строки
someText1[count1] = someText2[count2];
count1++;
count2++;
}
cout << "Строка someText1 после объединения с someText2 -\n\"" << someText1 << "\" \n\n";
return 0;
}
strcpy() (от слова copy — копирование)
#include <iostream>
using namespace std;
int main()
{
setlocale(LC_ALL, "rus");
char someText1[64] = "Сaйт purecodecpp.com!";
char someText2[] = "Основы С++";
cout << "Строка someText1 - \"" << someText1 << "\" \n";
cout << "Строка someText2 - \"" << someText2 << "\" \n\n";
int count = 0;
while (true) // запускаем бесконечный цикл
{
someText1[count] = someText2[count]; // копируем посимвольно
if (someText2[count] == '\0') // если нашли \0 у второй строки
{
break; // прерываем цикл
}
count++;
}
cout << "Строка someText1 после копирования someText2 -\n\"" << someText1 << "\" \n\n";
return 0;
}
strcmp() (от слова compare — сравнение)
#include <iostream>
using namespace std;
int main()
{
setlocale(LC_ALL, "rus");
char someText1[] = "Сaйт purecodecpp.com!";
char someText2[] = "Сaйт purecodecpp.com/";
cout << "Строка someText1 - \"" << someText1 << "\" \n";
cout << "Строка someText2 - \"" << someText2 << "\" \n\n";
int compare = 0; // для сравнения длины строк
int count = 0;
while (true)
{
if (strlen(someText1) < strlen(someText2))
{
cout << "Строки НЕ равны: " << --compare << endl;
break;
}
else if (strlen(someText1) > strlen(someText2))
{
cout << "Строки НЕ равны: " << ++compare << endl;
break;
}
else // если по количеству символов строки равны
{
if (someText1[count] == someText2[count]) // сравниваем посимвольно включая \0
{
count++;
if (someText1[count] == '\0' && someText2[count] == '\0')
{
cout << "Строки равны: " << compare << endl;
break;
}
}
else // если все же где-то встретится отличный символ
{
cout << "Строки НЕ равны: " << --compare << endl;
break;
}
}
}
return 0;
}
32) Строка как параметр функции в С++. Пример.
33) Алгоритм последовательного поиска в С++.
34) Алгоритм бинарного поиска в С++.
35) М-блочный поиск в С++.
36) Алгоритмы методов вычисления адреса в С++.
37) Выбор в линейных списках в С++.
38) Пузырьковая сортировка.
39) Сортировка вставкой.
40) Сортировка посредством выбора.
41) Алгоритм слияние списков в С++.
42) Сортировка списков путем слияния.
43) Быстрая и распределяющая сортировки.
44) Методы доступа к элементам массивов.
45) Динамическое размещение массивов.
46) Определение указателя в С++. Описание указателей в С++. Пример.
47) Операции над указателями в С++. Пример.
48) Использование указателей в массивах. Пример
49) Используются указателей для функций в С++.
50) Указатели на многомерные массивы в С++.
51) Массивы указателей в С++.
52) Понятие записи в С++. Формат описания структуры в С++. Пример.
53) Структурное программирование в С++.
54) Определение объединения в С++. Формат описания объединения. Пример.
55) Перечисляемые типы данных в С++.
56) Структурные алгоритмы в С++.
57) Алгоритмы программирования структур и объединений в С++.
58) Понятие файла в С++. Функции работы с файлами на диске.
59) Алгоритмы работы с файлами в С++. Пример.
60) Динамическое распределение памяти в С++.
