Главная страница
Навигация по странице:

  • Лабораторная работа №5 Структурированный тип данных - массив Цель работы

  • Пример 1

  • Задачи для индивидуального решения (часть 1)

  • Задачи для индивидуального решения (часть 2)

  • Лабораторная работа №6 Методы сортировки массива Цель работы

  • Сортировка методом выбора

  • !!! МЕТОДИЧКА_Срр_Часть1. Учебнометодическое пособие предназначено для студентов, изучающих дисциплину Программирование


    Скачать 2.01 Mb.
    НазваниеУчебнометодическое пособие предназначено для студентов, изучающих дисциплину Программирование
    Анкорcxfsd
    Дата04.03.2022
    Размер2.01 Mb.
    Формат файлаpdf
    Имя файла!!! МЕТОДИЧКА_Срр_Часть1.pdf
    ТипУчебно-методическое пособие
    #382624
    страница4 из 6
    1   2   3   4   5   6
    Задачи для индивидуального решения:
    1. Написать программу, которая выводит таблицу квадратов первых десяти целых положительных чисел.
    2. Вычислить S=1+1/2+1/3+1/4+....+1/10.
    3. В промежутке 20…32 найти все числа кратные числу S, введенному с клавиатуры.
    4. Среди введенных с клавиатуры 6 чисел найти максимальное и минимальное из введенных чисел.
    5. Дана последовательность 8 чисел. Определить сколько раз в этой последовательности изменяется знак числа.

    Вариант 1 2.
    Среди введенных с клавиатуры 6 чисел подсчитать количество положительных и количество отрицательных чисел.
    3.
    Дано число А. Написать программу получения в порядке убывания всех делителей данного числа.
    Вариант 2 1.
    Вычислить S=1+(1*2)+ (2*3)+ (3*4)+....+ (9*10).
    2.
    Дана последовательность чисел, ввод которой заканчивается вводом нуля.
    Определить сколько раз в этой последовательности изменяется знак числа.
    Вариант 3 1.
    Среди введенных с клавиатуры 10 чисел найти количество четных чисел и их среднее арифметическое.
    2.
    Дано целое четырехзначное число n. Найти сумму цифр числа n.
    Вариант 4 1.
    Вычислить S=1+1/3+ 2/5+ 3/7+....+ 6/13.
    2.
    Дана последовательность чисел. Определить, со скольких отрицательных подряд идущих чисел она начинается.
    Вариант 5 1.
    Среди введенных с клавиатуры 8 чисел подсчитать количество положительных и количество отрицательных чисел.
    2.
    Используя алгоритм Евклида, найти наименьшее общее кратное m и n.
    Вариант 6 1.
    Вычислить S=1+1/(1*2)+ 2/(1*2*3)+ 3/4!+....+ 5/6!.
    2.
    Составить программу, которая распечатывает на экране таблицу умножения.
    Вариант 7 1.
    Дано целое натуральное n. Определить, сколько цифр в числе n?
    2.
    Среди введенных с клавиатуры чисел найти количество четных чисел и их среднее арифметическое. Ввод чисел заканчивается вводом нуля.
    Вариант 8 1.
    Дано натуральное n. Написать программу вычисления значений
    S=1+1/(1*2)+1/(1*2*3)+....+1/(n!)
    2.
    Вывести на экран числа, кратные К из промежутка [А,В]. Числа А, В, К задает пользователь.
    Вариант 9 1.
    Найти наибольшее и наименьшее значение функции у=x
    3
    на интервале x1 до x2, перебирая значения функции с шагом H=0.01.
    2.
    Дано целое число натуральное n. Найти сумму цифр числа n.
    Вариант 10 1.
    Составить программу, проверяющую, является ли последовательность из
    10 целых чисел, вводимых с клавиатуры, монотонно возрастающей.
    2.
    Напечатать все двузначные числа, в которых нет одинаковых цифр.

    Лабораторная работа №5
    Структурированный тип данных - массив
    Цель работы: получить представление о структурированном типе данных "массив", научиться инициализировать массивы, распечатывать содержимое массива и решать задачи с применением массивов.
    Общие сведения
    Язык Си имеет базовые или встроенные типы данных, которые позволяют строить другие типы и структуры данных: char (символьные), int (целые), float (с плавающей точкой), double (с плавающей точкой двойной длины), void (пустой, не имеющий значения). На основе этих пяти типов строятся дальнейшие типы данных, олин из которых
    – массив.
    Массив – это структурированный тип данных, который используется для описания упорядоченной совокупности фиксированного числа элементов одного типа, имеющих общее имя. Для обозначения элементов массива используются имя переменной-массива и индекс.
    Массив – это одна из известных и наиболее простых структур данных. Массив определяется именем массива и порядковым номером каждого своего элемента. Обычно порядковый номер элемента называют индексом. Индекс (т.е. порядковый номер элемента) в языке Си всегда целое число.
    Перед использованием массива в использующей его программе он (массив) должен быть обязательно объявлен. При этом указывается имя массива и его размерность, как максимальное количество элементов в массиве. Основная форма объявления массива следующая: тип <имя массива> [размер1][размер2]...[размер N];
    Чаще всего используются одномерные массивы. Их форма описания такова: тип <имя массива> [размер1];
    Слово «тип» в описании – это один из базовых (основных) типов элементов массива.
    Размер – это, как выше было сказано, количество элементов одномерного массива.
    Все дело в том, что в двухмерном массиве размер определяется с помощью умножения.
    При описании двумерного массива его объявление будет таково: тип <имя массива> [размер1] [размер2];
    Это будет массив массива, т.е. массив размера [размер2], элементами которого являются одномерные массивы: <имя массива> [размер1]. Размер массива в языке
    Си задается константой или константным выражением. Нельзя задавать массив переменного размера. Для этого существует отдельный механизм, называемый динамическим выделением памяти (данный механизм будет изучаться позже).
    В языке Си нумерация элементов начинается с нуля. Т.е. минимальный неотрицательный индекс элемента есть число – ноль. Таким образом, всегда первый элемент массива – это элемент с нулевым номером. Предположим, что объявлен массив int a[100];
    Это означает, что массив содержит следующие элементы: a[0], a[1], a[2],..., и так далее, a[99]. Легко подсчитать, сколько байт памяти потребуется под одномерный массив:
    Количество байт = <размер базового типа> * <количество элементов в массиве>
    Следует знать, что в языке Си под массив всегда выделяется непрерывное место в оперативной памяти. Выход массива за свои определенные командой пределы в Си не проверяется. Это следует помнить. То есть, например, если массив имеет 100 элементов и описан как a[100], то при обращении к элементу a[200] язык Си не дает программе средств для контроля того факта, что имеется выхода за пределы памяти, отведенной под массив.

    Программа на языке Си не выдаст сообщение об ошибке. Такие возможности разработчиками не предусмотрены. Возможно потому, что в те времена особенно дефицитным ресурсом была память и ее экономили на сам транслятор и потому не уделяли такого внимания анализу ошибок программиста. Отметим, что можно определять массивы любого ранее рассмотренного типа: unsighed arr[40], long double al[1000], char ch[80].
    Пример 1: Вычисление суммы квадратов элементов массива.
    Этапы решения задачи:
    1. Алгоритм решения данной задачи заключается в том, чтобы вначале ввести содержимое массива с клавиатуры, а затем, используя цикл, осуществить расчет суммы элементов массива.
    2. На рисунке 5.1 представлена схема алгоритма.
    Рис. 5.1. Блок-схема алгоритма решения задачи
    Реализация блок-схемы на языке С++:
    #include using namespace std;
    #include int main()
    { const int N = 10; int i; double V[N], Sum = 0.0;
    //ввод массива cout << "Vvedite elementy massiva:\n"; for (i = 0; i < N; i++)
    { cout << "V[" << i << "] -> "; cin >> V[i];
    }
    //подсчет суммы квадратов элементов массива for (i = 0; i < N; i++) Sum = Sum + V[i]*V[i];
    cout << "Summa kvadratov elementov rjada ravna " << Sum <<
    "\n";
    _getch(); return 0;
    }
    Реализовав данную программу в интегрированной среде программирования, получим результирующее окно, представленное на рисунке 5.2.
    Рис. 5.2. Окно выполнения задачи
    Пример 2: Дан двумерный массив. В каждой строке все его элементы, не равные нулю, переписать (сохраняя порядок) в начало строки, а нулевые элементы – в конец массива (при этом новый массив использовать запрещается).
    Этапы решения задачи:
    1. Суть одного из алгоритмов решения данной задачи состоит в том чтобы
    «просматривать» массив построчно и находить в каждой строке пару (0 – число), а затем менять их местами между собой и так до тех пор пока в строке таких пар не окажется.
    2. Напишем программу на псевдо-паскале: program example1; var
    V:array[1..100,1..100] of integer; m,n, i,j, c: integer; flag: boolean; begin
    <ввод размерности массива m*n>
    <заполнение ячеек массива> for i:=1 to m do repeat flag:= true; for j:=1 to n-1 do if (v[i,j]=0) and (v[i,j+1]<>0) then begin
    <поменять их местами> flag:= false; end; until flag;
    <Печать массива> readln; end.

    3. Составим схему алгоритма (рисунок 5.3).
    4. Детализируем блок «Упорядочиваем 1-ю строку» (рисунок 5.4).
    Рис. 5.3. Блок-схема алгоритма
    Рис. 5.4. Детализация блока решения задачи
    «Упорядочиваем 1-ю строку»
    Окончательный алгоритм представлен на рисунке 5.5.

    Рис. 5.5. Общая схема вычисления задачи
    Дальнейшая детализация не требуется. Переводим блок-схему на язык С++:
    #include using namespace std;
    #include int main()
    { int V[100][100]; int m,n,i,j,tmp; bool flag;
    cout<<"Vvedite koli4estvo strok:"; cin>>m; cout<<"Vvedite koli4estvo stolbcov:"; cin>>n; cout<<"\nIshodnyj massiv:\n"; for (i=0; i<=m-1; i++) for (j=0; j<=n-1; j++)
    { cout<<"V["<>V[i][j];
    } for (i=0; i<=m-1; i++)
    { tmp=0; do {flag=true; for (j=0;jV[i][j]=V[i][j+1];
    V[i][j+1]=tmp; flag=false;}
    } while (flag);
    } cout<<"Otsort massiv:\n"; for (i=0; i<=m-1; i++)
    { for (j=0; j<=n-1; j++) cout<<"["<_getch(); return 0;
    }
    Реализовав данную программу в интегрированной среде программирования, получим результирующее окно, представленное на рисунке 5.6.
    Рис. 5.6. Окно выполнения задачи
    Контрольные вопросы
    Каким образом задаются переменные типа одномерный и двумерный массив?
    Как модно выполнить доступ к отдельным элементам одномерного и двумерного массива?
    Каким образом выводятся элементы массива на экран?
    Как вывести на экран двумерный массив в виде матрицы.

    Сколько чисел можно записать в шестимерный массив: int X[1][1][1][1][1][1]
    Задачи для индивидуального решения (часть 1):
    1. Подсчитать число и сумму положительных и число и произведение отрицательных элементов массива.
    2. Дан одномерный массив, содержащий информацию о росте учеников класса.
    Написать программу, которая определяет количество учеников в классе, чей рост превышает средний.
    3. В заданном массиве определить число соседств двух чисел одного знака, причем абсолютная величина первого из них должна быть больше второго.
    4. Написать программу, которая проверяет, есть ли во введенном с клавиатуры одномерном массиве элементы с одинаковым значением и вывести их на экран.
    5. Задать в массив значения функции
    f(x) = kx + b, при x= 1,2, …100 и вывести его на экран.
    Вариант 1 1.
    Задать в массив значения функции f(x) = 1/x + b, при x= 1,2, …50 и вывести его на экран.
    2.
    В массиве подсчитать количество отрицательных элементов, предшествующих максимальному элементу массива и заменить нулями все отрицательные элементы массива.
    Вариант 2 1.
    Дан массив А[1..n] из целых чисел. Получить элементы, которые находятся между min и max.
    2.
    Написать программу, которая вычисляет среднее арифметическое ненулевых элементов введенного с клавиатуры одномерного массива целых чисел.
    Вариант 3 1.
    Определить сумму элементов одномерного массива.
    2.
    Элементы массива X(n) переписать в массив Y(n) в обратном порядке.
    Вариант 4 1.
    Задать в массив значения функции f(x) = x
    2
    + b, при x= 1,2, …10 и вывести его на экран.
    2.
    В заданном массиве определить число соседств двух положительных чисел и двух чисел разного знака.
    Вариант 5 1.
    Определить количество положительных чисел в массиве.
    2.
    Написать программу, которая выводит минимальный элемент введенного с клавиатуры массива целых чисел.
    Вариант 6 1.
    В массиве А(10) найти наибольший среди отрицательных элементов.
    2.
    Осуществить циклический сдвиг компонентов массива на одну позицию влево.
    Вариант 7 1.
    В одномерном массиве найти максимальный элемент и его индекс.
    2.
    Написать программу, которая вычисляет, сколько раз введенное с клавиатуры число, встречается в одномерном массиве.
    Вариант 8 1.
    Сформировать массив по правилу: A[i]=A[1]+A[2]+...+A[i-1], первый элемент вводится с клавиатуры.

    2.
    Найти самый часто встречающийся элемент из массива
    Вариант 9 1.
    Проверить соблюдается ли для заданного массива правило: A[i]=A[i-
    1]+A[i-2]] где i=2,3,..n.
    2.
    Дан массив X(N). Получить новый массив Y(N) такой, что в нем сначала идут положительные числа, затем нулевые, и затем отрицательные из X.
    Вариант 10 1.
    Подсчитать количество элементов массива после последнего положительного элемента.
    2.
    Найти номер первого четного элемента одномерного массива из целых чисел.
    Задачи для индивидуального решения (часть 2):
    1. Вычислить суммы элементов столбцов заданной матрицы A(n,m).
    2. Подсчитать сколько раз встречается в заданной матрице максимальное по величине число.
    3. Умножить столбец с минимальным элементом на число Z.
    4. Занести в массив значения функции
    f(x, y) = x + y, 0<= x<=20, 0<= y <=10 и вывести его на экран
    5. Написать программу ввода с клавиатуры массива размером 6х3 и поиска в нем максимального элемента.
    Вариант 1 1.
    Написать программу ввода с клавиатуры массива размером 3х3 и вычисления произведения введенных элементов.
    2.
    В заданной матрице найти минимальный элемент в диагоналях.
    Вариант 2 1.
    Занести в массив значения функции f(x, y) = 1/(x + y), 0<= x<=10, 0 <= y
    <=20 и вывести его на экран.
    2.
    Найти максимальную из столбцевых сумм.
    Вариант 3 1.
    В каждой строке матрицы определить является ли сумма ее отрицательных элементов четным или нечетным числом.
    2.
    В матрице поменять местами строку и столбец с номером N.
    Вариант 4 1.
    Занести в массив значения функции f(x, y) = (x + y)
    2
    , 0<= x<=5, 0<= y
    <=3 и вывести его на экран.
    2.
    В заданном массиве определить число соседств двух положительных чисел и двух чисел разного знака
    Вариант 5 1.
    Найти наибольший элемент матрицы и номер строки и столбца на пересечении которых он находится.
    2.
    Сдвинуть циклически элементы в столбцах матрицы на одну позицию вверх.
    Вариант 6 1.
    В заданной матрице поменять местами строки с номерами A и Q.
    2.
    Найти количество элементов матрицы, больших среднего арифметического всех ее элементов.
    Вариант 7 1.
    Занести в массив значения функции f(x, y) = x - y, 0<= x<=20, 0 <= y
    <=10 и вывести его на экран.

    2.
    Найти минимальную из строковых сумм.
    Вариант 8 1.
    В матрице вычислить суммы элементов, стоящих над главной диагональю и под ней.
    2.
    Вычислить матрицу С[i,j], являющуюся суммой матриц А[i,j] и В[i,j].
    Вариант 9 1.
    Разделить все элементы столбца, в котором находится минимальный элемент матрицы на максимальный элемент матрицы.
    2.
    Сдвинуть циклически элементы в строках матрицы на одну позицию вправо.
    Вариант 10 1.
    Написать программу ввода с клавиатуры массива размером 2х5 и вычисления суммы введенных элементов.
    2.
    По трем заданным матрицам A[n,m] , B[n,m] , C[n,m] построить матрицу
    X того же размера, каждый элемент которой вычисляется по формуле x[i,j]=max(a[i,j],b[i,j],c[i,j].

    Лабораторная работа №6
    Методы сортировки массива
    Цель работы: познакомиться с общими идеями сортировки массивов, научиться создавать алгоритмы сортировки массивов, переводить их на язык С++, отлаживать реализованные программы с использованием системы Microsoft Visual Studio.
    Общие сведения:
    Сортировка – это размещение данных в порядке возрастания или убывания.
    Сортировка массива осуществляется по значению его элементов. Существует множество способов сортировки. Рассмотрим три простых метода на примере сортировки целочисленных массивов данных по возрастанию.
    Сортировка методом выбора
    Алгоритм состоит в следующем. Среди элементов массива выбирается наименьший и меняется местами с первым. Далее рассматриваются элементы, начиная со второго, и наименьший из них меняется местами со вторым элементом. Так продолжается
    N-1 раз. При последнем проходе цикла при необходимости меняются местами предпоследний и последний элементы массива.
    Словесное описание приведенного алгоритма переводим на язык С++:
    #include using namespace std;
    #include int main ()
    { const int N = 9; int mas[N] = {420, 79, 429, 53, 908, 140, 897, 594, 682}; int i, j, indMin, temp; for (i = 0; i < N-1; i++)
    {
    //принимаем за наименьший первый из рассматриваемых элементов indMin = i;
    //поиск номера минимального элемента из неупорядоченных for (j = i + 1; j < N; j++) if (mas[j] < mas[indMin]) indMin = j;
    //обмен элементов с номерами i и indMin temp = mas[i]; mas[i] = mas[indMin]; mas[indMin] = temp;
    }
    //выводим упорядоченный массив на экран cout<<"Otsortirov. massiv"< _getch(); return 0;
    }
    На рис. 6.1 продемонстрирован процесс выполнения алгоритма сортировки методом выбора. Минимальные во время поиска элементы выделены полужирным
    шрифтом. Как видно, массив из 9 элементов сортируется за 8 проходов внешнего цикла for.
    Исходный массив indMin
    420 79 429
    53 908 140 897 594 682 3
    1-й проход цикла 53 79
    429 420 908 140 897 594 682 1
    2-й проход цикла 53 79 429 420 908 140 897 594 682 5
    3-й проход цикла 53 79 140 420 908 429 897 594 682 3
    4-й проход цикла 53 79 140 420 908 429 897 594 682 5
    5-й проход цикла 53 79 140 420 429 908 897 594 682 7
    6-й проход цикла 53 79 140 420 429 594 897 908 682
    8 7-й проход цикла 53 79 140 420 429 594 682 908 897 8
    8-й проход цикла 53 79 140 420 429 594 682 897 908
    Рис. 6.1. Пример сортировки методом выбора
    Реализовав вышеприведенную программу в интегрированной среде программирования, получим результирующее окно, представленное на рисунке 6.2.
    Рис. 6.2. Окно выполнения задачи
    1   2   3   4   5   6


    написать администратору сайта