Лабораторная работа №5. Матрицы и указатели


Пример. Дана целочисленная матрица размером 8 на 8. Найти: а) такие k



бет4/5
Дата07.02.2022
өлшемі95,5 Kb.
#86122
түріЛабораторная работа
1   2   3   4   5
Байланысты:
Двумерные массивы

Пример. Дана целочисленная матрица размером 8 на 8. Найти:
а) такие k, что k-я строка матрицы совпадает с k-м столбцом;
б) сумму элементов в тех строках, которые содержат хотя бы один отрицательный элемент.


Пример решения задачи:
#include
#include
#define m 8
#define n 8
void main()
{ int matrix[n][m]; /* Объявляем матрицу nхm */
int i, j, p; /* Счетчик и признак совпадения */
int *mat; /* Объявляем указатель на матрицу matrix[n][m] */
mat=&matrix[0][0]; /* указателю mat присваиваем адрес нулевого элемента матрицы matrix[n][m] */
/* генератором случайных чисел заполняем матрицу */
for (i = 0; i < m; i++)
for (j = 0; j < n; j++)
{*mat=rand()%10-1;
mat++;
}
mat-= n*m; /* указателю mat присваиваем первоначальный адрес */
printf("\n Сгенерированная матрица имеет вид:\n ");
/* вывод матрицы */
for (i = 0; i < m; i++)
{ for (j = 0; j < n; j++)
{printf(“%d “,*mat);
mat++;
}
printf("\n ");
}
mat-= n*m;
printf("\n \t\t\tРЕЗУЛЬТАТ ПЕРВОЙ ЧАСТИ ЗАДАНИЯ");
printf("\n Совпавшие строки и столбцы ");
for (i = 0; i < m; i++)
{ p=1;
for (j = 0; j < n; j++)
{ /* Сравниваем элемент i-й строки j-го столбца с элементом j-й строки i-го столбца. В случае их несоответствия присваиваем p значение нуль и прерываем цикл по j конструкцией break */
if (*(mat+i * m + j) != *(mat+j * m + i))
{ p=0;
break;
}
}
/* В случае p=1 выводим на экран номер соответствующей строки */
if (p==1) printf("\n k = %d ", i);
}
if (p==0) printf("\n нет одинаковых строк и столбцов ");
printf("\n \t\t\tРЕЗУЛЬТАТ ВТОРОЙ ЧАСТИ ЗАДАНИЯ");
mat=&matrix[0][0];
int p1, iSumm; /* признак нахождение отрицательного элемента и переменная для хранения суммы */
printf("\n\n");
for (i = 0; i < m; i++)
{
/* Присваеваем переменным исходные значения */
iSumm = 0;
p1=0;
for (j = 0; j < n; j++)
{ /* Суммируем значения элементов i-й строки */
iSumm += *mat;
/* При нахождение хотя бы одного отрицательного элемента присваиваем p1=1, обозначающее необходимость вывода Суммы на экран */
if (*mat < 0) p1=1; mat++;
}
/* В случае нахождения в строке хотя бы одного отрицательного элемента выводим на экран сумму элементов i-й строки */
if (p1==1) printf("Сумма элементов строки #%d = %d\n", i+1, iSumm);
}
system("PAUSE");/* задержка экрана*/
return 0;
}




Достарыңызбен бөлісу:
1   2   3   4   5




©engime.org 2024
әкімшілігінің қараңыз

    Басты бет