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

ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ ВЯТСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ

Вечерне-заочный факультет

Функции

Отчет по лабораторной работе №8

по дисциплине

«Информатика»

Вариант 3

Выполнил:

студент гр. ИТ-11

Бибанаев В.А.

Проверил:

Малышева А.В.

Киров 2015

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

Тема: Функции

Цель: выработка умений решения на компьютере обработки функий на языке Си, отладка и тестирование программы.

Задание (вариант №3): В строках матриц нулевые элементы примкнуть к первым нулевым.

Выполнение задания:

1. Математическая постановка

Исходные данные:

a[10][10] – массив целых чисел на 10 чисел

a[i][j] = целое i-тое число строки j-ого столбца матрицы

Допустимые значения вводимых данных согласно условию задачи:

b = количество строк матрицы, не более 10, тип int

с = количество столбцов матрицы, не более 10, тип int

a[i][j] = i-тое число строки j-ого столбца матрицы, тип int

Результат:

a[i][j] = отсортировaнный массив a[i][j], тип int

2. Разработка алгоритма.

Нет

Да

Нет

Рис.1 Блок-схема функции main()

Рис.2 Блок-схема функции vvod(a,b,c)

Рис.3 Блок-схема функции vyvod(a,b,c)

Рис.4 Блок-схема функции sort(a,b,c)

3. Разработка программы

3.1Таблица идентификаторов

Имя переменной

Тип переменной

Пояснение

Спецификации формата

Алгоритм

Программа

Исходные данные

Ввод

Вывод

a[10][10]

a[10][10]

int

исходный массив данных

-

-

b

b

int

количество строк

%d

%d

с

с

int

количество столбцов

%d

%d

a[i][j]

a[i][j]

int

i-тое число строки j-ого столбца матрицы

%d%d

%d%d

ch

ch

char

символьная переменная

%s

%s

kol

kol

int

счетчик обработанных матриц

%d

%d

w

w

int

временная переменная

-

-

t

t

int

временная переменная

-

-

q

q

int

произведение чисел i-ой строки

-

-

k

k

int

временная переменная

-

-

Результаты

a[i][j]

a[i][j]

int

выходной массив

-

%d%d

3.2 Содержание результатов работы программы на экране

3.3 Текст программы:

#include<stdio.h>

#include<stdlib.h>

//---------------------------------------------------------------------------

// Лабораторная работа №8 Функции

// Выполнил: Бибанаев В.А., гр. ИТ-11 Вариант 3

//---------------------------------------------------------------------------

void vvod(int [][10], int&, int&); //прототип функции ввода

void vyvod(int [][10], int, int); //прототип функции вывода

void sort(int [][10], int, int); //прототип функции сортировки

main()

{

int a[10][10], b, c, kol=0, i, j; //переменные

char ch;

printf("Laboratornaia rabota 8 Funkcii \n");

printf("Vipolnil: Bibanaev V.A., gr.IT-11, Variant 3 \n");

printf("\n");

do

{

vvod(a, b, c); //вызов функции ввода

printf("Vasha matrica: \n");

printf("\n");

vyvod(a, b, c); //вызов функции вывода

sort(a, b, c); //вызов функции сортировки

printf("\n");

printf("Sort matrica: \n");

vyvod(a, b, c); //вызов функции вывода

kol++; //счетчик обработанных матриц

printf("\n");

printf("Prodolzhit? (y/n) ");

scanf("%s", &ch); //ввод символа y/n для продолжения или выхода

printf("\n");

}

while(ch=='y' || ch=='Y'); //цикл если нажата клавиша y

printf("Obrabotano matric: %d \n", kol); //вывод количества обработанных матриц

printf("End"); //для выхода нажать Ентер

getchar();

getchar();

}

void vvod(int a[][10], int&b, int&c) //функция ввода элементовматрицы

{

randomize(); //функция сброса рандом чисел

int i, j;

printf("Vvedite kolichestvo strok matricy: "); //ввод количества строк матрицы

scanf("%d", &b);

printf("\n");

printf("Vvedite kolichestvo stolbcov matricy: "); //ввод количества столбцов матрицы

scanf("%d", &c);

printf("\n");

for(i=0; i<b; i++) //циклы заполнения элементами матрицы

{

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

{

a[i][j]=random(5) - 2; //функция рандомного набора элементов

}

}

}

void vyvod(int a[][10], int b, int c) //функция вывода матрицы

{

int i, j;

for(i=0; i<b; i++) //циклы печати матрицы

{

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

{

printf("%4d", a[i][j]);

}

printf("\n");

}

}

void sort(int a[][10], int b, int c) //функция сортировки

{

int i, j, q, t, w=0;

for(i=0; i<b; i++) //циклы обработки матрицы

{

for(i=i, j=0; j<c; j++)

{

if(a[i][j]==0) //условие если a[i][j] равняется 0,

{

q=j; //то запоминаем номер столбца с 0 элементом

if(q!=0 && w>0) //если номер столбца не равен 0 и w>0,

{

t=a[i][w]; //то даем t значение ячейки a[i][w]

a[i][w]=0; //передаем значение ячейки a[i][w] равное 0

a[i][j]=t; //передаем значение ячейки a[i][j] значение t

w++; //увеличиваем счетчик на 1

}

else // иначе… (установка первого 0 элемента в начало строки)

{

w=1; //даем w=1, чтобы пройти по первому условию

t=a[i][0]; //даем t значение первого столбца строки i

a[i][0]=0; //даем первому элементу строки i значение 0

a[i][j]=t; //даем ячейке a[i][j] значение t

}

}

}

w=0; //обнуляем w для новой строки

}

}

Выводы:

Соседние файлы в папке лабы отчеты