- •Т.В. Панова программирования на языке высокого уровня си Лабораторный практикум
- •Лабораторная работа №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. Выполнение индивидуального задания.
III. Практическая часть.
1. Выполнение общего задания.
Разобрать задачи.
Задача 1
1. Постановка задачи: разработать алгоритм ввода двумерного массива целых чисел, содержащего n строк и m столбцов, создания одномерного массива из m элементов, значение которых получить из суммы значений элементов каждого столбца введенного двумерного массива, и вывода полученного массива. Написать программу, реализующую разработанный алгоритм.
2. Математическая модель и описательный алгоритм.
Входной массив a размерностьюn=3,m=4:
5 3 0 1
1 0 2 5
3 1 -2 2
Сумма элементов по столбцам: 5+1+3=9, 3+0+1=4, 0+2-2=0, 1+5+2=8; выходной массив b:9 4 0 8
В цикле с постусловием n≤0 или n>c1 или m≤0 или m>c2, где с1 и c2 – константы, ввести переменные размерности двумерного массива 0<n≤c1, 0<m≤c2;
p1=&b[0]; p2=p0=&a[0][0]; в цикле с параметром 0≤i<n∙m (n∙m – количество элементов в двумерном массиве) ввести значения элементов массива по адресу p2, p2=p2+1;
p2=p0, i=0; в цикле с предусловием i<n∙m вывести значения элементов массива *p2, p2=p2+1, i=i+1;
во внешнем цикле с параметром 0≤j<m для назначения номера столбца каждый раз обнулять переменную s (s=0) для формирования суммы элементов текущего столбца и устанавливать указатель на начало текущего столбца: p2=p0+j;
во вложенном цикле с параметром 0≤i<n для назначения номера строки к содержимому переменной s прибавлять значение текущего элемента назначенного столбца (s=s+*(p2+i∙m));
после окончания вложенного цикла формировать одномерный массив, т.е. каждому элементу массива присваивать вычисленное значение переменной s (*p1=s); p1++;
после завершения цикла p1=p1-m; i=0; в цикле с предусловием i<m вывести значения элементов массива *p1, p1=p1+1, i=i+1.
3. Блок-схема алгоритма:
4. Текст программы:
#include <stdio.h>
#include <conio.h>
#define c1 3
#define c2 4
int main()
{
int a[c1][c2],b[c2],i,j,s,*p0,*p1,*p2,n,m;
do
{
printf(“\nInput n,m: “);
scanf(“%d%d”,&n,&m);
}
while (n<=0 || n>c1 || m<=0 || m>c2);
p1=&b[0];
p2=p0=&a[0][0];
printf("\nInput elements of matrics:\n");
for(i=0;i<n*m;i++)
{
scanf("%d",p2);
p2++;
}
p2=p0;
i=0;
printf(“\nOutput matrics:\n”);
while (i<n*m)
{
printf(“%d ”,*p2);
if ((i+1)%m==0) // для вывод двумерного массива в виде матрицы
printf(“\n”);
p2++;
i++;
}
for(j=0;j<m;j++)
{
p2=p0+j;
for(s=0,i=0;i<n;i++)
s+=*(p2+i*m);
*p1=s;
p1++;
}
i=0;
p1-=m;
printf(“\nOutput massiv:\n”);
while (i<m)
{
printf(“%d ”,*p1);
p1++;
i++;
}
getch();
return 0;
}
5. Тестирование:
Теоретически рассчитанное выходное значение |
Практически полученное выходное значение |
Тест: входной массив: n=3, m=4; a[n][m]: 5 3 0 1 1 0 2 5 3 1 -2 2 | |
выходной массив b[m]: 9 4 0 8 |
выходной массив b[m]: 9 4 0 8 |
Задача 2
1. Постановка задачи: разработать алгоритм ввода двумерного массива целых чисел, содержащего n строк и m столбцов, получения суммы и вывода полученного значения. Написать программу, реализующую разработанный алгоритм.