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  Вывод о работоспособности программы

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


 

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

71962. Сложение и вычитание в пределах 10 237 KB
  Чтобы попасть к ним нужно переправиться к ним на другой берег так чтобы числа следовали в порядке возрастания. Готовы отправиться в путь 1 Переправа 6 1 препятствие: состав числа 6 8 – 2 препятствие: между какими числами находится. Как называются числа стоящие перед заданным...
71963. Людина починається з добра! 51.5 KB
  Хлопці її однокласники почали голосно сміятися. Але були це факт Жора Горобейко воротар футбольної команди четвертого А класу грався з дівчиськами в ляльки Хлопці похмуро мовчали. Оце так новина І тут хлопці згадали що Жора взагалі останнім часом поводився якось дивно: після школи поспішав...
71964. Закріплення вивченого матеріалу. Складання та обчислення значень виразів на додавання і віднімання в межах 10 42 KB
  Мета: продовжувати формувати вміння виконувати арифметичні дії додавання і віднімання; навчати учнів розв’язувати приклади на додавання і віднімання в межах 10; продовжувати формувати вміння порівнювати числа; повторити склад числа 10; розвивати пізнавальну активність дітей; формувати вміння працювати в парі...
71966. Лицарський турнір 60 KB
  Отже слухайте всі і не кажіть що ви не чули Музика В одній далекій і невідомій нам країні жив Король зі своєю Королевою. А куди ж без нього Король був. Але що розповідати про короля Він був таким яким і мусить бути король і ніжно любив свою королеву А от королева була вередливою і часто страждала від поганого настрою.
71967. Елементарне поняття симетричної форми та осі симетрії. “Світ комах.” 367 KB
  Обладнання: колекція жуків та метеликів під склом коник мураха бабка комар оса малюнки сопілка малюнки луків гуаш пензлик аркуш паперу фарби баночка з водою Червона книга України магнітофон касета знак “Не лови. Метелик 2 А я гарний стрибунець Ось такий я молодець.
71968. Розкажу про мою маму 165 KB
  Мета: виховувати любов і шанобливе ставлення до рідної матері до ненькиУкраїни допомогти учням усвідомити душевні болі Святої Матері Діви Марії через страсті Ісуса Христа. Як ви думаєте чиє серце наповнювалося болем найбільше дивлячись на страждання Сина Божого У Матері Божої.
71969. Хай завжди буде мама 130 KB
  Мета заходу: сприяти формуванню у молоді свідомого ставлення до життя поваги до родини батьків вшанування жінки матері зміцнення моральних цінностей. Мама перше слово вимовлене маленькою людиною та звуки цього слова ми бережливо несемо в серці через усе життя.