Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Обработка матриц




Цель работы: изучение приёмов обработки двумерных массивов данных, выработка умений алгоритмизации и программирования задач с двумерными массивами, отладки и тестирования программ с массивами.

/* Программа 10 меняет знак у "-"-ых элементов матрицы размером n х n ниже главной диагонали, n <= 10.

*/

#include <stdio.h>

#include <conio.h>

void in_matr(int x[ ][10], int n); // ввод матрицы размером n х n с консоли

void in_matr_rand(int x[ ][10], int n); // заполнение матрицы размером n х n

// случайными числами из интервала [-10, 10]

void out_matr(int x[ ][10], int n); // вывод матрицы размером n х n на экран

void processing(int x[ ][10], int n); // изменение знака у «-»-ых элементов

// матрицы ниже главной диагонали

Int main()

{ int n, x[10][10];

char ch;

// Вв/выв исходных данных:

// Не совмещайте ввод данных и их обработку!!! (Почему?)

printf("Введите размер матрицы n <=10:”);

scanf("%d", &n);

printf("\n Ввод матрицы с консоли - 'c' или random() - 'r'? - ");

scanf("%c%c", &ch, &ch);

if((ch=='c') || (ch=='C')) in_matr(x, n);

else { randomize(); in_matr_rand(x, n); }

printf("\n Исходная матрица %d*%d \n", n, n);

out_matr(x, n);

processing(x, n);

printf("\n Обработанная матрица: \n");

out_matr(x, n);

getch();

return 0;

}

void in_matr(int x[ ][10], int n)

{ int I, j;

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

scanf("%d", &n);

for (i = 0; i < n; i++)

for (j = 0; j < n; j++)

scanf("%d", &x[i][j]);

}

void out_matr(int x[ ][10], int n)

{ int i, j;

for (i = 0; i < n; i++)

{ for (j = 0; j < n; j++)

printf("%d\t", x[i][j]);

printf("\n");

}

}

void processing(int x[ ][10], n) // Обработка матрицы:

{ int i, j;

for (i = 1; i < n; i++)

for (j = 0; j < i; j++)

if (x[i][j] < 0) x[i][j] = -x[i][j];

}

void in_matr_rand(int x[][10], int n)

{ int i, j;

for (i = 0; i < n; i++)

for (j = 0; j < n; j++)

x[i][j]) = random(21) - 10;

}

Вопросы и упражнения

1. Как располагаются в памяти компьютера элементы двумерного массива?

2. Дополните программу 10 функцией out_matr_ptr() и протестируйте её.

void out_matr_ptr(int x[ ][10], int n)

{ int i, j, *pm;

pm=&x[0][0];

printf("\n Вывод матрицы по указателю: \n");

for (i = 0; i < n*n; i++)

{ printf("%5d", *pm++);

if((i+1)%n == 0) printf("\n");

}

}

3. Какое значение имеет объект программы имя двумерного массива?

4. Какое значение имеет объект программы x[k], если в программе объявлен массивint x[10][10]? Можно ли в программе использовать объект x[k]? Если «да», то в каких случаях?

5. Как обратиться по указателю к элементу матрицы matr [i] [j]?

6. Напишите операторы вывода элементов двумерного массива по заданному условию: а) элементов k-й строки, б) элементов k-го столбца, в) элементов правой и левой диагоналей, г) элементов выше правой диагонали, д) элементов ниже левой диагонали.

7. Напишите функции: а) поиск столбца с минимальной суммой элементов, б) поиск строки с наибольшим числом «+»-ых элементов.

8. Выполните упражнения 6-а и 6-б с указателями, не используя индексацию для выбора элементов матрицы.





Поделиться с друзьями:


Дата добавления: 2015-10-01; Мы поможем в написании ваших работ!; просмотров: 502 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Ваше время ограничено, не тратьте его, живя чужой жизнью © Стив Джобс
==> читать все изречения...

2196 - | 2142 -


© 2015-2024 lektsii.org - Контакты - Последнее добавление

Ген: 0.007 с.