40050

Робота з багатомірними масивами в мові С

Лабораторная работа

Информатика, кибернетика и программирование

Получить новую матрицу путем вычитания всех элементов данной матрицы из ее наибольшего по модулю элемента.

Украинкский

2014-11-23

512.5 KB

3 чел.

Лабораторна робота № 4

з дисципліни “Обчислювальна техніка та програмування”

 Робота з багатомірними масивами в мові С

Вариант 11

Задание №1

Получить новую матрицу путем вычитания всех элементов данной матрицы из ее наибольшего по модулю элемента.

1.2  Алгоритм программы

1.3  Тестовые наборы

№ теста

Ввод элементов матрицы

Ожидаемый результат

1

1 2 3; 4 5 6; 7 8 9

8 7 6; 5 4 3; 2 1 0

2

2 2 2; 3 3 3; 4 4 4

2 2 2; 1 1 1; 0 0 0

3

1 1 1; 1 1 1; 2 2 2

1 1 1; 1 1 1; 0 0 0

4

3 3 3; 5 5 5; 7 7 7

4 4 4; 2 2 2; 0 0 0

1.4  Код программы

#include <stdio.h>

#include <stdlib.h>

#include <locale.h>

#include <windows.h>

#include <time.h>

#include <math.h>

#define MAX 100

void enter_array (int [][MAX], int, int);

void rand_array (int [][MAX], int, int);

void output (int [][MAX], int, int);

void menu (int [][MAX], int, int);

void record (int [][MAX], int, int);

int main()

{

setlocale(LC_CTYPE, "rus");

 int mas[MAX][MAX];

 int nr, nc;

printf("Введите количество строк матрицы: ");

 while(scanf("%i", &nr) != 1 || nr > 100)

{

 printf("Ошибка! Введите корректные данные: ");

 fflush stdin;

}

printf("Введите количество столбцов матрицы: ");

 while(scanf("%i", &nc) != 1 || nc > 100)

{

 printf("Ошибка! Введите корректные данные: ");

 fflush stdin;

}

menu (mas, nr, nc);

record (mas, nr, nc);

printf("\n");

system("pause");

 return 0;

}

void enter_array (int mas[][MAX], int nr, int nc)

{

printf("Введите элементы матрицы: ");

 for (int i = 0; i < nr; i++)

 for (int j = 0; j < nc; j++)

  while(scanf("%i", &mas[i][j]) != 1)

  {

   printf("Ошибка! Введите корректные данные: ");

   fflush stdin;

  } printf("\n");

 return;

}

void rand_array (int mas[][MAX], int nr, int nc)

{

srand(time (NULL));

 int a, b;

printf("Ввод начала диапазона: ");

 while(scanf("%i", &a) != 1 || a == 0)

{

 printf("Ошибка! Введите корректные данные: ");

 fflush stdin;

}

printf("Ввод конца диапазона: ");

 while(scanf("%i", &b) != 1 || b == 0)

{

 printf("Ошибка! Введите корректные данные: ");

 fflush stdin;

}

 for (int i = 0; i < nr; i++)

 for (int j = 0; j <nc; j++)

  mas[i][j] = rand()%(b - a + 1) + a;

 return;

}

void output (int mas[][MAX], int nr, int nc)

{

printf("Элементы матрицы: ");

printf("\n");

 for (int i = 0; i < nr; i++)

{

 for (int j = 0; j < nc; j++)

 {

  printf("%6i", mas[i][j]);

 }

 printf("\n");

}

printf("\n");

 return;

}

void menu (int mas[][MAX], int nr, int nc)

{

 int menu;

printf("Меню\n1 - Для ручного ввода массива\n2 - Для рандомного ввода массива\nПоле ввода: ");

 while(scanf("%i", &menu) != 1 || menu >= 3 || menu <= 0)

{

 printf("Ошибка! Введите корректные данные: ");

 fflush stdin;

}

 switch(menu)

{

 case 1: enter_array (mas, nr, nc);

   break;

 case 2: rand_array (mas, nr, nc);

   output (mas, nr, nc);

   break;

}

printf("\n");

 return;

}

void record (int mas[][MAX], int nr, int nc)

{

 int max = mas[0][0];          

 for (int i = 0; i<nr; i++)

 for(int j = 0; j<nc; j++)

 {

  if (abs(mas[i][j]) > max)

   max = abs(mas[i][j]);

 }

printf("Максимальный по модулю элемент: %i\n", max);

 int record[MAX][MAX];

printf("Новая матрица:\n");

 for (int i = 0; i<nr; i++)

{

 for (int j = 0; j<nc; j++)

 {

  record[i][j] = max - mas[i][j];

  printf("%6i", record[i][j]);

 }  

 printf("\n");

}

printf("\n");

 return;

}

