 
        
        Лабораторная работа №3
.docМинистерство образования РФ
Санкт-Петербургский государственный электротехнический университет
“ЛЭТИ”
Кафедра Вычислительной Техники
Лабораторная работа № 3
По дисциплине «Программирование»
«Двумерные массивы в языке Си»
Выполнил: Власюк А. В.
Преподаватель:
Сискович Т. И.
Факультет: КТИ
Группа: 3371
Санкт-Петербург
2003
Цель работы:
В ходе выполнения лабораторной работы студент должен научиться применять на практике двумерные массивы, освоить элементарные методы обработки и сортировки двумерных массивов.
Задание на лабораторную работу:
Написать программу, выполняющую (по желанию пользователя) ввод матрицы размером (n x m), контрольный вывод исходной матрицы и формирование новой из тех столбцов исходной, в которых значения больше сумм их индексов. Вывести результат в виде двумерной матрицы.
Контрольный пример:
| Длина исходного массива | Высота исходного массива | Элементы исходного массива | 
 Результат | 
| 0 | 0 | отсутствуют | Неверные значения исходных параметров | 
| 2 | 2 | 
 -1 2 | Нет матрицы,удовлетворяющей данному условию | 
| 2 | 2 | 
 1 3 | 2 3 | 
| 2 | 3 | 
 | 
 | 
| 3 | 3 | 0 -2 3 2 3 4 3 4 5 | 3 4 5 | 
Описание данных:
| переменная | тип | описание | 
| n | int | количество строк исходного массива | 
| m | int | количество столбцов исходного массива | 
| k | int | количество столбцов нового массива | 
| i | int | номер строки | 
| j | int | номер столбца | 
| a | float | исходный массив | 
| b | float | новый массив | 
| t | int | вспомогательная переменная | 
| s | char | символ управления циклом | 
Текст программы:
#include<conio.h>
#include<stdio.h>
void main (void)
{
clrscr();
float a[50][50],b[50][50];
int i,j,n,m,k,c,t;
char s;
printf("\n\n\n\n\n Программа предназначенная для создания матрицы, ");
printf(" а также для формирования новой матрицы, ");
printf(" удовлетворяющей заданному условию ");
printf(" (значения в столбцах больше сумм их индексов) ");
getch();
clrscr();
//Ввод размеров массива
do
{
do
{
clrscr();
printf("\n\n\n\n\n Введите размер матрицы.\n ");
printf(" (n-количество строк,m-количество столбцов)");
printf("\nn= ");
scanf("%d",&n);
printf("m= ");
scanf("%d",&m);
if (n<=0||m<=0||n>50||m>50)
{
printf("\n Внимание!Неверные значения исходных параметров.");
printf("\n (Нажмите любую клавишу для продолжения) ");
getch();
clrscr();
}
printf("\n \n");
printf(" Изменить размеры матрицы? (y/n)");
s=getche();
}
while(s=='y'||s=='Y');
//Ввод массива
do
{
clrscr();
printf("\nВведите значения массива:\n");
for(i=0;i<n;i++)
for(j=0;j<m;j++)
{
scanf("%f",&a[i][j]);
}
//Вывод массива
printf("\n Контрольный вывод матрицы\n\n\n");
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
printf("a[%d][%d]=%.2f ",i,j,a[i][j]);
}
printf("\n\n");
}
printf(" \n Изменить введённую матрицу? (y/n) ");
s=getch();
}
while(s=='y'||s=='Y');
//Формирование нового массива
k=0;
for(j=0;j<m;j++)
{
for(i=0,t=0;i<n&&!t;i++)
{
if (a[i][j]<=(j+i)) t++; //условие отбора
}
if (!t)
{
for(i=0;i<n;i++)
{
b[i][k]=a[i][j]; //запись в новый массив
}
k++;
}
}
//Вывод нового массива
clrscr();
printf("\n\n\n Вывод исходной матрицы\n\n");
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
printf(" a[%d][%d]=%.2f ",i,j,a[i][j]);
}
printf("\n");
}
printf("\n\n\n Вывод конечной матрицы\n\n");
if(k>0)
{
for(i=0;i<n;i++)
{
for(j=0;j<k;j++)
{
printf(" b[%d][%d]=%.2f ",i,j,b[i][j]);
}
printf("\n");
}
}
else
{
printf(" Нет матрицы,удовлетворяющей данному условию");
}
printf("\n\n Продолжить работу? (y/n) ");
s=getch();
printf("\n \n");
clrscr();
}
while(s=='y'||s=='Y');
}
Б

 лок
схема:
лок
схема:

 
	нет
	да
 
 
 
 
 
 
	нет
	да
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
	да
 
	нет
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
	да
 
	нет
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
	да
 
	нет
 
 
 
 
 
 
 
 
 
 
 
 
	да
	нет
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

 
	да
 
	нет
 
 
 
 
 
 
 
 
 
 
 
 
	нет
 
 
 
 
 
 
 
	да
 
 
 
 
 
 
 
 
 
	да
 
 
 
 
 
 
 
 
 
 
 
 
 
 
	нет
 
 
 
	нет
	да
 
 
 
 
 
 
 
	нет
 
 
 
 
 
 
	да
 
 
 
 
 
 
 
 
 
 
	нет
 
 
 
 
 
	Пояснения:
	Сообщение
	1:
	Программа
	предназначенная
	для создания матрицы, 
	
	                         а
	также для формирования
	новой матрицы,     
	
	                        
	удовлетворяющей
	заданному условию        
	
	                       
	 (значения
	в столбцах больше сумм их индексов)
	Сообщение
	2:
	Внимание!Неверные
	значения
	исходных параметров.
	                       
	(Нажмите
	любую клавишу для продолжения)
	Сообщение
	3:
	Нет матрицы,удовлетворяющей данному
	условию
	Условие
	1: 
	     n<=0||m<=0||n>50||m>50
	Условие
	2:      
	Изменить размеры матрицы? (y/n)
	Условие
	3:
	      Изменить введённую матрицу?  (y/n)
	Условие
	4:
	      Продолжить работу? (y/n)
	
	
	
	
 
 
 
	да
 
	нет
 
 
 
 
 
 
 
 
 
 
 
 
	да
	нет
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
	да
 
 
	нет
 
 
 
	да
 
	нет
 
 
 
 
 
 
 
 
 
 
 
 
	да
	нет
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
	да
	нет
 
 
 
 
 
 
 
 
Результаты решения задачи:
Все полученные ответы совпадают с контрольными примерами.
Выводы:
Данная лабораторная работа позволяет освоить двумерные массивы и обучиться методам их обработки.
