Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
eto_gotovyy_otschet_33.doc
Скачиваний:
2
Добавлен:
14.04.2019
Размер:
1.79 Mб
Скачать

3. Текст программы

Текст программы из файла исходного кода приведён ниже.

#include "stdafx.h"

#include "locale.h"

#include "conio.h"

#include "stdlib.h"

#include "time.h"

#include "Egork.h"

int _tmain(int argc, _TCHAR* argv[])

{

setlocale(LC_ALL, "Russian");

int **A, N, M, m;

bool flag=0;

do{

system("cls");

printf("\nМЕНЮ"

"\n1 - Ввод данных в прграмму"

"\n2 - Решение"

"\n3 - О программе"

"\n4 - Выход из программы"

"\n Введите номер пункта меню: ");

scanf("%i", &m);

switch(m)

{

case 1:

M=input('M',&M);

N=input('N',&N);

A=memory(M,M);

input_elements(A,M,N);

output(A,M,N);

_getch();

flag=1;

break;

case 2:if(flag==0)

{

printf ("Введите исходные данные в пункте 1\n");

}

else

{

output(A,M,N);

task_1(A, M, N);

task_2(A,M,N);

_getch();

break;

}

case 3:

text();

_getch();

break;

case 4: break;

default: printf ("\nТакого пункта в меню нет"); _getch(); break;

}

}while(m!=4);

return 0;

}

с заголовочным файлом "Egork.h"

void text(void)

{

printf("\nАвтор программы:Лобастов Егор. Группа ИНБ-11.\n\n");

printf("*******************************************************************\n");

printf("*******************************************************************\n");

printf("** **\n");

printf("** ПРОГРАММА \"ДВУМЕРНЫЙ МАССИВ\" **\n");

printf("** **\n");

printf("*******************************************************************\n");

printf("*******************************************************************\n");

printf("Вариант №12\n\n"

"Дана целочисленная прямоугольная матрица.\n"

"1.) Уплотнить заданную матрицу, удаляя из нее строки и столбцы, заполненные нулями;\n"

"2.) Найти номер первой из строк, содержащих положительный элемент.\n\n");

}

int input(char c, int *a)

{

do{

printf("Введите количество %c (1<%c<=100): ", c, c);

scanf("%d", a);

}while((*a>100)||(*a<2));

return *a;

}

int **memory(int M, int N)

{

int **A, i;

A=(int **)calloc(M, sizeof(int *));

for(i=0; i<M; i++)

A[i]=(int *)calloc(N, sizeof(int));

return A;

}

int rnd( int range_min, int range_max )

{

return (double)rand() / (RAND_MAX + 1) * (range_max - range_min) + range_min;

}

void input_elements(int **A, int M, int N)

{

int t, i, j;

do{

printf("Заполнение массива: \n"

" 1 - ввод с клавиатуры\n"

" 2 - заполнение случайными числами\n"

" Ваш выбор : ");

scanf("%d", &t);

switch(m){

case 1:

for(i=0; i<M; i++)

for(j=0; j<N; j++)

{

printf("Введите A[%d][%d]",i,j);

scanf("%d", &A[i][j]);

}

break;

case 2:

for(i=0; i<M; i++)

for(j=0; j<N; j++)

{

A[i][j]=rnd(-10, 10 );

}

break;

default: printf("\nТакого действия нет"); break;

}

}while((t!=1)&&(t!=2));

}

void output(int **A, int M, int N)

{

int i, j;

for(i=0; i<M; i++)

{

for(j=0; j<N; j++) printf("%5d ",A[i][j]);

printf("\n");

}

}

void task_1(int **A, int M, int N)

{

int i,j,flag,k;

for(i=0; i<M; i++)

{

flag=1;

for(j=0; j<N; j++)

if (A[i][j] != 0){

flag=0; break;

}

if(flag){

for( k = i; k < (M-1); k++)

for( j = 0; j < N; j++)

A[k][j] = A[k+1][j];

--i;

--M;}

}

for( j = 0; j < N; j++)

{

flag= 1;

for(i = 0; i < M; i++)

if(A[i][j] != 0){

flag = 0;break;

}

if(flag){

for( k = j; k < (N-1); k++)

for( i = 0; i < M; i++)

A[i][k] = A[i][k+1];

--j;

--N;}

}

printf("\nПреобразованная матрица:\n");

for(i=0; i<M; i++)

{

for(j=0; j<N; j++) printf("%5d ",A[i][j]);

printf("\n");

}

}

void task_2(int **A, int M, int N)

{

int i,j,tmp;

for (j=0; j<N; j++)

for (i=0; i<M; i++)

{

if (A[i][j]>=0)

{

tmp=i+1;

break;

}

}

printf( "Первый положительный элемент находится ");

printf("%d",tmp);

printf( " строке");

}

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]