Разделы презентаций


Основы программирования ФИСТ 1 курс Власенко Олег Федосович

Содержание

Используем функции для упрощения программы

Слайды и текст этой презентации

Слайд 1Основы программирования ФИСТ 1 курс Власенко Олег Федосович
Лекция 11.2
Подпрограммы = функции Си.
Использование

функций для упрощения работы с 2D массивами.

Основы программирования ФИСТ 1 курс Власенко  Олег  ФедосовичЛекция 11.2Подпрограммы = функции Си.Использование функций для упрощения

Слайд 2Используем функции для упрощения программы

Используем функции для упрощения программы

Слайд 3Пример экзаменационной задачи
Ввести из файла массив из N строк по

M элементов каждая (1

файла.
Переставить столбцы, содержащие минимальный и максимальный элементы.
Получившийся массив вывести в консоль и в файл “out.txt”.
Использовать разделение на функции.

Пример входа:
4 3
0 2 3
1 3 4
2 -1 5
3 4 6

Пример выхода:
4 3
0 3 2
1 4 3
2 5 -1
3 6 4

Пример экзаменационной задачиВвести из файла массив из N строк по M элементов каждая (1

Слайд 4Входной файл

Входной файл

Слайд 5Решение без функций (1)
#define _CRT_SECURE_NO_WARNINGS
#include

void main()
{
int a[10][10];
int n, m;

//

Чтение из входного файла
FILE *fin = fopen("d:\\Temp\\in.txt", "rt");
if (fin ==

NULL) {
printf("File in3.txt is not found");
return;
}

fscanf(fin, "%d", &n);
fscanf(fin, "%d", &m);
for (int i = 0; i < n; i++)
for (int j = 0; j < m; j++)
fscanf(fin, "%d", &a[i][j]);
fclose(fin);
Решение без функций (1)#define _CRT_SECURE_NO_WARNINGS#include void main(){	int a[10][10];	int n, m;	// Чтение из входного файла	FILE *fin = fopen(

Слайд 6Решение без функций (2)
// вывод массива в консоль
for (int i

= 0; i < n; i++) {
for (int j =

0; j < m; j++) {
printf("%5d ", a[i][j]);
}
printf("\n");
}
printf("\n");

// поиск минимального
int min = a[0][0];
int iMin = 0;
int jMin = 0;
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
if (a[i][j] < min) {
min = a[i][j];
iMin = i;
jMin = j;
}
}
}
Решение без функций (2)	// вывод массива в консоль	for (int i = 0; i < n; i++) {		for

Слайд 7Решение без функций (3)
// поиск максимального
int max = a[0][0];
int iMax

= 0;
int jMax = 0;
for (int i = 0; i

< n; i++) {
for (int j = 0; j < m; j++) {
if (a[i][j] > max) {
max = a[i][j];
iMax = i;
jMax = j;
}
}
}

// перестановка столбцов с минимальным и максимальным элементами
for (int i = 0; i < n; i++) {
int tmp = a[i][jMin];
a[i][jMin] = a[i][jMax];
a[i][jMax] = tmp;
}
Решение без функций (3)	// поиск максимального	int max = a[0][0];	int iMax = 0;	int jMax = 0;	for (int i

Слайд 8Решение без функций (4)
// вывод массива в консоль
for (int i

= 0; i < n; i++) {
for (int j =

0; j < m; j++) {
printf("%5d ", a[i][j]);
}
printf("\n");
}
printf("\n");

// Запись в выходной файл
FILE *fout = fopen("d:\\Temp\\out.txt", "wt");
if (fout == NULL) {
printf("File out.txt cannot be created");
return;
}

for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++)
fprintf(fout, "%5d ", a[i][j]);
fprintf(fout, "\n");
}
fclose(fout);
Решение без функций (4)	// вывод массива в консоль	for (int i = 0; i < n; i++) {		for

Слайд 9Решение без функций (5)
{
int x;
scanf("%d", &x);
}
}

