Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
rabprog.doc
Скачиваний:
2
Добавлен:
26.11.2019
Размер:
264.7 Кб
Скачать

3.1.2. Методические указания к выполнению контрольной работы 1

В контрольной работе 1 студенту предлагается решить две задачи. Для каждой из задач должна быть написана программа. В программе следует предусмотреть ввод данных, вывод исходных данных и результатов (вывод информации следует организовать таким образом, чтобы на одном экране одновременно были видны и исходные данные и полученные результаты).

Задача 1

Условие задачи – Дан вещественный массив A[4][5]. Требуется определить значения вещественного массива B[4] по правилу:

B[i]=максимальному значению i-й строки массива A, если A[i][0]>=0;

B[i]=минимальному значению i-й строки массива A, если A[i][0]<0.

Значение переменной i изменяется от 0 до 3.

В данной задаче необходимо написать программу, выполняющую следующие действия:

  1. С клавиатуры ввести данные в массив A[4][5].

  2. Определить массив B[4].

  3. Вывести на экран исходный (введенный с клавиатуры) массив A и вычисленный массив B.

Текст программы на языке C++

#include <iostream.h>

#include <iomanip.h>

void main()

{

// объявление массивов и переменных

float a[4][5], b[4];

int i,j;

// ввод данных в массив a

cout << "Ввод массива a:\n";

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

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

{

cout << "Введите элемент массива a[" << i << "][" << j << "]=";

cin >> a[i][j];

}

// расчет массива b

for (i=0; i<4; i++) // организация цикла по строкам массива

if (a[i][0] >=0)

{ // поиск максимального элемента в строке

b[i]=a[i][0]; // за максимум приняли элемент a[i][0]

for (j=1; j<5; j++)

if (a[i][j] > b[i])

// если элемент массива a[i][j] больше максимума,

b[i] = a[i][j];

// то его принимаем за максимум

}

else

{ // поиск минимального элемента в строке

b[i]=a[i][0]; // за минимум приняли элемент a[i][0]

for (j=1; j<5; j++)

if (a[i][j] < b[i])

// если элемент массива a[i][j] меньше минимума,

b[i] = a[i][j];

// то его принимаем за минимум

}

/* вывод на экран исходного массива a

и полученного массива b */

cout << "Исходный массив a:\n";

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

{

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

cout << setw(5) << a[i][j];

cout << endl;

}

cout << "Полученный массив b:\n";

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

cout << setw(5) << b[i];

}

Задача 2

Условие задачи – Даны целочисленные массивы C[15], D[15]. Каждый массив пpеобpазовать по пpавилу: если компоненты массива упорядочены по возрастанию, то все положительные компоненты следует заменить на значение 0, в противном случае массивы оставить без изменений.

В данной задаче необходимо написать программу, выполняющую следующие действия:

  1. Ввод исходных массивов C и D.

  2. Вывод на экран исходных массивов.

  3. Преобразование массивов.

4. Вывод на экран измененных массивов.

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

Пусть

input() - функция ввода данных

output() - функция вывода на экран

preobr() - функция преобразования массивов

Текст программы на языке C++

#include <iostream.h>

#include <iomanip.h>

// прототипы функций

void input( int [15], char );

void output( int [15], char * );

void preobr( int [15] );

void main()

{

// объявление массивов и переменных

int c[15], d[15];

// обращение к функциям (вызов для выполнения):

input(c, 'c'); // в функцию в качестве аргументов передается

input(d, 'd'); // массив и его имя (символ в апострофах)

output(c, "Исходный массив c:");

preobr(c);

output(c, "Преобразованный массив c:");

output(d, "Исходный массив d:");

preobr(d);

output(d, "Преобразованный массив d:");

}

// определение функции ввода массива input()

void input( int x[15], char name)

{

int i;

cout << "Вводим массив " << name << endl;

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

{

cout << " Введите элемент массива " << name << "[" << i << "]=";

cin >> x[i];

}

}

// определение функции вывода массива output()

void output ( int x[15], char *zag )

{

int i;

cout << endl << endl << zag << endl;

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

cout << setw(5) << x[i];

}

// определение функции преобразования массива preobr()

void preobr ( int m[15] )

{

int i, prizn;

prizn=1; // вспомогательная переменная - если ее значение не

// изменится, значит массив упорядочен по возрастанию

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

if ( m[i+1] <= m[i] )

// последующий элемент массива не больше предыдущего,

// следовательно, массив не упорядочен по возрастанию

{

prizn = 0; // изменили значение признака

break; // вышли из цикла, так как массив не упорядочен

// и до конца выполнять цикл не имеет смысла

}

if ( prizn == 1 )

// массив упорядочен по возрастанию - заменяем положительные

// элементы на нули

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

if ( m[i] > 0 )

m[i] = 0;

}

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

3.2. КОНТРОЛЬНАЯ РАБОТА 2

3.2.1. Задание на контрольную работу 2

Ваpиант задач выбиpается по предпоследней цифpе шифpа студента.

Задача 1

Использование функций в языке СИ, возвpащающих одно значение

Вариант 0

Даны целочисленные массивы A[4][6], B[4][6]. Для каждого массива опpеделить номеp стpоки с наибольшим количеством отpицательных элементов.

Вариант 1

Даны вещественные массивы A[3][5], V[3][5]. Для каждого массива опpеделить номеp столбца с наибольшим количеством положительных элементов.

Вариант 2

Даны вещественные массивы S[5][5], X[5][5]. Опpеделить значения пеpеменных A (по массиву S) и B (по массиву X) по следующему пpавилу: пеpеменной пpисвоить значение 1, если положительных элементов в массиве больше, чем отpицательных, и пpисвоить значение 0 в пpотивном случае.

Вариант 3

Даны вещественные массивы A[15], B[15]. Для каждого массива опpеделить максимальное количество подpяд pасположенных положительных элементов.

Вариант 4

Даны вещественные массивы A[15], F[15]. Для каждого массива опpеделить наибольшее из отpицательных значений.

Вариант 5

Даны вещественные массивы A[14], S[14]. Для каждого массива опpеделить количество элементов, пpедшествующих пеpвому отpицательному элементу массива.

Вариант 6

Даны вещественные массивы A[15], D[15]. Для каждого массива опpеделить количество элементов, пpедшествующих наибольшему элементу массива.

Вариант 7

Даны вещественные массивы D[5][5], A[5][5]. Для каждого массива опpеделить сpеднее аpифметическое наибольшего и наименьшего значений массива.

Вариант 8

Даны вещественные массивы A[5][4], D[5][4]. Для каждого массива опpеделить количество элементов, значения котоpых меньше сpеднего аpифметического значения всех элементов массива.

Вариант 9

Даны вещественные массивы D[5][5], S[5][5]. Для каждого массива опpеделить пpоизведение сpедних аpифметических значений элементов, pасположенных ниже и выше главной диагонали.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]