- •Т.В. Панова программирования на языке высокого уровня си Лабораторный практикум
- •Лабораторная работа №1. Обработка двумерных массивов данных………...…………….3
- •Лабораторная работа №1
- •Обработка двумерных массивов данных
- •I. Теоретические сведения.
- •II. Контрольные вопросы.
- •III. Практическая часть.
- •1. Выполнение общего задания.
- •2. Математическая модель и описательный алгоритм.
- •3. Блок-схема алгоритма:
- •4. Текст программы:
- •5. Тестирование:
- •2. Математическая модель и описательный алгоритм.
- •3. Блок-схема алгоритма:
- •4. Текст программы:
- •5. Тестирование:
- •2. Математическая модель и описательный алгоритм.
- •3. Блок-схема алгоритма:
- •4. Текст программы:
- •5. Тестирование:
- •5. Тестирование:
- •2. Математическая модель и описательный алгоритм.
- •3. Блок-схема алгоритма:
- •4. Текст программы:
- •5. Тестирование:
- •Лабораторная работа №2
- •Работа со строками
- •I. Теоретические сведения.
- •1. Некоторые стандартные функции обработки строк и их использование
- •II. Контрольные вопросы.
- •3. Блок-схема алгоритма:
- •4. Текст программы:
- •5. Тестирование:
- •2. Блок-схема алгоритма:
- •3. Текст программы:
- •4. Тестирование:
- •Лабораторная работа № 3
- •Функции
- •I. Теоретические сведения.
- •II. Контрольные вопросы.
- •III. Практическая часть.
- •2. Описание подхода к решению задачи.
- •2. Блок-схемы алгоритмов функций:
- •3. Текст программы:
- •4. Тестирование:
- •2. Блок-схемы алгоритмов функций обработки строки:
- •3. Текст программы:
- •4. Тестирование:
- •Лабораторная работа №4
- •Работа с файлами
- •I. Теоретические сведения.
- •Определение типов символов
- •II. Контрольные вопросы.
- •III. Практическая часть.
- •1. Выполнение общего задания.
- •2. Блок-схема алгоритма:
- •3. Текст программы:
- •2. Текст программы:
- •2. Текст программы:
- •2. Текст программы:
- •2. Выполнение индивидуального задания.
5. Тестирование:
Теоретически рассчитанное выходное значение |
Практически полученное выходное значение |
Тест: входной массив: n=3, m=4; a[n][m]: 6 7 2 6 1 0 -2 0 3 1 3 2 | |
выходной массив a[n][m]: 7 6 6 2 1 0 0 -2 3 3 2 1 |
выходной массив a[n][m]: 7 6 6 2 1 0 0 -2 3 3 2 1 |
Задача 5
1. Постановка задачи: разработать алгоритм ввода двумерного массива целых чисел, содержащего n строк и m столбцов, сортировки элементов нечетных строк массива по возрастанию (ai,j+1>ai,j), а четных – по убыванию (ai,j+1<ai,j) и вывода полученного массива. Написать программу, реализующую разработанный алгоритм.
2. Математическая модель и описательный алгоритм.
Входной массив a размерностьюn=3,m=3:
5 3 0
1 0 2
3 1 -2
Выходной массив a:
0 3 5
2 1 0
-2 1 3
В цикле с постусловием n≤0 или n>c1 или m≤0 или m>c2, где с1 и c2 – константы, ввести переменные размерности двумерного массива 0<n≤c1, 0<m≤c2;
p=&a[0][0]; в цикле с параметром 0≤i<n∙m (n∙m – количество элементов в двумерном массиве) ввести значения элементов массива по адресу p, p=p+1;
получить адрес нулевого элемента p=p-n∙m; в цикле с параметром 0≤i<n∙m вывести значения элементов массива *p, p=p+1;
p=p-n∙m;
во внешнем цикле с параметром 0≤i<n для назначения строки изменять p1=p+i*m;
использовать два вложенных цикла с параметром для сортировки пузырьком каждой строки как одномерного массива: цикл по k – от 0 до m-1 и цикл по j – от 0 до m-k-2; во втором вложенном цикле проверять условие (i+1)%2=0 (четная строка) и *(p1+j)≤*(p1+j+1) или (i+1)%2≠0 (нечетная строка) и *(p1+j)≥*(p1+j+1): если выполняется, то производить перестановки соседних элементов через дополнительную переменную buf, использовать операцию разыменования buf=*(p1+j),*(p1+j)=*(p1+j+1),*(p1+j+1)=buf;
после произведенной сортировки i=0, в цикле с постусловием i<n*m вывести значения элементов отсортированного массива *p, p=p+1, i=i+1.
3. Блок-схема алгоритма:
4. Текст программы:
#include <stdio.h>
#include <conio.h>
#define c1 5
#define c2 7
int main()
{
int j,k,buf,a[c1][c2],*p,*p1,n,m;
do
{
printf(“\nInput n,m: “);
scanf(“%d%d”,&n,&m);
}
while (n<=0 || n>c1 || m<=0 || m>c2);
p=&a[0][0];
printf("\nInput elements of matrics:\n");
for(int i=0;i<n*m;i++)
{
scanf("%d",p);
p++;
}
printf(“\nOutput matrics:\n”);
for(p-=n*m,i=0;i<n*m;i++)
{
printf(“%d ”,*p);
if ((i+1)%m==0) // для вывод двумерного массива в виде матрицы
printf(“\n”);
p++;
}
p-=n*m;
for (i=0;i<n;i++)
{
p1=p+i*m;
for (k=0;k<m;k++)
for (j=0;j<m-k-1;j++)
if ((i+1)%2==0&&*(p1+j)<=*(p1+j+1)||(i+1)%2!=0&&*(p1+j)>=*(p1+j+1))
{
buf=*(p1+j);
*(p1+j)=*(p1+j+1);
*(p1+j+1)=buf;
}
}
i=0;
printf(“\nOutput matrics:\n”);
do
{
printf(“%d ”,*p);
if ((i+1)%m==0) // для вывод двумерного массива в виде матрицы
printf(“\n”);
p++;
i++;
}
while (i<n*m);
getch();
return 0;
}
5. Тестирование:
Теоретически рассчитанное выходное значение |
Практически полученное выходное значение |
Тест: входной массив: n=3, m=3; a[n][m]: 5 3 0 1 0 2 3 1 -2 | |
выходной массив a[n][m]: 0 3 5 2 1 0 -2 1 3 |
выходной массив a[n][m]: 0 3 5 2 1 0 -2 1 3 |
2. Выполнение индивидуального задания.
1. Постановка задачи.
Разработать алгоритм и написать программу, согласно индивидуальному заданию.
2. Входные и выходные данные.
Все действующие в программе переменные должны быть объявлены.
Недопустимо задавать исходные (входные) данные с помощью операторов присваивания. Ввод данных с клавиатуры должен предваряться выводом соответствующего сообщения.
3. Математическая модель и описательный алгоритм.
4. Блок-схема алгоритма.
Представить алгоритм задачи в виде блок-схемы.
5. Текст программы.
Разработанный алгоритм реализуется на языке программирования высокого уровня Cи.
6. Тестирование.
Результаты тестирования представить в виде таблицы.
IV. Требования к разработке программы.
Программа должна содержать следующие три составные части:
ввод исходных данных;
обработку данных;
вывод результатов.
Произвести отладку и тестирование разработанной программы.
V. Требования к защите индивидуальных заданий.
ИМЕТЬ отчет, который включает:
постановку задачи;
математическую модель и описательный алгоритм;
блок-схему алгоритма;
текст программы;
результаты тестирования.
ЗНАТЬ ответы на контрольные вопросы.
VI. Варианты индивидуальных заданий.
Разработать алгоритмы решения задач, написать программы, реализующие соответствующие алгоритмы, и выполнить их тестирование. Входной двумерный массив а и его размерность n∙m вводятся с клавиатуры. Входной и выходной массивы выводятся на экран в виде матрицы.
Вариант №1
Найти и вывести номер первой строки в массиве, все элементы которой положительны.
Упорядочить элементы первого столбца массива по неубыванию.
Вариант №2
Поменять местами первый столбец массива с последним.
Упорядочить элементы второй строки массива по невозрастанию.
Вариант №3
Найти и вывести номер первой строки в массиве, все элементы которой упорядочены по возрастанию.
Упорядочить элементы столбца массива по убыванию, номер столбца ввести с клавиатуры.
Вариант №4
Найти и вывести среднее арифметическое значение отрицательных элементов массива, лежащих ниже главной диагонали.
Упорядочить элементы строки массива по возрастанию, номер строки ввести с клавиатуры.
Вариант №5
Проверить, есть ли в массиве хотя бы одна строка, содержащая положительный элемент, найти и вывести ее номер.
Упорядочить элементы второго столбца массива по неубыванию.
Вариант №6
Заменить в массиве каждый отрицательный элемент, лежащий выше главной диагонали, его абсолютной величиной.
Упорядочить элементы последней строки массива по невозрастанию.
Вариант №7
Проверить, есть ли в массиве хотя бы одна строка, содержащая элемент, равный нулю, найти и вывести ее номер.
Упорядочить элементы последнего столбца массива по убыванию.
Вариант №8
Найти и вывести среднее арифметическое значение элементов тех строк массива, в которых отрицателен элемент главной диагонали.
Упорядочить элементы предпоследней строки массива по возрастанию.
Вариант №9
Найти в массиве строки, упорядоченные по убыванию, и вывести их номера.
Упорядочить элементы предпоследнего столбца массива по неубыванию.
Вариант №10
Найти и вывести значение суммы элементов массива на главной диагонали.
Упорядочить элементы строк массива по невозрастанию.
Вариант №11
Найти в массиве строки, содержащие хотя бы один положительный элемент, и вывести номера этих строк.
Упорядочить элементы столбцов массива по убыванию.
Вариант №12
Найти и вывести среднее арифметическое значение тех элементов массива, каждый из которых больше находящегося с ним в одной строке элемента главной диагонали.
Упорядочить элементы первого и последнего столбца массива по неубыванию.
Вариант №13
Найти в массиве строки, содержащие хотя бы один нулевой элемент, и вывести номера этих строк.
Упорядочить элементы второй и последней строки массива по невозрастанию.
Вариант №14
Изменить массив, прибавляя к каждому отрицательному элементу значение предыдущего элемента той же строки (если отрицателен 1-й элемент строки, то прибавить к нему значение последнего элемента той же строки).
Упорядочить элементы двух столбцов массива по убыванию, номера столбцов ввести с клавиатуры.
Вариант №15
Найти и вывести номер первого столбца массива, все элементы которого отрицательны.
Упорядочить элементы первой строки массива по возрастанию, второй – по неубыванию.
Вариант №16
Найти и вывести количество отрицательных элементов в массиве.
Упорядочить элементы столбца массива по неубыванию, номер столбца ввести с клавиатуры.
Вариант №17
Найти и вывести номер первого столбца массива, все элементы которого упорядочены по возрастанию.
Упорядочить элементы строки массива по невозрастанию, номер строки ввести с клавиатуры.
Вариант №18
Найти и вывести среднее арифметическое значение элементов тех строк, последний элемент которых равен 1.
Упорядочить элементы третьего столбца массива по невозрастанию.
Вариант №19
Проверить, есть ли в массиве хотя бы один столбец, содержащий положительный элемент, найти и вывести его номер.
Упорядочить элементы первого столбца массива по убыванию, а последнего – по невозрастанию.
Вариант №20
Найти и вывести значения суммы элементов каждого столбца.
Упорядочить элементы второй строки массива по возрастанию, последней – по убыванию.
Вариант №21*
Проверить, есть ли в массиве хотя бы один столбец, содержащий элемент, равный нулю, найти и вывести его номер.
Упорядочить массив по неубыванию значений элементов первого столбца.
Вариант №22*
Проверить, все ли столбцы массива упорядочены по убыванию, найти и вывести их номера.
Упорядочить массив по невозрастанию значений элементов второй строки.
Вариант №23*
Найти в массиве столбцы, упорядоченные по возрастанию, и вывести их номера.
Упорядочить массив по убыванию значений элементов столбца, номер которого ввести с клавиатуры.
Вариант №24*
Найти в массиве столбцы, содержащие хотя бы один положительный элемент, и вывести номера этих столбцов.
Упорядочить массив по неубыванию значений элементов второго столбца.
Вариант №25*
Найти в массиве столбцы, содержащие хотя бы один отрицательный элемент, и вывести номера этих столбцов.
Упорядочить массив по невозрастанию элементов последней строки