Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Programmirvanie_na_Si_dlya_zaochnikov.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
2.38 Mб
Скачать

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. Алгоритм обработки массива

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