Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Методичка_2013_14_весна(1курс) / Лаб_ раб_ 5_сост

.doc
Скачиваний:
7
Добавлен:
03.03.2016
Размер:
95.23 Кб
Скачать

35

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

РАЗРАБОТКА ПРОГРАММ, СОДЕРЖАЩИХ НЕСКОЛЬКО ЗАДАНИЙ

Цель работы:

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

1.1Требования к выполнению работы:

  • Для всех заданий вначале составить блок-схему общей структуры программы.

  • Каждую отдельную часть задания выполнить в виде отдельной функции, содержащей в свою очередь функции, предварительно составив блок-схему алгоритма решения этой части задания.

  • Тип функций выбрать самостоятельно и обосновать.

  • Предусмотреть вывод на печать исходных массивов, промежуточных и результирующих массивов, а также искомых результирующих величин.

  • Значения элементов массивов задавать с помощью генератора случайных чисел.

  • Предусмотреть выход из программы.

  • Выполнить второй вариант программы, поместив решение каждой задачи в отдельный файл, а основную программу поместить в третий файл.

1.2 Теоретические положения

Для выбора направления решения задачи можно использовать условный оператор if или оператор выбора варианта switch.

Пример: Заданы две задачи. В первой найти сумму элементов матрицы. максимальный элемент в массиве. Во второй найти и удалить максимальный элемент в массиве .

Фрагмент программы с использованием условного оператора будет выглядеть следующим образом:

