Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответы на Прикладное программирование.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
472.88 Кб
Скачать

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) Динамическое распределение памяти в С++.