Отчет по выполнению семинаров 1-3 семестра 2
Описание файла
PDF-файл из архива "Отчет по выполнению семинаров 1-3 семестра 2", который расположен в категории "". Всё это находится в предмете "программирование и алгоритмизация" из 2 семестр, которые можно найти в файловом архиве НИУ «МЭИ» . Не смотря на прямую связь этого архива с НИУ «МЭИ» , его также можно найти и в других разделах. .
Просмотр PDF-файла онлайн
Текст из PDF
ФГБОУ ВПОНациональный исследовательский университет «МЭИ»ИНСТИТУТ ДИСТАНЦИОННОГО И ДОПОЛНИТЕЛЬНОГООБРАЗОВАНИЯОтчет по выполнению семинаров 1-3 семестра 2выполнил: студент группы ИД-02235-18,Евдокимов Андрей Евгеньевичпринял: доцент каф. Прикладной и бизнес-информатики ИнЭИ,Батасова Валентина СергеевнаМосква 2019 г.Вариант индивидуальных заданий на проектирование алгоритма обработкиодномерных массивовЗАДАНИЕ 1 (ЗАДАЧА 8 РАЗДЕЛА 2 СЕМИНАРА 1)УсловиеНайти число и произведение положительных элементов вектора X,удовлетворяющих требованию sin(Xk) 0.Состав данныхИмяСмыслXВекторnРазмер вектораТипИсходные данныевещественныйцелыйПромежуточные переменныеСчетчик элементов массивацелыйiВыходные данныеnpos Число положительных элементов целыйmulПроизведение положительныхэлементоввещественныйСтруктураодномерный массивиз 10 элементовпростая переменнаяпростая переменнаяпростая переменнаяпростая переменнаяБлок-схема алгоритмаНачалоВвод n, X[i];i = 0, ..., n-1npos = 0, mul = 1i=0i<nДаX[i] <= 0 || sin(X[i]) > 0Нетxn++ДаНетxs += Xi++Вывод npos,mulКонецПрограмма на СИ (локальные массивы)#ifdef WIN32#define _CRT_SECURE_NO_WARNINGS#include <windows.h>#endif#include <stdio.h>#include <math.h>int main(){#ifdef WIN32SetConsoleOutputCP(65001);#endifint n;printf("Введите n: ");scanf("%i", &n);int i;float X[n];for (i = 0; i < n; i++) {printf("Введите X[%i]: ", i);scanf("%f", &X[i]);}int npos = 0;float mul = 1;for (i = 0; i < n; i++) {printf("%i: sin(%0.4f) = %0.4f\n", i, X[i], sin(X[i]));if () continue;npos++;mul *= X[i];}printf("Число положительных элементов: %i\n", npos);printf("Произведение положительных элементов: %f\n", mul);fseek(stdin, 0, SEEK_END);getchar();return 0;}Программа на СИ (динамические массивы)#ifdef WIN32#define _CRT_SECURE_NO_WARNINGS#include <windows.h>#endif#include <stdio.h>#include <math.h>int main(){#ifdef WIN32SetConsoleOutputCP(65001);#endifint n;printf("Введите n: ");scanf("%i", &n);int i;float* X = malloc(sizeof(float) * n);for (i = 0; i < n; i++) {printf("Введите X[%i]: ", i);scanf("%f", &X[i]);}int npos = 0;float mul = 1;for (i = 0; i < n; i++) {printf("%i: sin(%0.4f) = %0.4f\n", i, X[i], sin(X[i]));if (X[i] <= 0 || sin(X[i]) > 0) continue;npos++;mul *= X[i];}printf("Число положительных элементов: %i\n", npos);printf("Произведение положительных элементов: %f\n", mul);free(X);fseek(stdin, 0, SEEK_END);getchar();return 0;}Вариант индивидуальных заданий на проектирование алгоритма обработки матрицЗАДАНИЕ 2 (ЗАДАЧА 8 РАЗДЕЛА 3 СЕМИНАРА 1)УсловиеДана матрица А из n строк и m столбцов.
Способ задания n и m определяетсясредой программирования и указаниями преподавателя. Матрицу Aнеобходимо вводить и выводить (если ее элементы были изменены)построчно.Элементы матрицы, абсолютная величина которых больше заданногозначения C, разделить на С.Состав данныхИмяСмыслТипИсходные данныевещественныйAМатрицаnКол-во строк матрицы AКол-во столбцов матрицы AЗаданное значениеmCpxyAФлаг выводаСчетчик строкСчетчик столбцовМатрицаСтруктурадвумерный массивnxmцелыйпростая переменнаяцелыйпростая переменнаявещественныйпростая переменнаяПромежуточные переменныецелыйпростая переменнаяцелыйпростая переменнаяцелыйпростая переменнаяВыходные данныевещественныйдвумерный массивnxmБлок-схема алгоритмаНачалоВвод n, m, C, A[y][x];y = 0, ..., m-1;x = 0, ..., n-1C == 0ДаВывод ошибкиделения на 0Нетp=0y=0y<mДаx=0Нетx<nДаy++НетНетabs(A[y][x]) > CДаp=1A[y][x] /= CВывод npos, mulДаp == 1НетКонецx++Программа на СИ (локальные массивы)#ifdef WIN32#define _CRT_SECURE_NO_WARNINGS#include <windows.h>#endif#include <stdio.h>int main(){#ifdef WIN32SetConsoleOutputCP(65001);#endifint n, m;float C;printf("Введите n m C: ");scanf("%i %i %f", &n, &m, &C);if (C == 0) { printf("Error: C == 0"); return 1; }printf("Введите A: ");int x, y, p = 0;float A[m][n];for (y = 0; y < m; y++) {for (x = 0; x < n; x++) {scanf("%f", &A[y][x]);if (abs(A[y][x]) > C) {p = 1;A[y][x] /= C;}}}if (p) {for (y = 0; y < m; y++)for (x = 0; x < n; x++)printf("%0.2f ", A[y][x]);}fseek(stdin, 0, SEEK_END); getchar();return 0;}Программа на СИ (динамические массивы)#ifdef WIN32#define _CRT_SECURE_NO_WARNINGS#include <windows.h>#endif#include <stdio.h>int main(){#ifdef WIN32SetConsoleOutputCP(65001);#endifint n, m;float C;printf("Введите n m C: ");scanf("%i %i %f", &n, &m, &C);if (C == 0) { printf("Error: C == 0"); return 1; }printf("Введите A: ");int x, y, p = 0;float** A = malloc(sizeof(float*) * m);for (y = 0; y < m; y++) {A[y] = malloc(sizeof(float) * n);for (x = 0; x < n; x++) {scanf("%f", &A[y][x]);if (abs(A[y][x]) > C) {p = 1;A[y][x] /= C;}}}if (p) {for (y = 0; y < m; y++)for (x = 0; x < n; x++)printf("%0.2f ", A[y][x]);}for (y = 0; y < m; y++) free(A[y]);free(A);fseek(stdin, 0, SEEK_END); getchar();return 0;}Программа на СИ (файловый ввод-вывод, семинар 3)#ifdef WIN32#define _CRT_SECURE_NO_WARNINGS#include <windows.h>#endif#include <stdio.h>int main(){int n, m;float C;FILE* input = fopen("sem1_2-8.txt", "r");if (input == NULL) { printf("Error reading sem1_2-8.txt"); return 1; }FILE* output = fopen("sem1_2-8_out.txt", "w");if (output == NULL) { printf("Error writing sem1_2-8_out.txt"); return 2; }fscanf(input, "%i %i %f", &n, &m, &C);if (C == 0) { printf("Error: C == 0"); return 1; }int x, y, p = 0;float** A = malloc(sizeof(float*) * m);for (y = 0; y < m; y++) {A[y] = malloc(sizeof(float) * n);for (x = 0; x < n; x++) {fscanf(input, "%f", &A[y][x]);if (abs(A[y][x]) > C) {p = 1;A[y][x] /= C;}}}if (p) {for (y = 0; y < m; y++)for (x = 0; x < n; x++)fprintf(output, "%0.2f ", A[y][x]);}for (y = 0; y < m; y++) free(A[y]);free(A);fclose(input); fclose(output); printf("ok");return 0;}Индивидуальное задание на разработку и использование функций СиЗАДАНИЕ 3 (ЗАДАЧА 8 РАЗДЕЛА 4 СЕМИНАРА 1)УсловиеДля каждой строки матрицы A(5x8) определить число элементов, больших D,а для каждой строки матрицы B(7x5) определить число элементов, большихQ; D, Q - заданные значения.Состав данных[sem1_4-8.c] int main():ИмяAМатрицаТипИсходные данныевещественныйBМатрицавещественныйDЗаданное значениеЗаданное значениевещественныйпростая переменнаявещественныйпростая переменнаяQxYСмыслСчетчик строкСчетчик столбцовПромежуточные переменныецелыйцелыйСтруктурадвумерный массив5x8двумерный массив7x5простая переменнаяпростая переменная[sem1_4-8_fn.c] int matrix_count_gt(size_t w, size_t h, float m[h][w], float value):[sem1_4-8_fn.c] int matrix_count_gt(size_t w, size_t h, float** m, float value):ИмяСмыслТипИсходные данныевещественныйmМатрицаwКол-во строк матрицы mКол-во столбцов матрицы mЗаданное значениеHvalСтруктурадвумерный массивwxhцелыйпростая переменнаяцелыйпростая переменнаявещественныйпростая переменнаяПромежуточные переменныецелыйYСчетчик строкСчетчик столбцовцелыйпростая переменнаяcntВыходные данныецелыйЧисло элементов > valпростая переменнаяXпростая переменнаяБлок-схема программыНачалоВвод D, Q,A[y][x], y = 0, ..., 7, x = 0, ..., 4;B[y][x], y = 0, ..., 4, x = 0, ..., 6;a = matrix_count_gt(5, 8, A, D)b = matrix_count_gt(7, 5, B, Q)Вывод a, bКонецБлок-схема алгоритма подпрограммыНачалоx = 0, y = 0, cnt = 0y<hДаx=0Даx<wНетДаx++Нетm[y][x] > value)Даcnt++Возврат cntНетy++Программа на СИ (локальные массивы)#ifdef WIN32#define _CRT_SECURE_NO_WARNINGS#include <windows.h>#endif#include <stdio.h>#include "sem1_4-8_fn.h"int main(){#ifdef WIN32SetConsoleOutputCP(65001);#endifint x, y;float D, Q;printf("Введите D Q: ");scanf("%f %f", &D, &Q);#define AW 5#define AH 8#define BW 7#define BH 5printf("Введите A (%ix%i): ", AW, AH);float A[AH][AW];for (y = 0; y < AH; y++) {for (x = 0; x < AW; x++) {scanf("%f", &A[y][x]);}}printf("Введите B (%ix%i): ", BW, BH);float B[BH][BW];for (y = 0; y < BH; y++) {for (x = 0; x < BW; x++) {scanf("%f", &B[y][x]);}}int a = matrix_count_gt(AW, AH, &A, D);int b = matrix_count_gt(BW, BH, &B, Q);printf("A > D: %i\n", a);printf("B > Q: %i\n", b);fseek(stdin, 0, SEEK_END);getchar();return 0;}Подпрограмма на СИ (локальные массивы) (sem1_4-8_fn.c)#ifdef WIN32#define _CRT_SECURE_NO_WARNINGS#endif#include <stdio.h>int matrix_count_gt(size_t w, size_t h, float m[h][w], float value) {size_t x, y;int cnt = 0;for (y = 0; y < h; y++) {for (x = 0; x < w; x++) {if (m[y][x] > value) {cnt++;}}}return cnt;}Программа на СИ (динамические массивы)#ifdef WIN32#define _CRT_SECURE_NO_WARNINGS#include <windows.h>#endif#include <stdio.h>#include "sem1_4-8_fn.h"int main(){#ifdef WIN32SetConsoleOutputCP(65001);#endifint x, y;float D, Q;printf("Введите D Q: ");scanf("%f %f", &D, &Q);#define AW 5#define AH 8#define BW 7#define BH 5printf("Введите A (%ix%i): ", AW, AH);float** A = malloc(AH * sizeof(float*));for (y = 0; y < AH; y++) {A[y] = malloc(AW * sizeof(float));for (x = 0; x < AW; x++) {scanf("%f", &A[y][x]);}}printf("Введите B (%ix%i): ", BW, BH);float** B = malloc(BH * sizeof(float*));for (y = 0; y < BH; y++) {B[y] = malloc(BW * sizeof(float));for (x = 0; x < BW; x++) {scanf("%f", &B[y][x]);}}int a = matrix_count_gt(AW, AH, A, D);int b = matrix_count_gt(BW, BH, B, Q);printf("A > D: %i\n", a);printf("B > Q: %i\n", b);for (y = 0; y < AH; y++) free(A[y]);for (y = 0; y < BH; y++) free(B[y]);free(A);free(B);fseek(stdin, 0, SEEK_END);getchar();return 0;}Подпрограмма на СИ (динамические массивы) (sem1_4-8_fn.c)#ifdef WIN32#define _CRT_SECURE_NO_WARNINGS#endif#include <stdio.h>int matrix_count_gt(size_t w, size_t h, float** m, float value) {size_t x, y;int cnt = 0;for (y = 0; y < h; y++) {for (x = 0; x < w; x++) {if (m[y][x] > value) {cnt++;}}}return cnt;}Программа на СИ (файловый ввод-вывод, семинар 3)#ifdef WIN32#define _CRT_SECURE_NO_WARNINGS#include <windows.h>#endif#include <stdio.h>#include "sem1_4-8_fn.h"int main(){int x, y;float D, Q;FILE* input = fopen("sem1_4-8.txt", "r");if (input == NULL) { printf("Error reading sem1_4-8.txt"); return 1; }FILE* output = fopen("sem1_4-8_out.txt", "w");if (output == NULL) { printf("Error writing sem1_4-8_out.txt"); return 2; }fscanf(input, "%f %f", &D, &Q);#define AW 5#define AH 8#define BW 7#define BH 5float** A = malloc(AH * sizeof(float*));for (y = 0; y < AH; y++) {A[y] = malloc(AW * sizeof(float));for (x = 0; x < AW; x++) {fscanf(input, "%f", &A[y][x]);}}float** B = malloc(BH * sizeof(float*));for (y = 0; y < BH; y++) {B[y] = malloc(BW * sizeof(float));for (x = 0; x < BW; x++) {fscanf(input, "%f", &B[y][x]);}}int a = matrix_count_gt(AW, AH, A, D);int b = matrix_count_gt(BW, BH, B, Q);fprintf(output, "A > D: %i\n", a);fprintf(output, "B > Q: %i\n", b);for (y = 0; y < AH; y++) free(A[y]);for (y = 0; y < BH; y++) free(B[y]);free(A);free(B);fclose(input);fclose(output);printf("ok");return 0;}Подпрограмма на СИ (файловый ввод-вывод, семинар 3) (sem1_4-8_fn.c)#ifdef WIN32#define _CRT_SECURE_NO_WARNINGS#endif#include <stdio.h>int matrix_count_gt(size_t w, size_t h, float** m, float value) {size_t x, y;int cnt = 0;for (y = 0; y < h; y++) {for (x = 0; x < w; x++) {if (m[y][x] > value) {cnt++;}}}return cnt;}Обработка последовательности символовЗАДАНИЕ 4 (ЗАДАЧА 8 РАЗДЕЛА 2 СЕМИНАРА 2)УсловиеОпределить, есть ли в тексте слова, начинающиеся с заданного символа.Состав данныхИмяСмыслТипИсходные данныесимвольныйprТекстlЗаданный символiПромежуточные переменныецелыйСчетчик символовсимвольныйВыходные данныецелыйstartsWith Есть ли в тексте слова,начинающиеся с заданногосимволаСтруктураодномерныймассивпростая переменнаяпростая переменнаяпростая переменнаяБлок-схема алгоритмаНачалоВвод pr, li=0pr[i] != \0НетДа(i == 0 || pr[i - 1] == ' ') && pr[i] == lНетДаstartsWith = 1i++Вывод startsWithКонецПрограмма на СИ#ifdef WIN32#define _CRT_SECURE_NO_WARNINGS#endif#include <stdio.h>#include <conio.h>#define NMAX 81 /* максимальная длина стpоки */int main(void) {char pr[NMAX]; /* рассматриваемая строка */puts("String:");gets(pr);puts("Char:");char l = getchar();int i = 0, startsWith = 0;while (pr[i] != '\0') {if ((i == 0 || pr[i - 1] == ' ') && pr[i] == l) {startsWith = 1;}i++;}printf("Some words start with '%c': %s\n", l, startsWith ? "true" : "false");return 0;}Пример выводаString: multiple wordsChar: wSome words start with 'w': trueString: multiple wordsChar: aSome words start with 'a': falseОбработка последовательности символовЗАДАНИЕ 5 (ЗАДАЧА 8 РАЗДЕЛА 3 СЕМИНАРА 2)УсловиеРазработать программу, выполняющую однотипные действия с одной илинесколькими однострочными последовательностямисимволов (ониобозначены А, В, С), самостоятельно выделив одну или несколькоподпрограмм.