- •Вопрос 1
- •Вопрос 1
- •Доступ к элементам структур (полям данных)
- •Вопрос 1 Указатели на структуры
- •Операции над указателями на структуры
- •Вопрос 1
- •Доступ к элементам объединения (полям данных)
- •Доступ к элементам структур с битовыми полями
- •Вопрос 1
- •Вопрос 1
- •Билет №21
- •Вопрос 1
- •Билет №22
- •1. Задачи перестановок в массивах
- •Билет №23
- •Вопрос 1
- •Поиска максимального элемента в массиве и его номера
- •Сортировка вставкой Удаление элемента из массива
- •Билет №24
- •1. Динамическая память – это память, выделяемая программе для ее работы за вычетом сегмента данных, стека, в котором размещаются локальные переменные подпрограмм и собственно тела программы.
- •Билет №25
- •Объявление одномерных динамических массивов
- •Выделение памяти под одномерный динамический массив
- •Освобождение памяти, выделенной под одномерный динамический массив
- •Билет №26
- •Билет №27
- •1.Приемы чтения и записи динамических массивов
- •Билет №28
- •1.Динамические структуры данных – это структуры данных, память под которые выделяется и освобождается по мере необходимости.
- •Доступ к данным в динамических структурах
- •Работа с памятью при использовании динамических структур
Билет №22
1. Задачи перестановок в массивах
Решение таких задач сводится к выбору алгоритма просмотра массива с целью выполнить требуемые перестановки.
Пример 4. Дан одномерный целочисленный массив, заданный случайными числами на промежутке [-10; 10). Выполните циклический сдвиг элементов с нулевой позиции вправо на одну позицию. То есть должна быть реализована схема перестановок: x[0] -> x[1], x[1] -> x[2], ... , x[k-1] -> x[0].
Одним из алгоритмов такого циклического сдвига является следующая последовательность действий. Поместим в буфер последний элемент массива (buf=x[k-1] ). Выполним смещение остальных элементов вправо на одну позицию ( x[i]=x[i-1] ). При этом важен порядок смещения: на освободившееся место последнего элемента перемещается предпоследний, на место предпоследнего – предшествующий ему и т.д. В результате таких перемещений освобождается место нулевого элемента, на которое перемещается элемент из буфера. В данной задаче целесообразно выполнить вывод массива дважды: до и после циклического сдвига.
2. Задача із використанням перевантаження функцій
/*Перегруженные функции имеют одинаковые имена и типы возвращаемых значений, но разные типы параметров*/#include "stdafx.h"
#include <iostream>using namespace std;
#include<stdio.h>float average(int first_number, int second_number, int third_number );float average(float first_number, float second_number,
float third_number);int _tmain(int argc, _TCHAR* argv[]){
setlocale(LC_ALL,"Russian");
int A = 5, B = 3, C = 10;
float A1 = 5.1, B1 = 3.4, C1 = 10.5;
printf("Среднее значение 3-х целых чисел = %f\n",
average(A,B,C)/3.0); printf("Среднее значение 3-х вещественных чисел = %f\n", average(A1,B1,C1)/3.0);
system("pause"); return 0;}
/*функция для вычисления среднего значения 3-х целых чисел*/
float average(int first_number, int second_number,
int third_number ) {
return ((first_number + second_number + third_number));}
/*функция для вычисления среднего значения 3-х веществен-ных чисел*/
float average(float first_number, float second_number,
float third_number) {
return ((first_number + second_number + third_number));
}
Билет №23
Вопрос 1
Алгоритм ввода массива с использованием цикла с предусловием
Алгоритм ввода массива с использованием безусловного цикла
Алгоритм вычисления суммы элементов массива
Вычисление произведения элементов массива
Поиска максимального элемента в массиве и его номера
Сортировка массива пузырьковым методом
Сортировка массива выбором наибольшего элемента
Сортировка вставкой Удаление элемента из массива
2. Задачі пошуку у тексті на основі алгоритмів прямого пошуку.
//Описание функции прямого поиска подстроки в строке
int DirectSearch(char *string, char *substring){
int sl, ssl;
int res = -1;
sl = strlen(string);
ssl = strlen(substring);
if ( sl == 0 )
cout << "Неверно задана строка\n";
else if ( ssl == 0 )
cout << "Неверно задана подстрока\n";
else
for (int i = 0; i < sl - ssl + 1; i++)
for (int j = 0; j < ssl; j++)
if ( substring[j] != string[i+j] )
break;
else if ( j == ssl - 1 ){
res = i;
break;
}
return res;
}