1505 / 968 / 812
Регистрация: 30.04.2016
Сообщений: 3,334
|
09.10.2018, 00:54
|
2
|
madsitnik, здравствуйте! Вот несколько вариантов, которые я подобрал для вас. Здесь комментарии и немного накопленного опыта. Надеюсь, что вам или кому-то еще будет интересно:
Вариант 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
27
28
29
30
31
32
33
34
35
| /*
Дата и время написания программы:
08.10.2018
21:23
Условие задачи:
Дана строка символов: "Корень из х", где х - число. Составить программу, вычисляющую записанное в строке выражение.
Алгоритм:
1. Определяем две переменные (исходная строка и искомое число).
2. Инициализируем строку константным выражением по условию (строковым литералом).
3. Вычисляем заданное выражение с помощью функций sqrt(), atof(), substr(), find_last_of() и c_str().
4. Выводим найденный результат на экран.
Решение:
*/
#include <iostream> //Заголовочный файл с классами, функциями и переменными для организации ввода-вывода в языке программирования C++
#include <string> //Заголовочный файл для работы c переменными типа string
#include <cmath> //Заголовочный файл для работы функции sqrt()
#include <cstdlib> //Заголовочный файл для работы функции atof()
using namespace std; //Пространство имен
int main() {
double n; //Объявляем переменную вещественного типа (хранит искомый корень из числа)
string s = "Square root of 2.56"; //Объявляем и инициализируем строку (строковое выражение)
n = sqrt(atof(s.substr(s.find_last_of(" ") + 1).c_str())); //Вычисляем заданное строковое выражение
cout << "Output of the program:\n" << n << "\n"; //Выводим результат на экран
system("pause"); //Функция задержки экрана консоли
return 0; //Функция main() возвратила ноль при успешном выполнении программы (то есть, в коде выше ошибок не было)
} |
|
Вариант 2:
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
27
28
29
30
31
32
33
34
35
36
37
38
| /*
Дата и время написания программы:
08.10.2018
22:07
Условие задачи:
Дана строка символов: "Корень из х", где х - число. Составить программу, вычисляющую записанное в строке выражение.
Алгоритм:
1. Определяем две переменные (исходная строка и строковое представление искомого числа).
2. Инициализируем строку константным выражением по условию (строковым литералом).
3. Пробегаем циклом по строке справа налево и накапливаем искомое число в новой строке (для этого используем нестандартный прием).
4. Вычисляем найденное выражение (накопленную строку) с помощью функций sqrt() и stod().
5. Выводим найденный результат на экран.
Решение:
*/
#include <iostream> //Заголовочный файл с классами, функциями и переменными для организации ввода-вывода в языке программирования C++
#include <string> //Заголовочный файл для работы c переменными типа string и функции stod()
#include <cmath> //Заголовочный файл для работы функции sqrt()
#include <cctype> //Заголовочный файл для работы функции isblank()
using namespace std; //Пространство имен
int main() {
string s = "Square root of 2.56"; //Объявляем и инициализируем строку (строковое выражение)
string res = ""; //Объявляем переменную строкового типа (хранит строковое представление числа) и инициализируем ее пустым значением
for (int i = s.length() - 1; !isblank(s[i]); i--) { //Пробегаем циклом по строке, пока не встретим пробел (справа налево)
res = s[i] + res; //Записываем искомые символы в новую переменную (переворачиваем строковое представление числа)
}
cout << "Output of the program:\n" << sqrt(stod(res)) << "\n"; //Выводим результат на экран
system("pause"); //Функция задержки экрана консоли
return 0; //Функция main() возвратила ноль при успешном выполнении программы (то есть, в коде выше ошибок не было)
} |
|
Вариант 3:
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
| /*
Дата и время написания программы:
08.10.2018
22:24
Условие задачи:
Дана строка символов: "Корень из х", где х - число. Составить программу, вычисляющую записанное в строке выражение.
Алгоритм:
1. Определяем две переменные (исходная строка и искомое число).
2. Инициализируем строку константным выражением по условию (строковым литералом).
3. Определяем паттерн регулярного выражения (для извлечения из строки строкового представления числа).
4. Определяем переменную типа smatch (хранит строковое представление вычисляемого выражения).
5. Извлекаем из строки число с помощью функции regex_match() и capture group (выражение в круглых скобках).
6. Вычисляем корень из найденного числа-строки (выражение типа smatch) с применением функций sqrt(), stod() и str().
7. Выводим найденный результат на экран.
Решение:
*/
#include <iostream> //Заголовочный файл с классами, функциями и переменными для организации ввода-вывода в языке программирования C++
#include <string> //Заголовочный файл для работы c переменными типа string и функцией stod()
#include <cmath> //Заголовочный файл для работы функции sqrt()
#include <regex> //Заголовочный файл для работы с регулярным выражением
using namespace std; //Пространство имен
int main() {
double n; //Объявляем переменную вещественного типа (хранит искомый корень из числа)
string s = "Square root of 2.56"; //Объявляем и инициализируем строку (строковое выражение)
regex e("[A-Za-z ]+(\\d*\\.?\\d+)"); //Определяем паттерн регулярного выражения и производим захват необходимой группы (capture group)
smatch m;
if (regex_match(s, m, e)) {
n = sqrt(stod(m[1].str())); //Вычисляем корень и найденного числа
}
cout << "Output of the program:\n" << n << "\n"; //Выводим результат на экран
system("pause"); //Функция задержки экрана консоли
return 0; //Функция main() возвратила ноль при успешном выполнении программы (то есть, в коде выше ошибок не было)
} |
|
Вариант 4:
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
27
28
29
30
31
32
33
34
35
| /*
Дата и время написания программы:
08.10.2018
23:00
Условие задачи:
Дана строка символов: "Корень из х", где х - число. Составить программу, вычисляющую записанное в строке выражение.
Алгоритм:
1. Определяем две переменные (исходная строка и искомое число).
2. Инициализируем строку константным выражением по условию (строковым литералом).
3. Считываем строку с помощью функции sscanf() и записываем результат в переменную типа double.
4. Выводим найденный результат на экран c помощью функции printf().
Решение:
*/
#include <iostream> //Заголовочный файл с классами, функциями и переменными для организации ввода-вывода в языке программирования C++
#include <string> //Заголовочный файл для работы c переменными типа string
#include <stdio.h> //Заголовочный файл для работы функций sscanf() и printf()
#include <cmath> //Заголовочный файл для работы функции sqrt()
using namespace std; //Пространство имен
int main() {
double n; //Объявляем переменную вещественного типа (хранит искомый корень из числа)
string s = "Square root of 2.56"; //Объявляем и инициализируем строку (строковое выражение)
sscanf(s.c_str(), "%*[^0-9] %lf", &n); //Считываем строку с помощью sscanf() и записываем результат в переменную типа double
printf("Output of the program:\n%.2lf\n", sqrt(n)); //Выводим результат на экран (два знака после запятой)
system("pause"); //Функция задержки экрана консоли
return 0; //Функция main() возвратила ноль при успешном выполнении программы (то есть, в коде выше ошибок не было)
} |
|
Вариант 5:
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
27
28
29
30
31
32
33
34
35
36
37
| /*
Дата и время написания программы:
08.10.2018
00:35
Условие задачи:
Дана строка символов: "Корень из х", где х - число. Составить программу, вычисляющую записанное в строке выражение.
Алгоритм:
1. Инициализируем строку константным выражением по условию (строковым литералом).
2. Объявляем символьный массив (массив типа char).
3. Помещаем искомое число в новую переменную, используя функцию copy_if(), итераторы и лямбда-выражения.
4. Выводим результат на экран, предварительно вычислив значение строкового выражения с помощью функций sqrt() и stod().
Решение:
*/
#include <iostream> //Заголовочный файл с классами, функциями и переменными для организации ввода-вывода в языке программирования C++
#include <string> //Заголовочный файл для работы c переменными типа string
#include <algorithm> //Заголовочный файл для работы функции copy_if()
#include <cmath> //Заголовочный файл для работы функции sqrt()
#include <cctype> //Заголовочный файл для работы функции isdigit()
using namespace std; //Пространство имен
int main() {
string s = "Square root of 2.56"; //Объявляем и инициализируем строку (строковое выражение)
char res[255]; //Объявляем символьный массив (туду мы скопируем нужные элементы)
cout << "Output of the program:\n";
copy_if(s.begin(), s.end(), res, [&](char ch) { return (isdigit(ch) || ch == '.'); }); //Копируем символы, являющиеся цифрами и точку
cout << sqrt(stod(res)) << "\n"; //Выводим результат на экран
system("pause"); //Функция задержки экрана консоли
return 0; //Функция main() возвратила ноль при успешном выполнении программы (то есть, в коде выше ошибок не было)
} |
|
0
|