 
        
        Informatika-laboratornye / лабы отчеты / лаб8
.docФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ ВЯТСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
Вечерне-заочный факультет
Функции
Отчет по лабораторной работе №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 для новой строки
}
}
Выводы:
