ОАиП 2 Семестр / 6 матрицы
.doc
Задана матрица размером NxM. Определить количество элементов, не принадлежащих промежутку (A,B) и расположенных в столбцах с нечетными номерами. Массив объявить, как статический. |
|
|
Таблица соответствия переменных:
-
Переменные в задаче
Имя на языке Си
Тип
Комментарий
Параметр цикла
i
Int
Исходное данное
Кол-во строк
n
int
Исходное данное
Параметр цикла
j
Int
Исходное данное
Кол-во столбцов
m
int
Исходное данное
Двумерный массив
C[n][m]
Float
Исходное данное
Начало промежутка
A
Float
Исходное данное
Конец промежутка
B
float
Исходное данное
Кол-во эл-в, не принадлежащих промежутку и расположенные в столбцах с нечётными номерами
kol
Int
Результат
Текст программы на языке Си:
\
#include <stdio.h>
#include <locale.h>
main()
{
setlocale (LC_ALL, "Russian");
int i,j,n,m,kol;
printf("Введите количество строк двумерного массива: ");
scanf("%d",&n);
printf("Введите количество столбцов двумерного масиива: ");
scanf("%d",&m);
float C[n][m],A,B;
kol=0;
printf("Введите А: ");
scanf("%f",&A);
printf("Введите В: ");
scanf ("%f",&B);
printf("Введите двумерный массив:\n");
for (i=0; i<n; i++)
for (j=0; j<m; j++)
scanf("%f",&C[i][j]);
printf("Вы ввели двумерный массив:\n");
for (i=0; i<n; i++)
{
for (j=0; j<m; j++)
printf("%5.0f ",C[i][j]);
printf("\n");
}
for (j=0; j<m; j=j+2)
for (i=0; i<n; i++)
if (C[i][j]<=A || C[i][j]>=B)
kol=kol+1;
printf("\nКоличество элементов, непринадлежащих промежутку (%.0f,%.0f) и расположенных в столбцах с нечетными номерами: %d",A,B,kol);
system(“pause”);
return(0);
}
Тест:
Исходные данные |
|||||
C[0][0]=1 |
C[0][1]=2 |
C[0][2]=5 |
C[0][3]=6 |
n=4 |
A=2 |
C[1][0]=9 |
C[1][1]=9 |
C[1][2]=10 |
C[1][3]=-5 |
||
C[2][0]=1 |
C[2][1]=2 |
C[2][2]=3 |
C[2][3]=4 |
m=4 |
B=7 |
C[3][0]=5 |
C[3][1]=7 |
C[3][2]=8 |
C[3][3]=9 |
||
Результат |
|||||
kol=5 |
Р езультат выполнения программы:
Задание 2. Выполнение вычислений в строках и столбцах матрицы.
В каждом столбце матрицы найти минимальный элемент и вычислить сумму этих элементов. Массив объявить как динамический. |
Ход Работы:
№2
Графическая схема программы:
Т аблица соответствия переменных:
-
Переменные в задаче
Имя на языке Си
Тип
Комментарий
Параметр цикла
i
Int
Исходное данное
Параметр цикла
j
int
Исходное данное
Кол-во строк
n
int
Исходное данное
Кол-во столбцов
m
int
Исходное данное
Сумма минимальных элементов каждого столбца
sum
Float
Результат
Минимальный эл-т столбца
min
Float
Промежуточная переменная
Двумерный массив
a[n][m]
float
Исходное данное
Текст программы на языке Си:
#include <stdio.h>
#include <conio.h>
#include <locale.h>
main()
{
setlocale(LC_ALL, "Russian");
int i,j,n,m;
float sum, min;
printf("Введите n - кол-во строк и m - кол-во столбцов двумерного массива:\n");
scanf("%d %d",&n, &m);
sum=0;
float **a=new float *[n];
for (i=0; i<n; i++)
a[i]=new float[m];
printf("Введите двумерный массив:\n");
for (i=0; i<n; i++)
for(j=0; j<m; j++)
scanf("%f", &a[i][j]);
for (j=0; j<m; j++)
{
min=a[0][j];
for(i=1; i<n; i++)
{
if (min>a[i][j])
min=a[i][j];
}
sum=sum+min;
}
printf("Вы ввели двумерный массив:\n");
for (i=0; i<n; i++)
{
for (j=0; j<m; j++)
printf("%5.0f ",a[i][j]);
printf("\n");
}
printf("Сумма минимальных элементов каждого столбца: %.0f",sum);
for(i=0; i<n; i++)
delete[]a[i];
delete[]a;
_getch();
return(0);
}
Тест:
Исходные данные |
||||
a[0][0]=1 |
a[0][1]=2 |
a[0][2]=5 |
a[0][3]=6 |
n=4 |
a[1][0]=9 |
a[1][1]=9 |
a[1][2]=10 |
a[1][3]=-5 |
|
a[2][0]=1 |
a[2][1]=2 |
a[2][2]=3 |
a[2][3]=4 |
m=4 |
a[3][0]=5 |
a[3][1]=7 |
a[3][2]=8 |
a[3][3]=9 |
|
Результат |
||||
sum=1 |
Результат выполнения программы:
Массив объявить как статический.
Вычислить произведение положительных элементов, рас положенных в столбцах с нечетными номерами. |
Таблица соответствия переменных
Имя в задаче |
Имя в программе |
Тип |
Комментарий |
|
a |
float[10][10] |
Заданная матрица |
|
i,j |
int |
Параметры цикла, индексы элементов матрицы |
N, M |
n, m |
int |
Количество строк и столбцов матрицы |
|
p |
float |
Произведение положительных элементов в нечетных столбцах |
|
k |
int |
Количество положительных элементов в нечетных столбцах |
Листинг программы
#include <iostream>
#include <conio.h>
#include <stdlib.h>
main ()
{
setlocale(LC_ALL, "Russian");
float A[10][10],p;
int n,m,i,j,k;
puts("Введите кол. строк и столбцов:");
scanf("%d %d",&n,&m);
for(i=0;i<n;i++)
for(j=0;j<m;j++)
{
system("cls");
printf("Введите A[%d][%d]=",i,j);
scanf("%f",&A[i][j]);
}
system("cls");
puts("Матрица A");
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
printf("%6.2f ",A[i][j]);
printf("\n");
}
k=0;p=1;
for(i=0;i<n;i++)
for(j=0;j<m;j=j+2)
if(A[i][j]>0)
{
p=p*A[i][j];
k++;
}
if (k==0)
printf("Нет положительных элементов в нечетных столбцах!");
else
printf("Произведение равно: %6.2f\n",p);
fflush(stdin);
getchar();
return(0);
}
Тест
Графическая схема алгоритма
Выполнение вычислений в строках и столбцах матрицы.
Массив объявить как динамический.
|
Заменить в матрице элементы предпоследней строки на количество положительных элементов соответствующих столбцов. |
Таблица соответствия переменных
Имя в задаче |
Имя в программе |
Тип |
Комментарий |
|
**А,s |
int |
Указатель на матрицу - указатель на массив указателей, каждый элемент которого является указателем на строку матрицы |
|
i,j |
int |
Параметры цикла, индексы элементов матрицы |
N, M |
n, m |
int |
Количество строк и столбцов матрицы |
|
k |
int |
Количество положительных элементов |
Листинг программы
#include <iostream>
#include <conio.h>
#include <stdlib.h>
main()
{
setlocale(LC_ALL, "Russian");
int **A,s;
int n,m,i,j,k;
puts("Введите кол. строк и столбцов:");
scanf("%d %d",&n,&m);
A=new int*[n];
for(i=0;i<n;i++)
{
A[i]=new int[m];
for(j=0;j<m;j++)
{
system("cls");
printf ("Введите A[%d][%d]=",i+1,j+1);
scanf ("%d",&A[i][j]);
}
}
system("cls");
puts("Матрица A:");
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
printf("%3d",A[i][j]);
printf("\n");
}
for(j=0;j<m;j++)
{
k=0;
for(i=0;i<n;i++)
if(A[i][j]>0)
k=k++;
A[n-2][j]=k;
}
puts("Новая матрица:");
for (i=0;i<n;i++)
{
for (j=0;j<m;j++)
printf("%3d",A[i][j]);
printf("\n");
}
fflush(stdin);
getchar();
return(0);
}
Тест
Графическая схема алгоритма