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

1) Арифметические операции

2) Задача. Написать выражение на языке , .

Ответ:

1.

+ - сложение;

- - вычитание;

* - умножение;

/ - деление;

% - остаток от деления.

Ниже представлен программный код использующий арифметические операции в C++.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

// arithmetic.cpp: определяет точку входа для консольного приложения.

 

#include "stdafx.h"

#include <iostream>

using namespace std;

 

int _tmain(int argc, char* argv[])

{

    double sum, razn, pow, div; // объявление переменных через запятую

    double a1; // отдельное объявление переменной a1

    double a2; // отдельное объявление переменной a2

    cout << "Vvedite pervoe chislo: ";

    cin >> a1;

    cout << "Vvedite vtoroe chislo: ";

    cin >> a2;

    sum  = a1 + a2;  // операция сложения

    razn = a1 - a2;  // операция вычитания

    pow  = a1 * a2;  // операция умножения

    div  = a1 / a2;  // операция деления

    cout << a1 << "+" << a2 << "=" << sum  << endl;

    cout << a1 << "-" << a2 << "=" << razn << endl;

    cout << a1 << "*" << a2 << "=" << pow  << endl;

    cout << a1 << "/" << a2 << "=" << div  << endl;

    system ("pause");

    return 0;

}

В строке 9 объявляются переменные с именами sum, razn, pow, div тип данных у которых double – вещественный тип данных (то есть эти переменные могут хранить такие числа: 0.99; 3.0; 21.6; — 43.15; 345.342).

Любые переменные можно использовать только после объявления. Переменные можно также и инициализировать при объявлении, пример:

1

double sum = 10;

Это значит, что мы объявили переменную с именем sum типа double и присвоили ей значение 10. Переменные можно инициализировать и объявлять как через запятую так и по отдельности каждую (строки 10 и 11).

1

cin >> a1; // прочитать первое число в переменную а1.

1

cin >> a2; // прочитать второе число в переменную а2.

Символы >> называются операцией извлечения из потока. Данные символы используются вместе с оператором ввода cin.

1

2

3

4

sum  = a1 + a2;  // сложить два числа и записать их сумму в переменную sum

razn = a1 - a2; // вычесть из первого числа второе и записать их разность в переменную razn

pow  = a1 * a2;  // умножить два числа и записать их произведение в переменную pow

div  = a1 / a2;  // разделить первое число на второе и записать их частное в переменную div

20-й по 23-ю строки мы выводим результаты наших арифметических операций. Также как и в математике в языке программирования С++ с помощью скобочек формируется порядок вычислений в сложных выражениях, например: ((a+b)*c)-d Первое действие: a+b; Второе действие: умножение на с; Третье действие: вычитание d;

Результат работы программы, выполняющей четыре арифметические операции +,  -,  *,  /, над двумя введенными числами,  показан ниже (см.Рисунок 1).

CppStudio.com

Vvedite pervoe chislo: 10

Vvedite vtoroe chislo: 5

10+5=15

10-5=5

10*5=50

10/5=2

Для продолжения нажмите любую клавишу . . .

Рисунок 1 — Арифметические операции C++

Рассмотрим еще одну арифметическую операцию % - остаток от деления, для этого   изучим подробно следующий код программы:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

// ost_division.cpp: определяет точку входа для консольного приложения.

 

#include "stdafx.h"

#include <iostream>

using namespace std;

 

int _tmain(int argc, char* argv[])

{

    cout << "8  % 4  = " << 8 % 4   << endl; // выполнение операции "остаток от деления"

    cout << "7  % 4  = " << 7 % 4   << endl;

    cout << "2  % 4  = " << 2 % 4   << endl;

    cout << "43 % 10 = " << 43 % 10 << endl;

    system("pause");

    return 0;

}

2.

11. Билет

1) Линейные программы.

2) Задача. Написать и отладить программы.

Дана программа: Var st: string; Begin St:='abcdef; St:=copy(st, 3,2); Writeln(st); End.

После выполнения программы на экран будет выведено:

Ответ:

1. Линейный алгоритм – описание действий, которые выполняются однократно в заданном порядке. Исполнитель выполняет действия последовательно, одно за другим в том порядке в котором они следуют.

2.

12. Билет

1) Работа со стандартными функциями

2) Задача.

Дана программа:

Var st: string; Begin St:='abcdef; delete(st, 3,2); Writeln(st); End.

На экран будет выведено:

Ответ:

1. Стандартные функции для работы со строками (Сoncat, Сopy, Length, Pos, UpCase)

Функция Length

Встроенная функция Length (длина) позволяет определить фактическую длину текстовой строки, хранящейся в указанной переменной (а не величину предельного размера строки, установленную при декларации):

Program DemoFunctionLength; Var Word : string; Begin write ('Введите слово :'); readln(Word); writeln('Это слово состоит из ',Length (Word),' букв'); End.

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

Функция Upcase

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

Program DemoFunctionUpcase; Var Word : string; i : Byte; Begin Word := 'фирма Microsoft'; for i := 1 to Length (Word) do Word[i] := UpCase (Word[i]); writeln(Word); {выводится текст 'фирма MICROSOFT'} End.

В результате работы программы на терминал выдается строка, содержащая большие английские буквы и маленькие русские.

Примечание. Русские литеры не могут обрабатываться этой функцией.

Для того, чтобы преобразовать в заглавные строчные буквы русского алфавита, применяют оператор выбора Case:

. . . case Word[i] of 'a' : Word[i] := 'A'; 'б' : Word[i] := 'Б'; 'в' : Word[i] := 'В'; . . . end; . . .

Функция Copy

Функция Copy позволяет копировать фрагмент некоторой строки из одной переменной в другую. Вызывая эту функцию, нужно указать следующие параметры:

  • имя строки, из которой должен извлекаться копируемый фрагмент,

  • позицию в строке, начиная с которой будет копироваться фрагмент,

  • число копируемых символов.

Program DemoFunctionCopy; Var Word : string; Word1 : string[20]; Begin Word := 'фирма Microsoft'; writeln(Word); {выводится текст 'фирма Microsoft'} Word1 := Copy (Word,1,5); writeln(Word1); {выводится текст 'фирма'} End.

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

Функция Pos

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

Program DemoFunctionPos; Var Word : string; SearchWord : string[20]; Position : Byte; Begin Word := 'фирма Microsoft'; writeln(Word); {выводится текст 'фирма Microsoft'} writeln ('Введите искомый текст '); readln (SearchWord); Position := Pos(SearchWord, Word); if Position <> 0 then begin write ('Фрагмент <',SearchWord,'> содержится в строке <',Word); writeln ('>, начиная с позиции ',Position ); end else writeln('Фрагмент <',SearchWord,'> не содержится в строке <',Word, '>'); End.

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

Функция Concat

Функция Concat (Str1, Str2, ..., StrN) выполняет конкатенацию (или сцепление) строк Str1, Str2, ..., StrN в том порядке, в каком они указаны в списке параметров. Общее количество символов всех сцепленных строк не должно превышать 255.

Program DemoFunctionConcat; Var Word : string; Word1, Word2 : string[20]; Begin Word1 := 'фирмы '; Word2 := 'Microsoft'; Word := Concat('Компьютеры ',Word1,Word2); writeln(Word); {выводится текст 'Компьютеры фирмы Microsoft'} End.

2.

13. Билет