/*Функция формирования матрицы

void form_matr(float *ptx, int n, int l )

{

int i,j;

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

for (j=0;j<l;j++)

*(ptx+i*l+j)=50*(float)rand()/RAND_MAX;

}

/*Функция вывода матрицы на экран

void vuvod_matr (float *ptx, int n,int l)

{

int i,j;

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

{ printf("\n ");

for (j=0;j<l;j++)

printf("%6.2f ",*(ptx+i*l+j));

}

}

/*Функция нахождения суммы элементов матрицы

void find_summa(float *ptx, int n, int l, float *s)

{

int i,j;

*s=0;

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

for (j=0;j<l;j++)

if ( *(ptx+i*l+j)>0) *s=*s+*(ptx+i*l+j);

}

/*Функция формирования массива

void form_masiv(float *x, int n )

{

int i;

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

*(x+i)=50*(float)rand()/RAND_MAX;

}

/*Функция вывода массива на экран

void vuvod_masiv (float *x, int n)

{

int i;

printf("\n ");

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

printf("%6.2f ",*(x+i));

}

/*Функция нахождения максимального элемента массива и его индекса

int find_max (float *x, int n)

{

int i,nom;

float max=-1000;

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

if(*(x+i)> max) {max=*(x+i);nom=i;}

return nom;

}

/*Функция удаления максимального элемента из массива

void udal_max(float *x, int n, int nom )

{

int i;

for (i=nom;i<n-1;i++)

*(x+i)=*(x+i+1);

}

/*Основная программа

void main()

{

float a[8][5],b[20],summa;

int i,j,nom_max, var=1;

do

{

clrscr();

printf("\n vvedite nomer zadania ");

scanf("%d",&var);

if(var==1)

{

clrscr();

form_matr(&a[0][0],5,4 );

printf("\n matriza ");

vuvod_matr (&a[0][0],5,4);

find_summa(&a[0][0], 5, 4, &summa);

printf("\n summa=%6.2f ",summa) ;

getch();

}

if(var==2)

{

clrscr();

printf("\n massiv ");

form_masiv(&b[0],20);

vuvod_masiv (&b[0],20);

nom_max= find_max (b,20);

printf("\n nom_max=%d ",nom_max);

udal_max(b,20,nom_max );

printf("\n rez massiv a ");

vuvod_masiv (&b[0],19);

getch(); }

if(var==3) exit(1);

}

while(var<3);

}

Основная программы с использованием оператора switch будет выглядеть следующим образом:

void main()

{

float a[8][5],b[20],summa;

int i,j,nom_max, var;

met: clrscr();

printf("\n vvedite nomer zadania ");

scanf("%d",&var);

switch(var)

{

case 1:

{

clrscr();

form_matr(&a[0][0],5,4 );

printf("\n matriza ");

vuvod_matr (&a[0][0],5,4);

find_summa(&a[0][0], 5, 4, &summa);

printf("\n summa=%6.2f ",summa) ;

getch(); goto met;

}

case 2:

{

clrscr();

form_masiv(&b[0],20);

vuvod_masiv (&b[0],20);

nom_max= find_max (b,20);

printf("\n nom_max=%d ",nom_max);

udal_max(b,20,nom_max );

printf("\n rez massiv a ");

vuvod_masiv (&b[0],19);

getch(); goto met;

}

case 3: exit(1);

}

}

В случае использования нескольких файлов, имена файлов, в которых расположены используемые функции, должны быть указаны в разделе директив препроцессора #include того файла, в котором содержится основная программа. Основных функций в подсоединяемых файлах быть не должно.

1.3 Варианты индивидуальных заданий.

Варианты индивидуальных задач приведенные в таблицы 1.1.

Для каждого варианта заданы две отдельные задачи по обработке одномерного массива и матрицы .

Таблица 1.1 Варианты индивидуальных заданий.

Вар-та

задачи

Условия задач

1

1

Заданы массив действительных чисел. Сдвинуть его элементы циклическим сдвигом вперед так, чтобы максимальный элемент был на последнем месте.

2

Дана матрица действительных чисел размером 4х8. Определить числа b1 b2 b3 b4, равные соответственно суммам элементов строк и найти из них большее.

2

1

Задан массив целых чисел размером. Перенести в другой массив элементы, номер которых кратен 3. Найти среди них максимум.

2

Дана матрица действительных чисел размером 6х7. Определить числа b1 b2 b3 b4 b5 b6 равные соответственно произведениям элементов строк и найти из низ меньшее.

3

1

Задан массив целых чисел. Перенести в другой массив элементы с четными номерами и найти максимум среди них.

2

Дана матрица действительных чисел размером 5х4. Определить числа b1 b2 b3 b4 b5 равные соответственно наименьшим значениям элементов строк и их сумму.

4

1

Задан массив целых чисел. Подразумевается, что в нем могут идти подряд равные между собой элементы. Перенести в другой массив элементы, которые встречаются по одному.

2

Дана матрица данного числа размером 8х10. Получить новую матрицу, путем деления ее элементов на наибольший по модулю элемент.

5

1

Задан массив действительных чисел. Перенести в другой массив элементы, значение которых меньше (max+min)/2.

2

Дана матрица данного числа размером 8х10. Получить новую матрицу, путем умножения ее элементов на значение наименьшего элемента главной диагонали.

6

1

Задан массив целых чисел. Получить новый массив, отличающийся тем, что все четные элементы умножены на минимальный элемент.

2

Дана квадратная матрица целых чисел размером 6х6. умножить элементы лежащие выше главной диагонали на минимальное значение всей матрицы.

7

1

Задан массив целых чисел. Получить новый массив, отличающийся тем, что ко всем элементам прибавлен максимальный элемент.

2

Дана квадратная матрица действительных чисел размером 6х6. Заменить элементы лежащие ниже главной диагонали соответствующими элементами, лежащими выше главной диагонали, умноженными на максимальный элемент всей матрицы

8

1

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

2

Дана матрица действительных чисел размером 4х8. Определить числа b1 b2 b3 b4 , равные соответственно разностям наибольших и наименьших значений элементов строк и найти их сумму.

9

1

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

2

Дана матрица действительных чисел размером 6х5. Определить числа b1 b2 b3 b4 b5, равные соответственно суммам значений элементов столбцов найти наибольшее среди них.

10

1

Заданы массив действительных чисел. Сдвинуть его элементы циклическим сдвигом вперед так, чтобы максимальный элемент был на первом месте.

2

Дана матрица размером 9х13. Указать для каждой строки индекс максимального элемента.

11

1

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

2

Дана матрица размером 9х13. Указать для индексы максимального элемента.

12

1

Задан массив целых чисел. Найти средние арифметические значения среди четных значений элементов массива и среди нечетных.

2

Дана матрица данного числа размером 8х10. Получить новую матрицу, путем деления ее элементов на наибольший по модулю элемент.

13

1

Задан массив действительных чисел. Найти меньшее между максимальными значений элементов массива с четными индексами и нечетными.

2

Дана квадратная матрица размером 8х8. Получить матрицу, в которой каждый элемент равен исходному, умноженному на минимальный среди элементов, расположенных на главной диагонали.

14

1

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

2

Дана матрица действительных чисел размером 8х8. Получить новую матрицу, путем деления ее элементов на среднее арифметическое элементов главной диагонали.

15

1

Задан массив целых чисел. Найти большее между суммой элементов с четными значениями и суммой элементов с нечетными значениями

2

Дана квадратная матрица размером 8х8. Получить целочисленную квадратную матрицу, в которой каждый элемент равен 1, если соответствующий ему элемент исходной матрицы больше элемента, расположенного в начале строки и равен 0 в противоположном случае.

16

1

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

2

Дана матрица действительных чисел размером 6х8. Получить массив, элементы которого меньше среднего арифметического всей матрицы.

17

1

Задан массив действительных чисел. Найти большее среди сумм элементов массива с четными индексами и нечетными.

2

Дана матрица действительных чисел размером 6х4. Определить числа b1 b2 b3 b4, равные соответственно максимумам элементов столбцов и найти в каком столбце этот максимум наименьший.

18

1

Задан массив целых чисел. Найти большее между минимальным значением элементов с четными значениями и элементов с нечетными значениями

2

Дана квадратная матрица размером 8х8. Получить матрицу, в которой каждый элемент равен исходному, умноженному на максимальный среди элементов, расположенных на главной диагонали.

19

1

Задан массив целых чисел. Найти среднее между суммой элементов с четными значениями и суммой элементов с нечетными значениями

2

Дана матрица действительных чисел размером 6х8. Получить массив, элементы которого лежат между средним арифметическим всей матрицы и (max+min)/2 всей матрицы.

20

1

Задан массив действительных чисел. Найти большее среди максимальных значений элементов массива с четными индексами и нечетными.

2

Дана квадратная матрица размером 8х8. Получить матрицу, в которой каждый элемент равен элементу исходной матрицы умноженному на максимум среди элементов побочной диагонали.

21

1

Заданы массив действительных чисел. Сдвинуть его элементы циклическим сдвигом вперед так, чтобы минимальный элемент был на первом месте.

2

Дана матрица действительных чисел размером 8х8. Получить новую матрицу, путем умножения ее элементов на среднее арифметическое элементов главной и побочной диагоналей.

22

1

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

2

Дана квадратная матрица действительных чисел размером 6х6. Заменить элементы лежащие ниже побочной диагонали соответствующими элементами, лежащими выше побочной диагонали, умноженными на максимальный элемент всей матрицы

23

1

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

2

Дана матрица действительных чисел размером 8х4. Определить числа b1 b2 b3 b4, равные соответственно суммам элементов столбцов и найти в каком столбце она наименьшая.

24

1

Задан массив действительных чисел. Найти минимальные значения среди положительных элементов и среди отрицательных. Определить большее по модулю из этих двух значений

2

Дана квадратная матрица размером 8х8. Получить матрицу, в которой каждый элемент равен исходному, умноженному на максимальный среди элементов, расположенных на побочной диагонали.

25

1

Заданы массив действительных чисел. Сдвинуть его элементы циклическим сдвигом назад так, чтобы максимальный элемент был на последнем месте.

2

Дана квадратная матрица размером 8х8. Получить целочисленную квадратную матрицу, в которой каждый элемент равен 1, если соответствующий ему элемент исходной матрицы больше элемента, расположенного на главной диагонали и равен 0 в противоположном случае.

Соседние файлы в папке Методичка_2013_14_весна(1курс)