Скачиваний:
22
Добавлен:
09.09.2020
Размер:
3.99 Mб
Скачать
  1. Выполнить реализацию и отладку программу на языке с одной программной функцией (ф-ей main());

Программный код, выполненный по данной схеме можно представить в виде следующей реализации единственной на языке C:

#include<cstdio> //подключение библиотек

#include<cmath>  //подключение библиотек

#define MAXN 10000 //объявление константы

using namespace std;

 

int a[MAXN][MAXN],n,m,f=0; //объявление матрицы а, и

//вспомогательных переменных

 

int main() //начало главной функции программы

{

   scanf("%d %d",&n,&m); //ввод переменных n и m (количество стром и //столбцев в матрице. при помощи оператора scanf задаётся значение с //консоли, переменным n и m, т.е. размеры для нашей матрицы)

//при помощи оператора scanf задаётся значение каждому //элементу //матрицы в ручную

 

   for (int i=0;i<n;++i) //пересчет номера столбца матрицы (i)

      for (int j=0;j<m;++j) //пересчет номера строки матрицы (j)

      {

         scanf("%d",&a[i][j]); // ввод элементов матрицы

      }

 

   for (int i=0;i<m;++i) //пересчет номера столбца матрицы (i)

   {

      f=1; //переменная для проверки условия (если равна 0, то столбец //содержит хотя бы 1 полож элемент, а если 1 то столбец без полож. элем.)

      for (int j=0;j<n;++j) //пересчет номера строки матрицы (j)

         if (a[j][i]>0) //проверка каждого элемента матрицы на знак

            f=0; //присвоится 0 если положит. элем. найден

      if (f==1) //проверка, найдена ли положительная переменная

//в данном столбце

      {

         for (int i1=0;i1<n;++i1) //пересчет номера строки матрицы (i1)

            a[i1][i]=-a[i1][i]; //смена знаков для всех элементов столбца

//вывод на консоль преобразованной матрицы

         for (int i1=0;i1<n;++i1) //пересчет номера столбца матрицы (i1)

         {

            for (int j1=0;j1<m;++j1) //пересчет номера строки матрицы (j)

            {

                printf("%d ",a[i1][j1] //вывод изменеенной матрицы

            }

            printf("\n"); //перенос на новую строку при выводе

         }

         return 0; //завершение функции main с передачей ей значения 0

         }

   }

//вывод в консоль старой матрицы

   for (int i1=0;i1<n;++i1) //пересчет номера строки матрицы (i1)

   {

      for (int j1=0;j1<m;++j1) //пересчет номера столбца матрицы (i1)

      {

          printf("%d ",a[i1][j1]); //вывод матрицы, если в ней ничего не меняли

      }

      printf("\n"); //перенос на новую строку при выводе

   }

   return 0; //завершение функции main с передачей ей значения 0

}

  1. Выполнить улучшение (унификацию) программы преобразовав отдельные сегменты кода в вызываемые (именованные) функции.

Выделим в данном коде сегменты, которые можно (целесообразно) преобразовать в отдельные функции (см. схему, выделенные сегменты кода). Обоснование выделения 3-х отдельных функций, на представленной ниже схеме прогрраммы:

  • 1-й овал содержит код заполнения матрицы вводимыми данными;

  • 2-й овал содержит код преобразование значений матрицы;

  • 3-й овал вывод значений преобразованной матрицы.

  • Ф-я main() определение границ массива, управление подчиненными функциями и код завершения работы программы.

Рис. 2. Предлагаемая унификация программы. Выделение 3-х вызываемых функций.

Задачи пунктов 5,6 и 7 предлагается выполнить самостоятельно.

Индивидуальные задания:

  1. Найти номер последнего максимального элемента среди положительных элементов, начиная с первого элемента, большего заданного числа Т.

  2. Найти минимальное значение среди элементов, меньших заданного числа В, и расположенных до первого элемента, большего заданного числа А1.

  3. Найти номер первого максимального элемента среди отрицательных элементов, расположенных до первого элемента, большего заданного числа Т.

  4. Найти максимальное значение среди отрицательных элементов, расположенных до первого элемента, равного Т.

  5. Найти максимальное значение среди отрицательных элементов, расположенных до первого элемента, меньшего заданного числа Х.

  6. Найти номер последнего максимального значения среди отрицательных элементов, расположенных правее элемента, равного Т.

  7. Найти номер последнего минимального элемента среди элементов, меньших Т1 и расположенных до первого элемента, большего Т2.

  8. Найти значение максимального элемента среди четных (по значению) элементов, расположенных до первого нечетного элемента.

  9. Найти номер первого минимального элемента среди элементов, больших Т1 и расположенных правее первого элемента, равного Т2.

  10. Найти номер последнего максимального элемента среди элементов, лежащих в диапазоне [c,d] и расположенных до первого четного элемента.

  11. Найти номер последнего минимального элемента среди четных положительных элементов, лежащих правее первого отрицательного элемента.

  12. Найти номер последнего минимального элемента среди элементов, меньших Т1 и лежащих правее первого элемента, равного Т2.

  13. Найти номер первого максимального элемента среди элементов, лежащих в диапазоне от ak до bk и расположенных правее первого положительного элемента.

  14. Найти номер первого максимального значения среди отрицательных элементов, расположенных до первого элемента, равного Т.

  15. Найти минимальное значение положительных элементов, расположенных правее первого элемента, кратного двум.

  16. Найти номер первого минимального значения среди положительных элементов, расположенных правее первого элемента, равного нулю.

  17. Найти значение максимального элемента среди элементов, кратных k1 и расположенных до первого отрицательного элемента.

  18. Найти номер первого минимального элемента среди положительных элементов, расположенных до первого элемента, кратного пяти.

  19. Найти минимальное значение положительных элементов, расположенных правее первого элемента, равного нулю.

  20. Найти минимальное значение положительных элементов, расположенных до первого элемента, равного нулю.

  21. Найти номер первого максимального значения среди отрицательных элементов, расположенных правее первого элемента, равного Т.

  22. Найти номер первого максимального значения среди элементов, меньших a1 и расположенных правее первого элемента, кратного трем.

  23. Найти максимальное значение среди отрицательных элементов, расположенных до первого элемента, равного Т.

  24. Найти номер последнего максимального элемента среди элементов, лежащих в диапазоне [t1,t2] и расположенных до первого элемента с четным значением.

  25. Найти номер последнего максимального значения среди нечетных (по значению) элементов, расположенных до первого четного элемента.

  26. Найти номер первого максимального элемента среди положительных элементов, расположенных до первого отрицательного элемента.

  27. Найти максимальное значение положительных элементов, расположенных правее первого элемента, кратного пяти.

ЛАБОРАТОРНАЯ РАБОТА №2

«Модели и парадигмы проектирования и программирования. Императивная парадигма. Структурное программирование».

Цели работы:

  1. Освоит основы проектирования и разработки программных систем на основе:

  • Принципов модульного подхода;

  • Методологии структурного программирования;

  • Метода нисходящего (восходящего) проектирования и разработки программных средств (систем).

ЗАДАЧИ.

  1. Ознакомиться с общей концепцией Императивной парадигмы программирования и основами структурного подхода в проектировании и программировании, принципами и методиками модульной разработки программных приложений, методологией и техниками структурного программирования и методами нисходящего и восходящего проектирования и программирования;

  2. Выполнить проектирование системы, в соответствие со стандартами ЕСПД, на основе нисходящей технологии проектирования (сверху вниз) и/или восходящую (снизу вверх)), т.е. разработать схемы работы системы, представив выделенные функции в обобщенном, абстрактном (в виде заглушек) виде.

  3. Разработать схемы работы отдельных программ-функций, согласовывая их вызовы из спроектированного ранее архитектурного решения.

  4. Представить разрабатываемую систему набором 5-ти диаграмм, соответствующих стандарту ЕСПД.

  5. Выполнить нисходящее программирование системы, фиксируя у преподавателя промежуточные программные решения.