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

Лабораторная работа №3

.doc
Скачиваний:
11
Добавлен:
01.05.2014
Размер:
453.12 Кб
Скачать

Министерство образования РФ

Санкт-Петербургский государственный электротехнический университет

“ЛЭТИ”

Кафедра Вычислительной Техники

Лабораторная работа № 3

По дисциплине «Программирование»

«Двумерные массивы в языке Си»

Выполнил: Власюк А. В.

Преподаватель:

Сискович Т. И.

Факультет: КТИ

Группа: 3371

Санкт-Петербург

2003

Цель работы:

В ходе выполнения лабораторной работы студент должен научиться применять на практике двумерные массивы, освоить элементарные методы обработки и сортировки двумерных массивов.

Задание на лабораторную работу:

Написать программу, выполняющую (по желанию пользователя) ввод матрицы размером (n x m), контрольный вывод исходной матрицы и формирование новой из тех столбцов исходной, в которых значения больше сумм их индексов. Вывести результат в виде двумерной матрицы.

Контрольный пример:

Длина исходного массива

Высота исходного массива

Элементы исходного массива

Результат

0

0

отсутствуют

Неверные значения исходных параметров

2

2

  1. 1

-1 2

Нет матрицы,удовлетворяющей

данному условию

2

2

  1. 2

1 3

2

3

2

3

  1. 2 2

  2. 5 6

  1. 2

  2. 5

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)

да

нет

да

нет

да

нет

да

нет

да

нет

да

нет

Результаты решения задачи:

Все полученные ответы совпадают с контрольными примерами.

Выводы:

Данная лабораторная работа позволяет освоить двумерные массивы и обучиться методам их обработки.