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 для новой строки
}
}
Выводы: