double arrow
Алгоритмы, необходимые для написания программ

Обратим внимание на то, что при написании программ необходимо иметь в виду следующие алгоритмы, которые встречаются и при вычислении значений функций.

1) Ограничение на входные данные приводит к необходимости проверки при их введении. Для этого можно использовать следующие циклы.

а) цикл с предусловием while (условие) . .. . Условие должно принимать значение «истина» при неправильном вводе данных. Например, необходимо ввести натуральное число n. Это осуществляется следующим циклом с предусловием:

cin >> n;

while (n <= 0)

{

cout << ”Введите натуральное число “;

cin >> n;

}

б) цикл с постусловием do . . . while (условие). Условие должно принимать значение «истина» при неправильном вводе данных. Например, необходимо ввести натуральное число n. Это осуществляется следующим циклом с постусловием:

do

{

cout << ”Введите натуральное число “;

cin >> n;

}while (n <= 0);

2) Следует помнить о необходимости проверки аргументов функций, если область определения функции отлична от всего пространства.

3) Еще один часто встречающийся алгоритм при вводе данных – необходимо ввести n элементов массива x[i], значения которого уникальны. Это можно осуществить с помощью следующего цикла с параметрами:

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

{

cout << "Введите x("<<i+1<<") = ";

cin >> x[i];

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

if(x[i] == x[j]) //Если встретился такой же элемент,

{ //необходимо его ввести вновь,

i--; //причем его индекс будет повторяться

break; //до тех пор, пока значение не будет




} //уникальным.

}

Листинг 1.1. Задана прямая линия ax+by+c=0, причем коэффициенты a и b не равны нулю (необходимо проверить при вводе). Определить, лежит ли точка с координатами (x0,y0) выше или ниже прямой. Вычислить y=ln(5+3 x) при x=d+hk, k=0, 1, 2, …, 10, если точка лежит выше прямой, и y=0, если точка лежит на прямой линии или ниже ее. Вывести на экран дисплея информацию, если функцию вычислить нельзя.

//stdafx.h

#pragma once

#define WIN32_LEAN_AND_MEAN

#include <stdio.h>

#include <math.h> //Библиотека математических функций

#include <tchar.h>

#include <iostream>

using namespace std; //Использовать пространство имен std

//L1_1.cpp

#include “stdafx.h”

int main( )

{

setlocale(LC_CTYPE, “russian”); // Функции обработки символов

double x,y,a,b,c;

do //Контроль того, что a и b не равны нулю

{

cout << «Введите коэффициенты прямой a b c «;

cin >> a >> b >> c;

}while(a == 0 || b == 0);

cout << «Введите начальную точку и шаг «;

cin >> d >> h;

cout << ’\n’;



cout << « x y Результат\n\n»;

cout.precision(5); //Вывод 5 значащих цифр

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

{

x=d+i*h;

if(5+3*x <= 0)

{

cout.width(32); //Выводить в 32 позициях

cout << «Функцию вычислить нельзя\n»;

}

else

{

y=log(5+3*x);

if(a*x+b*y+c<0)

{

cout.width(4); //Выводить в 4 позициях

cout << x;

cout.width(8); //Выводить в 8 позициях

cout << y;

cout << « Точка лежит под прямой \n»;

}

else

{

cout.width(4); //Выводить в 4 позициях

cout << x;

cout.width(8); //Выводить в 8 позициях

cout << 0;

cout << « Точка лежит над прямой \n»;

}

}

}

return 0;

}

Результат работы программы листинга 1.1 приведен на рис. 1.1:

Рис. 1.1. Результат работы программы листинга 1.1






Сейчас читают про: