Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ОАиП 2 Семестр / 6 матрицы

.doc
Скачиваний:
34
Добавлен:
21.03.2016
Размер:
507.39 Кб
Скачать

Задана матрица размером 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);

}

Тест

Графическая схема алгоритма

13

Соседние файлы в папке ОАиП 2 Семестр