Блок схема алгоритма
Технический университет Молдовы Факультет вычислительной техники, информатики и микроэлектроники Кафедра прикладной информатики
Лабораторная работа №5 Тема: Обработка двумерных массивов на языке Си при помощи динамического выделения памяти.
Выполнил: Приняла: Саньков Денис Л.Лукьянова группа IA-112
Кишинев 2011
Лабораторная работа №5 Тема: Обработка двумерных массивов на языке Си при помощи динамического выделения памяти.
Цель работы: Программирование алгоритмов для обработки двумерных массивов с использованием динамического выделения памяти для массива.
Задание: Для заданного двумерного массива
Вариант №5
Упорядочить строки массива по возрастании количества отрицательных элементов в каждой строке. Ход работы: 1.Объявляем динамический двумерный массив. 2.Объявляем вспомогательный одномерный массив. 3.Инициализируем ячейки двумерного массива при помощи scanf. 4.Создаём цикл с проверкой кол-ва отрицательных элементов в каждой строке. 5. Добавляем полученное кол-во отрицательных элементов в одномерный массив. 6.Сортируем элементы одномерного массива. 7.Сортируем строки двумерного массива. 8.Освобождаем память,выделенную под массив. 9.Выводим полученный результат.
Блок схема алгоритма Текст программы на языке Си: #include <stdio.h> #include <stdlib.h>
int main() { int n=3; int *A=(int*) malloc(n* n* sizeof(int)); printf("Введи элементы массива\n"); for (int i=0;i<n;i++) { for (int j=0;j<n;j++) scanf("%d",&*(A+i*n+j)) } system("clear"); printf("Массив до сортировки \n"); for (int i=0;i<n;i++) { for (int j=0;j<n;j++) printf("[%3d]",*(A+i*n+j)); printf("\n"); } int B[n]; int kotr=0; for (int i=0;i<n;i++) { for (int j=0;j<n;j++){if (*(A+i*n+j)<0) kotr++;} B[i]=kotr; kotr=0; } for (int i=0;i<n;i++) { for (int k=0;k<n-1;k++) { kotr=0; if(B[k]>B[k+1]) { kotr=B[k]; B[k]=B[k+1]; B[k+1]=kotr; for (int j=0;j<n;j++) { kotr=*(A+k*n+j); *(A+k*n+j)=*(A+(k+1)*n+j); *(A+(k+1)*n+j)=kotr; } } } }
printf("Отсортированный массив по возрастанию кол-ва отрицательных элементов\n"); for (int i=0;i<n;i++) { for (int j=0;j<n;j++) printf("[%3d]",*(A+i*n+j)); printf("\n"); } free(A); return 0; } Выходные данные:
Вывод: В ходе выполнения программы, программа предлагает ввести матрицу 3x3 и выводит эту матрицу отсортированной по возрастанию кол-ва отрицательных элементов в каждой строке.Перед завершением программы освобождается память выделенная под двумернный массив. Для завершения программы достаточно нажать любую клавишу.
|