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

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

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 не равны нулю (необходимо проверить при вводе). Определить, лежит ли точка с координатами (x 0, y 0) выше или ниже прямой. Вычислить 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


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



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