Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Объявления двумерного массива выполняется аналогично одномерному вместе с объявлением всех переменных программы.
<тип> name [n][m]; где: n – количество строк в массиве, целое число. m – количество элементов в строке массива, целое число. Например int b[5][6], q[10][15]; float y[7][5];
Обращение к элементу матрицы выполняется через индексы элементов. a[0][0] a[1][2] a[i][j] a[9][3] y[0][0] y[0][1]... y[5][7] В памяти многомерные массивы располагаются линейно так, что в первую очередь меняется крайний правый индекс, затем индекс слева и т.д. Начальные индексы у элементов многомерных массивов равны 0. Индексы для элементов массива d[3][4]:
d[0][0] d[0][1] d[0][2] d[0][3] d[1][0] d[1][1] d[1][2] d[1][3] d[2][0] d[2][1] d[2][2] d[2][3]
4.4.2 Инициализация многомерных массивов:
int t[3][4] = { {2, 7, -1, -10}, {5, 12, 18, -3}, {11, -8, 25, 4} };
Для работы с многомерными массивами чаще всего используются сложные циклы for. Количество операторов цикла for равна размерности массива. Параметрами этих циклов является индексы элементов массива.
4.4.3 Ввод значений элементов матрицы
• С помощью клавиатуры for(i=0; i<n; i++) for(j=0; j<m; j++) scanf(“%d”, &a[i][j]);
• С помощью датчика случайных чисел for(i=0; i<n; i++) for(j=0; j<m; j++) a[i][j]= 10+0.001*rand();
4.4.4 Вывод элементов матрицы на печать
for(i=0; i<n; i++) { printf(“\n”); for(j=0; j<m; j++) printf(“ %6.2f ”, a[i][j]); }
Пример 4.4. Задана матрица действительных чисел, размером 10х9. Найти сумму всех отрицательных элементов. Результат – простая переменная
Int main() { float a[10][9], s; int i,j; for (i=0;i<10;i++) { printf("\n"); for (j=0; j<9; j++) { a[i][j]=-5+0.001*rand(); printf("%6.1f",a[i][j]); } } s=0; for (i=0; i<10; i++) for(j=0; j<9; j++) if(a[i][j]<0) s=s+a[i][j]; printf("\n сумма= %6.2f",s); return 0; }
Пример 4.5. Задан массив A размером 10х9. Найти суммы положительных элементов в каждой строке. Результат - одномерный массив.
Текст програми void main() { float a[10][9], s[10]; int i,j; for (i=0;i<10;i++) { printf("\n"); for (j=0; j<9; j++) { a[i][j]=-5+0.001*rand(); printf("%6.1f",a[i][j]); } } printf("\n"); printf("\n"); for (i=0; i<10; i++) { s[i]=0; for(j=0; j<9; j++) if(a[i][j]>0) s[i]=s[i]+a[i][j]; } for(i=0; i<10; i++) printf(" %5.0f",s[i]); }
Приклад 4.6. В матрице размером 8х8 найти значение и положение максимального элемента, лежащего выше главной диагонали
Текст програми void main() { float a[8][8],max;
int i,j,nstr,nstb; for (i=0;i<10;i++) { printf("\n"); for (j=0; j<9; j++) { a[i][j]=-5+0.001*rand(); printf("%6.1f",a[i][j]); } } printf("\n"); max=-1000; for (i=0; i<10; i++) { for(j=i+1; j<9; j++) if(a[i][j]>max){max=a[i][j];nstr=i; nstb=j;} }
printf("%d %d %5.1f",nstr, nstb, max); }
Контрольные вопросы для самопроверки 1. Как осуществляется описание двумерных массивов? 2. Как осуществляется запись элементов двумерных массивов? 3. Запишите фрагмент программы, который одновременно формирует матрицу с помощью функций формирования случайных чисел и выводит ее значение на экран для ввода элементов массива. 4. Запишите фрагмент программы, который вычисляет сумму элементов матрицы. 5. Запишите фрагмент программы, который находит минимальный элемент в матрице. 6. Запишите фрагмент программы, который находит минимальный элемент в каждой строке двумерного массива. МЕТОДЫ СОРТИРОВОК Упорядоченным (отсортированным) называется массив, значения элементов которого отвечают следующему условию: a 1 ≤ a 2 ≤ a 3 ≤... ≤ ai ≤ ai +1 ≤... ≤ an -1 ≤ an (по возрастанию) или a 1 ≥ a 2 ≥ a 3 ≥... ≥ ai ≥ ai +1 ≥... ≥ an -1 ≥ an (по убыванию) Существует целый ряд методов, позволяющих отсортировать имеющийся массив. Сортировка выбором. Найти элемент массива, имеющий наименьшее значение в исходном массиве. Переставить его с первым элементом. Затем проделать то же самое, начав со второго элемента, затем с третьего и т.д.
Алгоритм выглядит следующим образом
Сортировка обменами. Последовательно сравниваются два соседних элемента. Если а i <а i +1. никаких действий не предпринимается. Если а i >а i +1. меняются местами а i и а i +1. В результате одного прохода вдоль массива самый большой элемент окажется на последнем месте. Возобновляется просмотр с начала уменьшая на единицу количество просматриваемых элементов.
Так до тех пор, когда элементы будут упорядочены
Алгоритм выглядит следующим образом
Текст программы Void main () { float a[30],dop; int n,i,k, f=1;
n=10; printf("\n исходный массив\n ");
for (i=0;i<n;i++) { a[i]=0.001*rand(); printf("%5.1f",a[i]); } while(f==1) { f=0; for (i=0;i<n-1;i++) if (a[i]>a[i+1]) {dop=a[i]; a[i]=a[i+1]; a[i+1]=dop; f=1; }
} printf("\n отсортированный массив\n ");
for (i=0;i<n;i++) printf("%5.1f",a[i]); }
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Последнее изменение этой страницы: 2021-04-04; просмотров: 52; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.216.32.116 (0.024 с.) |