- •Программирование на языке высокого уровня Рабочая программа Задания на контрольные работы
- •552800 - Информатика и вычислительная техника
- •Предисловие
- •1. Содержание дисциплины
- •1.1. Содержание дисциплины по гос
- •Рабочая программа (объем дисциплины 270 часов)
- •Связанные типы динамических данных
- •Тематический план лекций для студентов очно-заочной формы обучения ( 24 часа)
- •Библиографический список
- •3. Задания на контрольные работы и методические указания к их выполнению
- •3.1. Контрольная работа 1
- •3.1.1. Задание на контрольную работу 1
- •Задача 1
- •Задача 2
- •3.1.2. Методические указания к выполнению контрольной работы 1
- •Задача 1
- •Задача 2
- •Задача 2 Использование функций в языке си, получающих и возвpащающих pазличное количество аpгументов
- •3.2.2. Методические указания к выполнению контрольной работы 2
- •Задача 1
- •Задача 2
- •3.3. Контрольная работа 3
- •3.3.1. Задание на контрольную работу 3
- •3.3.2. Методические указания к выполнению контрольной работы 3
- •3.4. Контрольная работа 4
- •3.4.1. Задание на контрольную работу 4
- •3.4.2. Методические указания к выполнению контрольной работы 4
- •4. Задание на курсовой проект
- •4.1. Задание на типовой курсовой проект
- •4.2. Основные разделы пояснительной записки к курсовому проекту
- •5. Тестовые задания
- •Содержание
- •191186, Санкт-Петербург, ул. Миллионная, 5
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.
В данной задаче необходимо написать программу, выполняющую следующие действия:
С клавиатуры ввести данные в массив A[4][5].
Определить массив B[4].
Вывести на экран исходный (введенный с клавиатуры) массив 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, в противном случае массивы оставить без изменений.
В данной задаче необходимо написать программу, выполняющую следующие действия:
Ввод исходных массивов C и D.
Вывод на экран исходных массивов.
Преобразование массивов.
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асположенных ниже и выше главной диагонали.
|