Лабораторная работа №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)
да
нет
да
нет
да
нет
да
нет
да
нет
да
нет
Результаты решения задачи:
Все полученные ответы совпадают с контрольными примерами.
Выводы:
Данная лабораторная работа позволяет освоить двумерные массивы и обучиться методам их обработки.