Академический Документы
Профессиональный Документы
Культура Документы
Отчёт
По предмету «Программирование компьютера»
Лабораторная работа №5
Кишинёв, 2020
Оглавление
Цель работы ....................................................................................................................................................... 3
Задание .............................................................................................................................................................. 3
Результат выполнения программы ................................................................................................................ 3
Код программы .............................................................................................................................................. 4
Вывод ............................................................................................................................................................. 6
2
Цель работы
Программирование алгоритмов для обработки двумерных массивов с использованием
функций, указателей и динамического выделения памяти для массива.
Задание
Для заданного двумерного массива из n строк и m столбцов вывести на
экран следующее меню операций:
3
Код программы
#include<stdio.h>
#include <stdlib.h>
#include<time.h>
int** a;
int n, m;
void crArr(){
printf("* Äèíàìè÷åñêîå âûäåëåíèå ïàìÿòè äëÿ äâóìåðíîãî ìàññèâà\n");
do {
printf("Ââåäèòå äîïóñòèìûå çíà÷åíèÿ N è M.\n");
printf("n = "); scanf("%d", &n);
printf("m = "); scanf("%d", &m);
} while(n<1 || m<1);
void meArr(){
printf("* Ââîä ýëåìåíòîâ ìàññèâà ñ êëàâèàòóðû\n");
for(int i=0; i<n; i++)
for(int j=0; j<m; j++)
4
scanf("%d", &a[i][j]);
}
void showArr(){
printf("* Âûâîä ýëåìåíòîâ ìàññèâà íà ýêðàí\n");
for(int i=0; i<n; i++){
for(int j=0; j<m; j++)
printf("%d ", a[i][j]);
printf("\n");}
}
void clear(){
for(int i=0; i<n; i++)
delete[] a[i];
delete[] a;
n=0;m=0;
}
void randomarr(){
srand(time(0));
int b1, b2;
printf("Ëåâàÿ ãðàíèöà: "); scanf("%d", &b1);
printf("Ïðàâàÿ ãðàíèöà: "); scanf("%d", &b2);
if(b2<b1){swap(b1,b2); printf("(!): Ïðåäóïðåæäåíèå î íåïðàâèëüíî ââåä¸ííûõ ãðàíèöàõ. Çíà÷åíèÿ ïîìåíÿíû
ìåñòàìè.\n");
}
for(int i=0; i<n; i++)
for(int j=0; j<m; j++)
a[i][j]= b1 + rand() % (b2-b1+1);
}
void sortarr(){
int p, t;
for(int j=0;j<m;j++)
for(int i=0;i<n;i++)
{
p=i;
for(int g=i;g<n;g++)
if(a[g][j]<a[p][j])
p=g;
swap(a[i][j],a[p][j]);}
}
void rus(){
system ("chcp 1251"); system ("cls");
}
int main(){
int sw;
rus();
while(1){
Вывод
Динамическое выделение памяти позволяет реализовать возможность правильного
выделения памяти для массива. Указатели и функции позволяют удобным и корректным
образов реализовать меню и подобные опции. Таким образом я изучил программирование
алгоритмов для обработки двумерных массивов с использованием функций, указателей и
динамического выделения памяти для массива.