
- •2. Общие рекомендации к выполнению и требования к оформлению контрольной работы
- •3. Темы заданий для выполнения контрольной работы
- •4. 1. Базовые средства языка
- •Алфавит языка
- •Ключевые слова языка
- •Идентификаторы
- •Комментарии
- •4.1.5. Типы данных Си
- •Логический тип
- •4.1.8. Операции и выражения
- •Операции присваивания
- •Арифметические операции
- •Логические операции
- •Операции отношения
- •Условная операция
- •Операция преобразования типа
- •Операция определения размера
- •4.1.9. Стандартные функции
- •4.1.10. Структура программы
- •4.1.11. Ввод и вывод данных
- •Функции ввода- вывода
- •Объектно-ориентированные средства ввода-вывода.
- •4.2. Операторы управления
- •4.2.1. Понятие алгоритма
- •4.2.2. Изображение алгоритма в виде блок-схемы
- •2.3. Составной оператор
- •2.4. Операторы ветвления
- •If (выражение) оператор;
- •4.2.5. Примеры программ
- •4.2.6. Оператор варианта
- •4.2.7. Алгоритмы циклической структуры
- •Оператор цикла с предусловием
- •Оператор цикла с постусловием
- •Оператор цикла с параметром
- •Операторы передачи управления
- •4.2.8. Решение задач с использованием циклов
- •4.3. Обработка массивов
- •4.3.1. Описание массивов
- •4.3.2. Основные операции над массивами
- •4.3.3. Ввод-вывод элементов массива
- •4.3.4. Вычисление суммы элементов массива
- •4.3.5. Вычисление произведения элементов массива
- •4.3.6. Поиск максимального элемента и его номера
- •4.3.7. Сортировка элементов в массиве
- •4.3.8. Удаление элемента из массива
- •4.3.9. Решение задач с использованием массивов
- •4.4. Обработка матриц
- •4.4.1. Ввод-вывод матрицы
- •4.4.2. Примеры алгоритмов обработки матрицами
- •4.5.1. Передача параметров в функцию
- •4.5.2. Возврат результата с помощью оператора return
- •4.6. Указатели и динамические массивы
- •4.6.2. Операции * и & при работе с указателями
- •4.6.3. Операция присваивания указателей
- •4.6.4. Арифметические операции над адресами
- •4.6.5. Динамические массивы
- •4.6.6. Использование указателей в качестве аргументов функций
- •Литература
4.2.8. Решение задач с использованием циклов
ЗАДАЧА 10. Составить таблицу значений функции y=esin(x)cos(x) на отрезке [xn;xk] с шагом dx. Найти сумму положительных значений y и произведение отрицательных y.
Входные данные: xn, xk,dx.
Выходные данные: множество значений x и y, S – сумма положительных значений y и P – произведение отрицательных значений y.
Блок-схема алгоритма решения задачи на рис. 13.
Рис. 13. Алгоритм решения задачи 10
Текст программы c соответствующими комментариями приведен далее.
#include <stdio.h>
#include <math.h>
int main()
{
//Описание всех переменных
float xn, xk, dx, x, y, s, p;
printf("Введите xn,xk,dx");
scanf("%f%f%f",&xn,&xk,&dx);
for(s=0,p=1,x=xn;x<=xk;x+=dx)
{
y=exp(sin(x))*cos(x);
printf("X=%g\tY=%g\n",x,y);
if (y<0) p*=y;
else s+=y;
}
printf("S=%g\tP=%g\n",s,p);
}
ЗАДАЧА 11. Вычислить значения z, которые соответствуют каждому значению х (x = 1; dx = 0.5) по формуле:
.
Считать z до тех пор, пока подкоренное выражение больше или равно 0.02. Определить k — количество вычисленных z.
Входные данные: xn, dx.
Выходные данные: множество значений x и y, k – количество выполненных итераций цикла.
Блок-схема алгоритма на рис. 14. Текст программы, соответствующий б/с алгоритма приведен далее.
Рис. 14. Алгоритм решения задачи 11
#include<stdio.h>
#include<math.h>
void main()
{
float x,dx,z; int k=0;
printf("x="); scanf("%f",&x);
printf("dx="); scanf("%f",&dx);
while (x/(x*x*x+1)>0.02)
{
z=log(x)*sqrt(x/(x*x*x+1));
printf("\n x=%f \t z=%f \n",x,z);
k++;
x=x+dx;
}
printf("\n k=%d",k);
}
4.3. Обработка массивов
Массив – структурированный тип данных, состоящий из фиксированного числа элементов одного типа.
Простой или одномерный массив это список данных одного и того же типа. Порядковый номер элемента массива называют индексом. Для доступа к данным, хранящимся в определенном элементе массива, необходимо указать имя массива и индекс этого элемента.
4.3.1. Описание массивов
Описать массив можно так:
тип имя_переменной [размерность];
где размерность это количество элементов в массиве. Например:
int х[10]; float a[20];
Размерность массива и тип его элементов определяют объем памяти, который необходим для хранения массива. Следовательно, размерность это целое положительное константное выражение. Например,
const int n=15;.
double B[n];
Элементы массива в С++ нумеруются с нуля (первый элемент, всегда имеет номер ноль, а номер последнего элемента на единицу меньше заданной при его описании размерности):
//Описан массив из 5 символов, нумерация от 0 до 4:
char C[5];
4.3.2. Основные операции над массивами
Для обращения к элементу массива указывают его имя, а затем в квадратных скобках индекс:
имя_массива [индекс]
Например:
const int n=15; double C[n],S;
S=C[0]+C[n-1];
Массиву, как и любой другой переменной, можно присвоить начальное значение (инициализировать):
тип имя [размерность]={элемент_0, элемент_1, …};
Например, формируется массив из шести вещественных чисел, значения элементам присваиваются по порядку:
float a[6]={1.2,(float)3/4,5./6,6.1};
Элементы значения, которых не указаны, обнуляются; для элементов a[1] и a[2] выполняется преобразование типов
a[0]=1.2, a[1]=(float)3/4=0.75, a[2]=5./6=0.83333,
a[3]=6.1, a[4]=0, a[5]=0,
Все манипуляции с массивами в С++ осуществляются поэлементно. Организовывается цикл, в котором происходит последовательное обращение к нулевому, первому, второму и т.д. элементам. В общем виде алгоритм обработки массива показан на рис. 15:
Рис. 15. Алгоритм обработки массива