Решение без функций (5)	{		int x;		scanf(

Слайд 10Решение с глобальными переменными и функциями без параметров (общая идея)
int

a[10][10];
int n, m;
int jMin, jMax;

void main()
{
readArray();
printArray();
findMin();
findMax();
replaceColumns();
printArray();
writeArray();

{
int x;
scanf("%d",

&x);
}
}

Решение с глобальными переменными и функциями без параметров (общая идея)int a[10][10];int n, m;int jMin, jMax;…void main(){	readArray();	printArray();	findMin();	findMax();	replaceColumns();	printArray();	writeArray();

Слайд 11Решение с глобальными переменными (1)
#define _CRT_SECURE_NO_WARNINGS
#include

int a[10][10];
int n, m;
int

jMin, jMax;

// Чтение массива из входного файла
void readArray() {
FILE *fin

= fopen("d:\\Temp\\in.txt", "rt");
// !!!! Нет проверки на некорректное открытие файла!!!
fscanf(fin, "%d", &n);
fscanf(fin, "%d", &m);
for (int i = 0; i < n; i++)
for (int j = 0; j < m; j++)
fscanf(fin, "%d", &a[i][j]);
fclose(fin);
}

Решение с глобальными переменными (1)#define _CRT_SECURE_NO_WARNINGS#include int a[10][10];int n, m;int jMin, jMax;// Чтение массива из входного файлаvoid

Слайд 12Решение с глобальными переменными (2)
// вывод массива в консоль
void printArray()

{
for (int i = 0; i < n; i++) {
for

(int j = 0; j < m; j++) {
printf("%5d ", a[i][j]);
}
printf("\n");
}
printf("\n");
}
Решение с глобальными переменными (2)// вывод массива в консольvoid printArray() {	for (int i = 0; i <

Слайд 13Решение с глобальными переменными (3)
// поиск минимального
void findMin() {
int min

= a[0][0];
jMin = 0;
for (int i = 0; i

n; i++) {
for (int j = 0; j < m; j++) {
if (a[i][j] < min) {
min = a[i][j];
jMin = j;
}
}
}
}


Решение с глобальными переменными (3)// поиск минимальногоvoid findMin() {	int min = a[0][0];	jMin = 0;	for (int i =

Слайд 14Решение с глобальными переменными (4)
// поиск максимального
void findMax() {
int max

= a[0][0];
jMax = 0;
for (int i = 0; i

n; i++) {
for (int j = 0; j < m; j++) {
if (a[i][j] > max) {
max = a[i][j];
jMax = j;
}
}
}
}

// перестановка столбцов с минимальным и максимальным элементами
void replaceColumns() {
for (int i = 0; i < n; i++) {
int tmp = a[i][jMin];
a[i][jMin] = a[i][jMax];
a[i][jMax] = tmp;
}
}
Решение с глобальными переменными (4)// поиск максимальногоvoid findMax() {	int max = a[0][0];	jMax = 0;	for (int i =

Слайд 15Решение с глобальными переменными (5)
// Запись в выходной файл
void writeArray()

{
FILE *fout = fopen("d:\\Temp\\out.txt", "wt");
// !!!! Нет проверки на некорректное

открытие файла!!!
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++)
fprintf(fout, "%5d ", a[i][j]);
fprintf(fout, "\n");
}
fclose(fout);
}
Решение с глобальными переменными (5)// Запись в выходной файлvoid writeArray() {	FILE *fout = fopen(

Слайд 16Решение с глобальными переменными (6)
void main()
{
readArray();
printArray();
findMin();
findMax();
replaceColumns();
printArray();
writeArray();

{
int x;
scanf("%d",

&x);
}
}

Решение с глобальными переменными (6)void main(){	readArray();	printArray();	findMin();	findMax();	replaceColumns();	printArray();	writeArray();   	{		int x;		scanf(

Слайд 17Решение без глобальных переменных и с полноценными функциями (общая идея)
void

main()
{
int a[10][10];
int n, m;
int jMin, jMax;

readArray(a, &n, &m);
printArray(a, n, m);
jMin

= findJMin(a, n, m);
jMax = findJMax(a, n, m);
replaceColumns(a, n, m, jMin, jMax);
printArray(a, n, m);
writeArray(a, n, m);

{
int x;
scanf("%d", &x);
}
}
Решение без глобальных переменных и с полноценными функциями (общая идея)void main(){	int a[10][10];	int n, m;	int jMin, jMax;	readArray(a, &n,

Слайд 18Решение без глобальных переменных (1)
#define _CRT_SECURE_NO_WARNINGS
#include


// Чтение массива из

входного файла
void readArray(int a[10][10], int * pn, int * pm)

{
FILE *fin = fopen("d:\\Temp\\in.txt", "rt");
// !!!! Нет проверки на некорректное открытие файла!!!
fscanf(fin, "%d", pn);
fscanf(fin, "%d", pm);
for (int i = 0; i < *pn; i++)
for (int j = 0; j < *pm; j++)
fscanf(fin, "%d", &a[i][j]);

fclose(fin);
}
Решение без глобальных переменных (1)#define _CRT_SECURE_NO_WARNINGS#include // Чтение массива из входного файлаvoid readArray(int a[10][10], int * pn,

Слайд 19Решение без глобальных переменных (2)
// вывод массива в консоль
void printArray(int

a[10][10], int n, int m) {

for (int i = 0;

i < n; i++) {
for (int j = 0; j < m; j++) {
printf("%5d ", a[i][j]);
}
printf("\n");
}
printf("\n");
}

Решение без глобальных переменных (2)// вывод массива в консольvoid printArray(int a[10][10], int n, int m) {	for (int

Слайд 20Решение без глобальных переменных (3)
// поиск столбца минимального элемента
int findJMin(int

a[10][10], int n, int m) {
int min = a[0][0];
int jMin

= 0;
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
if (a[i][j] < min) {
min = a[i][j];
jMin = j;
}
}
}
return jMin;
}
Решение без глобальных переменных (3)// поиск столбца минимального элементаint findJMin(int a[10][10], int n, int m) {	int min

Слайд 21Решение без глобальных переменных (4)
// поиск столбца максимального элемента
int

findJMax(int a[10][10], int n, int m) {
int max = a[0][0];
int

jMax = 0;
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
if (a[i][j] > max) {
max = a[i][j];
jMax = j;
}
}
}
return jMax;
}
Решение без глобальных переменных (4)// поиск столбца максимального элемента int findJMax(int a[10][10], int n, int m) {	int

Слайд 22Решение без глобальных переменных (5)
// перестановка столбцов с минимальным и

максимальным элементами
void replaceColumns(int a[10][10], int n, int m, int col1,

int col2) {
for (int i = 0; i < n; i++) {
int tmp = a[i][col1];
a[i][col1] = a[i][col2];
a[i][col2] = tmp;
}
}


// Запись в выходной файл
void writeArray(int a[10][10], int n, int m) {
FILE *fout = fopen("d:\\Temp\\out.txt", "wt");
// !!!! Нет проверки на некорректное открытие файла!!!
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++)
fprintf(fout, "%5d ", a[i][j]);
fprintf(fout, "\n");
}
fclose(fout);
}
Решение без глобальных переменных (5)// перестановка столбцов с минимальным и максимальным элементамиvoid replaceColumns(int a[10][10], int n, int

