Добавить в цитаты Настройки чтения

Страница 3 из 5



_ _ _ _ _ _ _ _ ЭВМ

50

7) ОПЕРАТОРЫ ВВОДА

Для форматного ввода данных используется функция:

scanf("управляющая строка", аргумент1, аргумент2, …);

Если в качестве аргумента используется переменная, то перед ее именем записывается символ &. Управляющая строка содержит спецификации преобразования и используется для установления количества и типов аргументов, спецификации для определения типов аргументов такие же, как и для функции printf.

Если нам надо ввести значения для переменных i (целого типа) и а (вещественного типа). Эту задачу сможет выполнить функция: scanf("%d%f", &i, &a).

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

/*

* Пример решения квадратного уравнения

*/

#include <iostream>

#include <cmath>

using namespace std;

int main() {

double a, b, c, x1, x2;

cout << "Введите значение a: "; cin >> a;

cout << "Введите значение b: "; cin >> b;

cout << "Введите значение c: "; cin >> c;

if ((b * b – 4 * a * c) >= 0) {

x1 = (-b + sqrt(b * b – 4 * a * c)) / (2 * a);

x2 = (-b – sqrt(b * b – 4 * a * c)) / (2 * a);

cout << "Первый корень = " << x1 << endl;

cout << "Второй корень = " << x2 << endl;

} else {

cout << "Нет решения: дискриминант меньше 0";

}

}

ПРИМЕР ЗАДАЧИ (EX2). Чему равна площадь трапеции, если основания равны, а = 6.5, b = 3.9, а высота h = 4.7?

#include <stdio.h>

int main() {

float a, b, h, s;

printf("Введите значения – a, b, h n");

scanf("n%f %f %f", &a, &b, &h);

s = (a + b) * h / 2;

printf("Площадь трапеции");

printf("ns = %f", s);

}

ПРИМЕР ЗАДАЧИ (EX3). Решить пример.

#include <stdio.h>

#include <math.h>

int main() {

float x, y, a;

printf("Введите исходное значение X n");

scanf("%f", &x);

a = x + 0.25;

y = a + sin(exp(a)) + sqrt(a / 2.5);

printf("x = %f y = %-f", x, y);

}

ПРИМЕР ЗАДАЧИ. Вычислить значения функций.

#include <stdio.h>

#include <math.h>

int main() {

float a, b, x, y, z;

printf("введите исходные данные a, b, xn");



scanf("%f%f %f", &a, &b, &x);

y = pow(x, 3) + log(pow(x, 2) + 1.2) + sqrt(abs(x – 3.6));

z = exp(a * y) – sin(b * y – 2.37);

printf("x = %7.3f y=%7.3f z=%7.3f", x, y, z);

}

ТЕМА 2 – ПРОГРАММИРОВАНИЕ РАЗВЕТВЛЯЮЩИХСЯ И ЦИКЛИЧЕСКИХ АЛГОРИТМОВ

1) ПРОГРАММИРОВАНИЕ РАЗВЕТВЛЯЮЩИХСЯ АЛГОРИТМОВ

Последовательность выполнения программы определяется ветвлениями. Ветвление – выбор одного из возможных направлений выполнения алгоритма в зависимости от значения некоторых условий. Для организации разветвлений в программах используются операторы перехода, условный и выбора.

ОПЕРАТОР ПЕРЕХОДА

Его можно представить в следующей форме: goto метка;

Метка – это любой идентификатор.

Например:

goto a2;

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

Например:

а2: к=5;

Метки в программе описывать не нужно. Применение оператора перехода в языке C++ является нежелательным, так как он нарушает структурную наглядность программы.

УСЛОВНЫЙ ОПЕРАТОР

Оператор if имеет вид:

if (проверка условия) {

инструкция 1

} else {

инструкция 2;

}

Если условие в скобках принимает истинное значение, выполняется инструкция 1, а если ложное – инструкция 2.

Например:

if (a > b) {

z=a;

} else {

z=b;

}

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

Например:

if (num>10) num = 2 * num;

printf("%dn", num);

Оператор вывода будет выполняться всегда, а оператор присваивания только в том случае, если условие будет истинным.

Пример (EX1):

#include <stdio.h>

int main() {

int a, b;

puts("Введите значения а и b");

scanf("%d %d", &a, &b);

if (a > b) puts("a больше b");

else puts("a меньше или равно b");

if (a == b) puts("a равно b");

}

Если для выполнения программы ввести числа 5 и 3, то на экране появится строка: "а больше b". При введении чисел 5 и 5, на экране появится две строки: "а меньше или равно b" и "а равно b"

Иногда в условном операторе после ключевых слов if или else следует инструкция if, ее называют вложенной. Слово else всегда относится к ближнему предшествующему ему if. Также после ключевых слов if и else вместо одной инструкции может быть записано несколько инструкций, которые должны заключаться в фигурные скобки. В сложных конструкциях, содержащих много if и else, уместно вложенные if обрамлять фигурными скобками.

ПРИМЕР ЗАДАЧИ (EX2). Ввести целое число. Вывести сообщение существуется ли символ ASCII-таблицы под таким номером (от 0 до 31 расположены управляющие коды, затем от 32 до 256 – символы).

#include <stdio.h>

int main() {

int i;

char ch;

printf("Введите целое число:n");

scanf("%d", &i);

if ((i > 31) && (i < 256)) {