Сдам Сам

ПОЛЕЗНОЕ


КАТЕГОРИИ







ВКЛЮЧЕНИЕ СТОЛБЦА В МАТРИЦУ.





Алгоритм включения столбца в матрицу является сходным с алгоритмом включения элементов одномерного массива, за тем исключением, что операция переноса элементов выполняется для каждой строки при переборе столбцов. Рассмотрим пример, где необходимо в квадратной матрице А вставить столбец, содержащий ее элементы главной диагонали - следующим за столбцом, содержащим минимальный элемент матрицы. Для этого перепишем диагональные элементы в массив B, найдем минимальный элемент и его индекс по столбцу. Перебирая столбцы, сдвинем все столбцы на позицию вправо начиная от найденного индекса столбца минимального элемента. Занесем в следующий столбец за индексом минимального элемента - элементы столбца, которые хранятся в массиве B.

Программа:

  1. # include
  2. # include
  3. # include
  4. # define n 7
  5. int main ()
  6. {
  7. clrscr ();
  8. int a[n][n+1],b[n],min,j_min;
  9. clrscr ();
  10. randomize();
  11. printf ("\n Сформирована квадратная матрица A[%i][%i].",n,n);
  12. for (int i=0;i
  13. {
  14. for (int j=0;j
  15. {
  16. a[i][j]=random(31)-15;
  17. printf ("%6i",a[i][j]);
  18. }
  19. puts (" ");
  20. }
  21. for (int i=0;i
  22. b[i]=a[i][i];
  23. min=a[0][0]; j_min=0;
  24. for (int i=0;i
  25. for (int j=0;j
  26. if (a[i][j]
  27. {
  28. min=a[i][j];
  29. j_min=j;
  30. }
  31. int m=n;
  32. m++;
  33. for (int j=m-1;j>j_min;j--)
  34. for (int i=0;i
  35. a[i][j]=a[i][j-1];
  36. for (int i=0;i
  37. a[i][j_min+1]=b[i];
  38. printf ("\n Получен массив A[%i][%i]\n",n,m);
  39. for (int i=0;i
  40. {
  41. for (j=0;j
  42. printf ("%6i",a[i][j]);
  43. puts (" ");
  44. }
  45. getch();
  46. }

ПРЕОБРАЗОВАНИЕ МАТРИЦЫ.

Предыдущий пример может служить так же и примером преобразования матрицы, однако довольно часто встречаются задачи на преобразования матриц за счет изменения значений их элементов. Рассмотрим пример на умножение заданной с клавиатуры строки матрицы на элемент, являющийся "седловой" точкой, т.е. например, минимальным элементом из максимальных элементов по строкам. Для решения такой задачи следует определить значение "седлвой" точки. Это можно сделать, организовав поиск максимального элемента по каждой строке и занесение его в элемент соответствующий индексу этой строки одномерного массива. Далее найти минимальный элемент в получившемся массиве, который и будет являться "седловой" точкой. После алгоритм становится достаточно не сложным. Необходимо ввести с клавиатуры индекс строки для преобразования и в цикле по столбцам преобразовать все элементы заданной строки, умножив их значение на полученный элемент "седловой" точки.

Программа:

  1. # include
  2. # include
  3. # include
  4. # define n 10
  5. # define m 5
  6. int main ()
  7. {
  8. int a[n][m],b[n],max,sedlt;
  9. clrscr ();
  10. randomize();
  11. printf ("\n Целочисленная матрица A[%i][%i] сформированные случайными числами \n диапазона от -150 до 150.\n",n,m);
  12. for (int i=0;i
  13. {
  14. for (int j=0;i
  15. {
  16. a[i]=random(301)-150;
  17. printf ("%6i",a[i]);
  18. }
  19. puts(" ");
  20. }
  21. int t;
  22. printf ("\n Введите номер строки матрицы для ее умножения ее на значение 'седловой' точки: ");
  23. scanf ("%i",&t);
  24. for (int i=0;i
  25. {
  26. max=a[i][0];
  27. for (int j=1;j
  28. if (a[i][j]>max)
  29. max=a[i][j];
  30. b[i]=max;
  31. }
  32. sedlt=b[0];
  33. for (int i=1;i
  34. if (b[i]
  35. sedlt=b[i];
  36. for (int j=0;j
  37. a[t][j]*=sedlt;
  38. printf ("\n Получена матрица A[%i][%i]. \n",n,m);
  39. for (int i=0;i
  40. {
  41. for (int j=0;j
  42. printf ("%6i",a[i][j]);
  43. puts (" ");
  44. }
  45. getch();
  46. }

ПРЕОБРАЗОВАНИЕ МАТРИЦЫ В ОДНОМЕРНЫЙ МАССИВ.

Обработка одномерных статических массивов осуществляется быстрее, чем двумерных того же размера, что часто требует выполнения указанного преобразования. Требуется переслать элементы матрицы n*m в одномерный массив того же размера по строкам с сохранением порядка следования элементов. Для этого нужно соответствующим образом согласовать индексы исходной матрицы А и формируемого одномерного массива Х.

Программа:

  1. # include
  2. # include
  3. # include
  4. # define n 3
  5. # define m 4
  6. int main ()
  7. {
  8. int a[n][m],x[n*m];
  9. clrscr ();
  10. randomize();
  11. printf ("\n Целочисленная матрица A[%i][%i] сформированные случайными числами \n диапазона от -50 до 50.\n",n,m);
  12. for (int i=0;i
  13. {
  14. for (int j=0;i
  15. {
  16. a[i]=random(101)-50;
  17. printf ("%6i",a[i]);
  18. }
  19. puts(" ");
  20. }
  21. for (int i=0;i
  22. for (int j=0;j
  23. x[i*m+j]=a[i][j];
  24. printf ("\n Получен массив X[%i]. \n",n*m);
  25. for (int i=0;i
  26. printf ("%6i",x[i]);
  27. getch();
  28. }

Как видите, в этом уроке я отошел от своего обычного стиля изложения, это сделано потому, что я считаю, что с для работы с матрицами необходимо запомнить несколько алгоритмов,которые я тут и привел.Надеюсь мои уроки не стали менее понятными.Желаю вам успеха в работе с матрицами.

Описание функции(функция заданная пользователем)

Описание и определение функций.

Описание функции устанавливает такие атрибуты функции, как имя, ожидемые аргументы и тип возвращаемого значения. Определение функции определяет ее реальное содержимое.

-Описание функции.

Описание функции состоит из типа возвращаемого значения, имени функции и необязательного списка аргументов. Заголовок функции состоит из типа данных, возвращаемых функций, за которым следует имя функции и список формальных параметров. Тело функции состоит из локальных описаний и составного оператора (или "блока"), который определяет, что делает данная функция.

-Типы возвращаемых значений.

Тип возвращаемого значения определяет, какой тип данных возвращается данной функции. Возвращаемым типом может быть любой тип- обычной структуры или смесь, исключая массив или функцию. Тип void означает, что функция не возвращает никакого значения.

Стандартный тип возвращаемого значения-это int. Вам не следует писать функции, возвращающие структуру или смесь. Огромный размер таких данных замедляет выполнение программы.

-Список типов аргументов и прототипы функций.

Список типов аргументов в описании функции определяет для данной функции список типов аргументов. Применение таких списков типов аргументов известно также как "задание прототипов функций". Список типов аргументов содержит один или более наименований типов, определяющих типы, ожидаемые для каждого аргумента. Используйте также тип void для обозначения того, что данная функция не принимает аргументов. -Формальные параметры.

Формальные параметры в описании функции являются переменными, которые получают значения аргументов, переданные функции. -Передача аргументов функции.

Все аргументы (за исключением массивов) передаются значением. То есть функции передается копия данного аргумента (а не его адрес). В результате, СИ-функция не изменяет содержимое переданной ей переменной. Изменяется это правило передачи параметра значением только когда аргумент, передаваемый функции-это адрес. В этом случае, указатель косвенно разрешает функции изменять содержимое переменной с данным адресом.

Пример: Описание и определение функции.

#include <stdio.h> /* описания стандартных функций */

#include <stdlib.h> /* содержит описание прототипа atof */

typedef char *string;

main()

{

string ascii_number;

float float_number;

ascii_number = "-6.02E-23";

printf ("string: %s\n", ascii_number);

/* следующая строка генерирует предупреждающее сообщение компиля-

тора */

float_number = atof(); /* слишком мало аргументов */

float_number = atoy (ascii number); /* корректный вызов */

printf ("number: %e'n", float_number);

}

Приведенная выше СИ-программа показывает, как использлвание прототипа функции может предупредить вас о некорректном вызове функции. Функция atof преобразует символьную строку в число с плавающей точкой. Прототип функции содержащийся в файле stdlib.h определяет, что функция принимает один аргумент.

Работа с нитями.основные функции OpenMP







Что вызывает тренды на фондовых и товарных рынках Объяснение теории грузового поезда Первые 17 лет моих рыночных исследований сводились к попыткам вычис­лить, когда этот...

Система охраняемых территорий в США Изучение особо охраняемых природных территорий(ООПТ) США представляет особый интерес по многим причинам...

ЧТО ПРОИСХОДИТ, КОГДА МЫ ССОРИМСЯ Не понимая различий, существующих между мужчинами и женщинами, очень легко довести дело до ссоры...

ЧТО ТАКОЕ УВЕРЕННОЕ ПОВЕДЕНИЕ В МЕЖЛИЧНОСТНЫХ ОТНОШЕНИЯХ? Исторически существует три основных модели различий, существующих между...





Не нашли то, что искали? Воспользуйтесь поиском гугл на сайте:


©2015- 2024 zdamsam.ru Размещенные материалы защищены законодательством РФ.