Слайд 23Решение без глобальных переменных (6)
void main()
{

int a[10][10];
int n, m;
int jMin,

jMax;

readArray(a, &n, &m);
printArray(a, n, m);
jMin = findJMin(a, n, m);
jMax =

findJMax(a, n, m);
replaceColumns(a, n, m, jMin, jMax);
printArray(a, n, m);
writeArray(a, n, m);

{
int x;
scanf("%d", &x);
}
}
Решение без глобальных переменных (6)void main(){	int a[10][10];	int n, m;	int jMin, jMax;	readArray(a, &n, &m);	printArray(a, n, m);	jMin = findJMin(a,

Слайд 24На пути к ООП: Решение через структуры (общая идея)
void main()

{
//int a[10][10];
//int n, m;
ARRAY ar;
int jMin, jMax;

readArray(&ar);
printArray(&ar);
jMin = findJMin(&ar);
jMax =

findJMax(&ar);
replaceColumns(&ar, jMin, jMax);
printArray(&ar);
writeArray(&ar);
{
int x;
scanf("%d", &x);
}
}
На пути к ООП: Решение через структуры (общая идея)void main() {	//int a[10][10];	//int n, m;	ARRAY ar;	int jMin, jMax;	readArray(&ar);	printArray(&ar);	jMin

Слайд 25На пути к ООП: Решение через структуры (1)
#define _CRT_SECURE_NO_WARNINGS
#include

struct

Array {
int a[10][10];
int n;
int m;
};

typedef struct Array ARRAY;

На пути к ООП: Решение через структуры (1)#define _CRT_SECURE_NO_WARNINGS#include struct Array {	int a[10][10];	int n;	int m;};typedef struct Array

Слайд 26На пути к ООП: Решение через структуры (2)
// Чтение массива

из входного файла
void readArray(ARRAY * arr) {
FILE *fin = fopen("d:\\Temp\\in.txt",

"rt");
// !!!! Нет проверки на некорректное открытие файла!!!
fscanf(fin, "%d", &(*arr).n);
fscanf(fin, "%d", &(*arr).m);
for (int i = 0; i < (*arr).n; i++)
for (int j = 0; j < (*arr).m; j++)
fscanf(fin, "%d", &(*arr).a[i][j]);

fclose(fin);
}


На пути к ООП: Решение через структуры (2)// Чтение массива из входного файлаvoid readArray(ARRAY * arr) {	FILE

Слайд 27На пути к ООП: Решение через структуры (3)
// вывод массива

в консоль
void printArray(ARRAY * arr) {

for (int i = 0;

i < arr->n; i++) {
for (int j = 0; j < arr->m; j++) {
printf("%5d ", arr->a[i][j]);
}
printf("\n");
}
printf("\n");
}


Слайд 28На пути к ООП: Решение через структуры (4)
// поиск столбца

минимального элемента
int findJMin(ARRAY * arr) {
int min = arr->a[0][0];
int jMin

= 0;
for (int i = 0; i < arr->n; i++) {
for (int j = 0; j < arr->m; j++) {
if (arr->a[i][j] < min) {
min = arr->a[i][j];
jMin = j;
}
}
}
return jMin;
}



На пути к ООП: Решение через структуры (4)// поиск столбца минимального элементаint findJMin(ARRAY * arr) {	int min

Слайд 29На пути к ООП: Решение через структуры (5)
// поиск столбца

максимального элемента
int findJMax(ARRAY * arr) {
int max = arr->a[0][0];
int

jMax = 0;
for (int i = 0; i < arr->n; i++) {
for (int j = 0; j < arr->m; j++) {
if (arr->a[i][j] > max) {
max = arr->a[i][j];
jMax = j;
}
}
}
return jMax;
}


На пути к ООП: Решение через структуры (5)// поиск столбца максимального элемента int findJMax(ARRAY * arr) {	int

Слайд 30На пути к ООП: Решение через структуры (6)
// перестановка столбцов

с минимальным и максимальным элементами
void replaceColumns(ARRAY * arr, int col1,

int col2) {
for (int i = 0; i < arr->n; i++) {
int tmp = arr->a[i][col1];
arr->a[i][col1] = arr->a[i][col2];
arr->a[i][col2] = tmp;
}
}


На пути к ООП: Решение через структуры (6)// перестановка столбцов с минимальным и максимальным элементамиvoid replaceColumns(ARRAY *

Слайд 31На пути к ООП: Решение через структуры (7)
// Запись в

выходной файл
void writeArray(ARRAY * arr) {
FILE *fout = fopen("d:\\Temp\\out.txt", "wt");
//

!!!! Нет проверки на некорректное открытие файла!!!
for (int i = 0; i < arr->n; i++) {
for (int j = 0; j < arr->m; j++)
fprintf(fout, "%5d ", arr->a[i][j]);
fprintf(fout, "\n");
}
fclose(fout);
}




Слайд 32На пути к ООП: Решение через структуры (8)
void main() {
//int

a[10][10];
//int n, m;
ARRAY ar;
int jMin, jMax;

readArray(&ar);
printArray(&ar);
jMin = findJMin(&ar);
jMax = findJMax(&ar);
replaceColumns(&ar,

jMin, jMax);
printArray(&ar);
writeArray(&ar);
{
int x;
scanf("%d", &x);
}
}


На пути к ООП: Решение через структуры (8)void main() {	//int a[10][10];	//int n, m;	ARRAY ar;	int jMin, jMax;	readArray(&ar);	printArray(&ar);	jMin =

Слайд 33Домашнее задание
** Проверь себя – сможешь ли ты сделать задание

экзаменационное на «5»?

Общее задание
Ввести двумерный массив из файла. Количество элементов

не более 10x10.
Каждый элемент – целое число в интервале значений -1000..+1000.
Количество строк (N) и столбцов (M) задано первой строке входного файла. Далее в N строках записаны по M числе.
Обработать массив согласно варианту.
Сохранить результат в формате, аналогичном входному.
Имейте в виду - во время выполнения программы количество используемых строк и столбцов может изменится. Предусмотрите в массиве столько строк и столбцов, чтобы программа корректно работала на любых корректных входных данных.
Нельзя использовать дополнительные массивы – в программе используется ровно один массив.
Домашнее задание** Проверь себя – сможешь ли ты сделать задание экзаменационное на «5»?Общее заданиеВвести двумерный массив из

Обратная связь

Если не удалось найти и скачать доклад-презентацию, Вы можете заказать его на нашем сайте. Мы постараемся найти нужный Вам материал и отправим по электронной почте. Не стесняйтесь обращаться к нам, если у вас возникли вопросы или пожелания:

Email: Нажмите что бы посмотреть 

Что такое TheSlide.ru?

Это сайт презентации, докладов, проектов в PowerPoint. Здесь удобно  хранить и делиться своими презентациями с другими пользователями.


Для правообладателей

Яндекс.Метрика