1.5 Результат работы программы

№ теста

Ввод элементов массива

Результат

Вывод

1

1 2 3; 4 5 6; 7 8 9

8 7 6; 5 4 3; 2 1 0

Тест пройден

2

2 2 2; 3 3 3; 4 4 4

2 2 2; 1 1 1; 0 0 0

Тест пройден

3

1 1 1; 1 1 1; 2 2 2

1 1 1; 1 1 1; 0 0 0

Тест пройден

4

3 3 3; 5 5 5; 7 7 7

4 4 4; 2 2 2; 0 0 0

Тест пройден

1.6  Вывод о работоспособности программы

 Программа прошла тестирование: в результате выполнения тестов программа выдала ожидаемые результаты. Программа – работоспособна.

2.1  Задание №2

Дана матрица размера M × N и целое число K (1 ≤ K ≤ M). Найти сумму и произведение элементов K-й строки данной матрицы.

 2.2 Алгоритм программы

2.3  Тестовые наборы

№ теста

Ввод элементов матрицы

Ввод К

Ожидаемый результат

1

1 2 3; 4 5 6; 7 8 9

1

СУММА = 6; ПРОИЗВЕДЕНИЕ = 6

2

2 2 2; 3 3 3; 4 4 4

2

СУММА = 9; ПРОИЗВЕДЕНИЕ = 27

3

1 1 1; 1 1 1; 2 2 2

3

СУММА = 6; ПРОИЗВЕДЕНИЕ = 8

4

3 3 3; 5 5 5; 7 7 7

3

СУММА = 21; ПРОИЗВЕДЕНИЕ = 343

2.4  Код программы

#include <stdio.h>

#include <stdlib.h>

#include <locale.h>

#include <windows.h>

#include <time.h>

#include <math.h>

#define MAX 100

void enter_array (int [][MAX], int, int);

void rand_array (int [][MAX], int, int);

void output (int [][MAX], int, int);

void menu (int [][MAX], int, int);

void record (int [][MAX], int, int);

int main()

{

setlocale(LC_CTYPE, "rus");

 int mas[MAX][MAX];

 int nr, nc;

printf("Введите количество строк матрицы: ");

 while(scanf("%i", &nr) != 1 || nr > 100)

{

 printf("Ошибка! Введите корректные данные: ");

 fflush stdin;

}

printf("Введите количество столбцов матрицы: ");

 while(scanf("%i", &nc) != 1 || nc > 100)

{

 printf("Ошибка! Введите корректные данные: ");

 fflush stdin;

} menu (mas, nr, nc);

record (mas, nr, nc);

printf("\n");

system("pause");

 return 0;

}

void enter_array (int mas[][MAX], int nr, int nc)

{

printf("Введите элементы матрицы: ");

 for (int i = 0; i < nr; i++)

 for (int j = 0; j < nc; j++)

  while(scanf("%i", &mas[i][j]) != 1)

  {

   printf("Ошибка! Введите корректные данные: ");

   fflush stdin;

  }

printf("\n");

 return;

}

void rand_array (int mas[][MAX], int nr, int nc)

{

srand(time (NULL));

 int a, b;

printf("Ввод начала диапазона: ");

 while(scanf("%i", &a) != 1 || a == 0)

{

 printf("Ошибка! Введите корректные данные: ");

 fflush stdin;

}

printf("Ввод конца диапазона: ");

 while(scanf("%i", &b) != 1 || b == 0)

{

 printf("Ошибка! Введите корректные данные: ");

 fflush stdin;

}

 for (int i = 0; i < nr; i++)

 for (int j = 0; j <nc; j++)

  mas[i][j] = rand()%(b - a + 1) + a;

 return;

}

void output (int mas[][MAX], int nr, int nc)

{

printf("Элементы матрицы: ");

printf("\n");

 for (int i = 0; i < nr; i++)

{

 for (int j = 0; j < nc; j++)

 {

  printf("%6i", mas[i][j]);

 }

 printf("\n");

}

 return;

}

void menu (int mas[][MAX], int nr, int nc)

