- •Программирование на языке высокого уровня Рабочая программа Задания на контрольные работы
- •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
Задача 2
Условие задачи - Даны вещественные массивы A[3][4], D[3][4]. Для каждого массива определить сумму положительных элементов, расположенных в четных столбцах и сумму положительных элементов, расположенных в нечетных столбцах.
В данной задаче должны быть реализованы:
1. Ввод исходных массивов.
2. Расчет суммы положительных элементов в четных столбцах массива и
суммы положительных элементов в нечетных столбцах массива.
3. Вывод на экран исходного массива и полученного результата.
Каждую операцию оформим в виде отдельной функции.
Пусть:
input() - функция ввода массива
schetsum() - функция расчета сумм положительных элементов в четных и
нечетных столбцах массива
(у данной функции в качестве аргументов должны быть либо
2 указателя, либо 2 ссылки)
output() - функция вывода исходного массива и полученных результатов
Данную задачу можно решить любым из предложенных способов – использовать функцию с указателями, либо функцию со ссылками в качестве аргументов.
1- й вариант решения - программа с функцией schetsum
с указателями в качестве аргументов
#include <iostream.h>
#include <iomanip.h>
// прототипы функций
void input ( float [3][4], char);
void schetsum ( float [3][4], float *, float *);
void output ( float [3][4], char, float, float);
void main()
{
// объявление массивов и переменных
float a[3][4], d[3][4], suma_ch, suma_nch, sumd_ch, sumd_nch;
// suma_ch - для расчета суммы в четных столбцах массива a
// suma_nch - для расчета суммы в нечетных столбцах массива a
// sumd_ch - для расчета суммы в четных столбцах массива d
// sumd_nc - для расчета суммы в нечетных столбцах массива d
// обращение к функциям (вызов для выполнения)
input ( a, 'a');
input ( d, 'd');
schetsum( a, &suma_ch, &suma_nch); // в функцию передаются два
schetsum( d, &sumd_ch, &sumd_nch); // адреса переменных
output( a, 'a', suma_ch, suma_nch);
output( d, 'd', sumd_ch, sumd_nch);
}
// определение функции ввода массива input()
void input ( float x[3][4], char name)
{
int i, j;
cout << "Вводим массив " << name << endl;
for (i=0; i<3; i++)
for (j=0; j<4; j++)
{
cout << " Введите " << name << "[" << i << "][" << j << "]=";
cin >> x[i][j];
}
}
// определение расчетной функции
// в качестве аргументов у данной функции два указателя
void schetsum ( float x[3][4], float *sum_ch, float *sum_nch)
{
int i,j;
*sum_ch = 0;
*sum_nch = 0;
// будем считать четными столбцы с индексами 0 и 2,
// а нечетными - с индексами 1 и 3
// расчет суммы в четных столбцах
for (j=0; j<4; j+=2)
for (i=0; i<3; i++)
if ( x[i][j] > 0 )
*sum_ch += x[i][j];
// расчет суммы в нечетных столбцах
for (j=1; j<4; j+=2)
for (i=0; i<3; i++)
if ( x[i][j] > 0 )
*sum_nch += x[i][j];
}
// определение функции вывода output()
void output ( float x[3][4], char name, float sum_chet, float sum_nchet)
{
int i,j;
cout << " Исходный массив " << name << ":" << endl;
for (i=0; i<3; i++)
{
for (j=0; j<4; j++)
cout << setw(5) << x[i][j];
cout << endl;
}
cout << "\nСумма положительных элементов в четных столбцах массива"
<< name << " равна " << sum_chet << endl;
cout << "Сумма положительных элементов в нечетных столбцах массива"
<< name << " равна " << sum_nchet << endl;
}
2-й вариант решения - программа с функцией schetsum
со ссылками в качестве аргументов
#include <iostream.h>
#include <iomanip.h>
// прототипы функций
void input ( float [3][4], char);
void schetsum ( float [3][4], float &, float &);
void output ( float [3][4], char, float, float);
void main()
{
// объявление массивов и переменных
float a[3][4], d[3][4], suma_ch, suma_nch, sumd_ch, sumd_nch;
// suma_ch - для расчета суммы в четных столбцах массива a
// suma_nch - для расчета суммы в нечетных столбцах массива a
// sumd_ch - для расчета суммы в четных столбцах массива d
// sumd_nc - для расчета суммы в нечетных столбцах массива d
// обращение к функциям (вызов для выполнения)
input ( a, 'a');
input ( d, 'd');
schetsum( a, suma_ch, suma_nch);
schetsum( d, sumd_ch, sumd_nch);
output( a, 'a', suma_ch, suma_nch);
output( d, 'd', sumd_ch, sumd_nch);
}
// определение функции ввода массива input()
void input ( float x[3][4], char name)
{
int i, j;
cout << "Вводим массив " << name << endl;
for (i=0; i<3; i++)
for (j=0; j<4; j++)
{
cout << " Введите " << name << "[" << i << "][" << j << "]=";
cin >> x[i][j];
}
}
// определение расчетной функции
// в качестве аргументов у данной функции две ссылки
void schetsum ( float x[3][4], float &sum_ch, float &sum_nch)
{
int i,j;
sum_ch = 0;
sum_nch = 0;
// будем считать четными столбцы с индексами 0 и 2,
// а нечетными - с индексами 1 и 3
// расчет суммы в четных столбцах
for (j=0; j<4; j+=2)
for (i=0; i<3; i++)
if ( x[i][j] > 0 )
sum_ch += x[i][j];
// расчет суммы в нечетных столбцах
for (j=1; j<4; j+=2)
for (i=0; i<3; i++)
if ( x[i][j] > 0 )
sum_nch += x[i][j];
}
// определение функции вывода output()
void output ( float x[3][4], char name, float sum_chet, float sum_nchet)
{
int i,j;
cout << " Исходный массив " << name << ":" << endl;
for (i=0; i<3; i++)
{
for (j=0; j<4; j++)
cout << setw(5) << x[i][j];
cout << endl;
}
cout << "Сумма положительных элементов в четных столбцах массива "
<< name << " равна " << sum_chet << endl;
cout << "Сумма положительных элементов в нечетных столбцах массива"
<< name << " равна " << sum_nchet << endl;
}