{

 int menu;

printf("Меню\n1 - Для ручного ввода массива\n2 - Для рандомного ввода массива\nПоле ввода: ");

 while(scanf("%i", &menu) != 1 || menu >= 3 || menu <= 0)

{

 printf("Ошибка! Введите корректные данные: ");

 fflush stdin;

}

 switch(menu)

{

 case 1: enter_array (mas, nr, nc);

   break;

 case 2: rand_array (mas, nr, nc);

   output (mas, nr, nc);

   break;

}

 return;

}

void record (int mas[][MAX], int nr, int nc)

{

 int k;

 int sum, prod;

printf("Введите К: ");

 while(scanf("%i", &k) > nc||k < 1)

{

 printf("Ошибка! Введите корректные данные: ");

 fflush stdin;

}

sum = 0;

prod = 1;

 for(int j = 0; j < nc; j++)

{

 sum = sum + mas[k-1][j];

 prod = prod * mas[k-1][j];

}

printf("Сумма К-й строки: %i\nПроизведение К-й стоки: %i", sum, prod);

 return;

}

2.5 Результат работы программы

№ теста

Ввод элементов массива

Ввод К

Ожидаемый результат

Вывод

1

1 2 3; 4 5 6; 7 8 9

1

СУММА = 6; ПРОИЗВЕДЕНИЕ = 6

Тест пройден

2

2 2 2; 3 3 3; 4 4 4

2

СУММА = 9; ПРОИЗВЕДЕНИЕ = 27

Тест пройден

3

1 1 1; 1 1 1; 2 2 2

3

СУММА = 6; ПРОИЗВЕДЕНИЕ = 8

Тест пройден

4

3 3 3; 5 5 5; 7 7 7

3

СУММА = 21; ПРОИЗВЕДЕНИЕ = 343

Тест пройден

2.6  Вывод о работоспособности программы

Программа прошла тестирование: в результате выполнения тестов программа выдала ожидаемые результаты. Программа – работоспособна.


 

А также другие работы, которые могут Вас заинтересовать

72172. Понятие и принципы трудового права 28.5 KB
  Каждый имеет право свободно распоряжаться своими способностями к труду выбирать род деятельности и профессию. Каждый имеет право на труд в условиях отвечающих требованиям безопасности и гигиены на вознаграждение за труд без какой бы то ни было дискриминации и не ниже установленного федеральным...
72173. Трудовой договор 43 KB
  В этом определении выделены родовые признаки трудового договора. Конкретное содержание трудового договора зависит от соглашения сторон. Заключение контракта на определенный срок означает заключение срочного трудового договора.
72174. Трудовые споры. Коллективные и индивидуальные трудовые споры 21.5 KB
  Право на индивидуальные и коллективные трудовые споры с использованием установленных федеральным законом способов их разрешения провозглашенное ч. Коллективные трудовые споры рассматриваются в порядке определяемом федеральным законом.
72175. Рабочее время и время отдыха 31.5 KB
  Трудовой кодекс не изменяет установленные КЗоТом нормальную продолжительность рабочего времени не более 40 часов в неделю и сокращенную продолжительность рабочего времени для определенных категорий работников. В соответствии со статье 94 ТК РФ продолжительность ежедневной работы...
72176. Прекращение трудовых отношений 33.5 KB
  Удельный вес различных оснований прекращения трудового договора в общем объеме увольнений неоднозначен. Наиболее распространенными основаниями расторжения трудового договора являются увольнения по инициативе работника и по инициативе работодателя и поэтому они нуждаются...
72177. Понятия и принципы уголовного права 31 KB
  С этих исходных позиций мы сможем со знанием дела уяснить понятие и круг источников уголовного права их содержание. Уголовное право как отрасль права традиционно определяется как совокупность юридических норм которые устанавливают преступность и наказуемость деяний представляющих...
72178. Наказание. Понятие, цели и виды 60.5 KB
  Надо добавить что назначение и исполнение наказания означает в то же время порицание судом от имени государства содеянного виновным и его самого как нанесшего вред обществу. Иными словами содержанием наказания является кара за преступление о чем уже упоминалось в связи с общей...
72179. Понятие административного права 48.5 KB
  Административное право представляет собой совокупность правовых норм регулирующих определенные сферы общественных отношений составляющих предмет этой отрасли права. При этом предмет административного права отвечает на вопрос что какие общественные отношения регулируются нормами...
72180. Административные правонарушения в РФ 63 KB
  Нарушение правил о которых говорилось выше иногда может повлечь уголовную ответственность если это прямо предусмотрено Уголовным кодексом. Для подобных случаев а они наиболее часты государство и учредило административную ответственность которая по характеру мер менее сурова...