Разговорник PascalABC.NET — C++ — различия между версиями
Ulysses (обсуждение | вклад) (→Простейшие программы) |
Ulysses (обсуждение | вклад) |
||
Строка 7: | Строка 7: | ||
<source lang="Pascal"> | <source lang="Pascal"> | ||
− | |||
begin | begin | ||
Writeln('Hello, world'); | Writeln('Hello, world'); | ||
Строка 23: | Строка 22: | ||
int main() { | int main() { | ||
− | cout << "Hello world!" << endl; | + | cout << "Hello world!" << endl; // двойные кавычки для строковых литералов! |
} | } | ||
</source> | </source> | ||
Строка 43: | Строка 42: | ||
<source lang="Cpp"> | <source lang="Cpp"> | ||
#include <iostream> | #include <iostream> | ||
− | #include < | + | #include <locale> // для отображения кириллицы в консоли |
using namespace std; // подключение сразу всех имён из «пространства имён» std; | using namespace std; // подключение сразу всех имён из «пространства имён» std; | ||
Строка 49: | Строка 48: | ||
int main() { | int main() { | ||
− | + | std::locale::global(std::locale("")); // для отображения кириллицы в консоли; | |
− | |||
double a, h; | double a, h; | ||
Строка 79: | Строка 77: | ||
<source lang="cpp"> | <source lang="cpp"> | ||
#include <iostream> | #include <iostream> | ||
− | #include < | + | #include <locale> |
using namespace std; | using namespace std; | ||
int main() { | int main() { | ||
− | + | std::locale::global(std::locale("")); | |
int n; | int n; | ||
Строка 112: | Строка 110: | ||
<source lang="Cpp"> | <source lang="Cpp"> | ||
#include <iostream> | #include <iostream> | ||
− | #include < | + | #include <locale> |
#include <cmath> // математические функции и константы | #include <cmath> // математические функции и константы | ||
Строка 118: | Строка 116: | ||
int main() { | int main() { | ||
− | + | std::locale::global(std::locale("")); | |
double x; | double x; | ||
Строка 183: | Строка 181: | ||
== Определение функций == | == Определение функций == | ||
В примерах ниже опущено включение (#include) уже знакомых заголовочных файлов и директивы using (примеры см. выше). | В примерах ниже опущено включение (#include) уже знакомых заголовочных файлов и директивы using (примеры см. выше). | ||
+ | |||
+ | 0. Написать подпрограмму, печатающую «Здравствуй, мир!» на консоль и вызвать её в основной программе. | ||
+ | <source lang="Pascal"> | ||
+ | // Печать «Здравствуй, мир!» на консоль | ||
+ | procedure HelloWorld; | ||
+ | begin | ||
+ | Writeln('Здравствуй, мир!'); | ||
+ | end; | ||
+ | |||
+ | begin | ||
+ | HelloWorld | ||
+ | end. | ||
+ | </source> | ||
+ | |||
+ | <source lang="Cpp"> | ||
+ | // Печать «Здравствуй, мир!» на консоль | ||
+ | void HelloWorld() { // void указывает на отсутствие возвращаемого значения — аналог процедуры | ||
+ | cout << "Здравствуй, мир!" << endl; | ||
+ | } | ||
+ | |||
+ | int main() { | ||
+ | std::locale::global(std::locale("")); | ||
+ | HelloWorld(); // Обратите внимание: () и ; необходимы!!! | ||
+ | } | ||
+ | </source> | ||
+ | |||
1. Написать функцию, вычисляющую гипотенузу по заданным катетам. | 1. Написать функцию, вычисляющую гипотенузу по заданным катетам. |
Версия 01:08, 9 марта 2011
Содержание
Ниже приведены примеры программ на двух языках: на PascalABC.NET и на C++.
Простейшие программы
1. Вывести приветствие "Hello, world".
begin
Writeln('Hello, world');
end.
#include <iostream>
/* ^ для использования стандартных средств
ввода-вывода */
using std::cout; // для использования далее cout — стандартного потока вывода —
// без уточнения «std::»
using std::endl; // аналогично; символ перехода на новую строку
int main() {
cout << "Hello world!" << endl; // двойные кавычки для строковых литералов!
}
2. Вычислить площадь треугольника по заданному основанию и высоте.
program TriangleSquare;
begin
Writeln('Введите основание и высоту');
var a, h: real;
Readln(a, h);
Writeln('S = ', a * h / 2);
end.
#include <iostream>
#include <locale> // для отображения кириллицы в консоли
using namespace std; // подключение сразу всех имён из «пространства имён» std;
// удобно, но возможны конфликты стандартных имён с вашими!
int main() {
std::locale::global(std::locale("")); // для отображения кириллицы в консоли;
double a, h;
cout << "Введите основание и высоту: ";
cin >> a >> h;
cout << "S = " << a * h / 2 << endl;
}
3. Вычислить сумму цифр заданного целого двузначного числа.
// Сумма цифр целого двузначного числа
program Digits;
begin
Writeln('Введите целое двузначное число');
var n: integer;
Readln(n);
var d1 := n div 10;
var d2 := n mod 10;
var digitsSum := d1 + d2;
Writeln('S=', digitsSum);
end.
#include <iostream>
#include <locale>
using namespace std;
int main() {
std::locale::global(std::locale(""));
int n;
cout << "Введите целое двузначное число: ";
cin >> n;
int d1 = n / 10, d2 = n % 10;
int digitsSum = d1 + d2;
cout << "S = " << digitsSum << endl;
}
4. Проверить, выполняется ли основное тригонометрическое тождество для заданного угла в радианах.
program SinCos;
begin
Writeln('Введите значение угла в радианах');
var x: double;
Readln(x);
Writeln('Проверяем основное тригонометрическое тождество: 1 = ',
sqr(sin(x)) + sqr(cos(x)));
end.
#include <iostream>
#include <locale>
#include <cmath> // математические функции и константы
using namespace std;
int main() {
std::locale::global(std::locale(""));
double x;
cout << "Введите значение угла в радианах: ";
cin >> x;
cout << "Проверяем основное тригонометрическое тождество: 1 = "
<< pow(sin(x), 2) + pow(cos(x), 2) << endl;
}
5. Вывести случайные целые от 0 до 99 и от 10 до 99, а также случайное вещественное от 0 до 1.
program Randoms;
begin
// Случайное целое от 0 до 99
var n: integer;
n := Random(100);
Writeln(n);
// Случайное целое от 10 до 99
var n2: integer;
n2 := Random(10, 100);
Writeln(n2);
// Случайное вещественное от 0 до 1
var d: real;
d := Random;
Writeln(d);
end.
#include <iostream>
#include <cstdlib> // для использования генератора случайных чисел
#include <ctime> // функции времени для инициализации генератора с. ч.
using namespace std;
int main() {
srand(unsigned(time(0))); // инициализации генератора с. ч.
// rand() генерирует псевдослучайное целое число от 0 до
// константы RAND_MAX, значение которой не меньше, чем 32767
// Случайное целое от 0 до 99
int n1 = rand() % 100;
cout << n1 << endl;
// Случайное целое от a=10 до b=99
const int a = 10;
const int b = 100;
int n2 = rand() % (b - a) + a;
cout << n2 << endl;
// Случайное вещественное от 0 до 1
double d = static_cast<double>(rand()) / RAND_MAX;
cout << d << endl;
}
Определение функций
В примерах ниже опущено включение (#include) уже знакомых заголовочных файлов и директивы using (примеры см. выше).
0. Написать подпрограмму, печатающую «Здравствуй, мир!» на консоль и вызвать её в основной программе.
// Печать «Здравствуй, мир!» на консоль
procedure HelloWorld;
begin
Writeln('Здравствуй, мир!');
end;
begin
HelloWorld
end.
// Печать «Здравствуй, мир!» на консоль
void HelloWorld() { // void указывает на отсутствие возвращаемого значения — аналог процедуры
cout << "Здравствуй, мир!" << endl;
}
int main() {
std::locale::global(std::locale(""));
HelloWorld(); // Обратите внимание: () и ; необходимы!!!
}
1. Написать функцию, вычисляющую гипотенузу по заданным катетам.
// Значение гипотенузы по двум заданным катетам
function Hypotenuse(a, b : real) : real;
begin
result := sqrt(sqr(a) + sqr(b));
end;
// Значение гипотенузы по двум заданным катетам
double hypotenuse(double a, double b) {
return sqrt(a*a + b*b);
}
2. Написать подпрограмму, принимающую три целых числа и печатающую на консоль «Given sequence is monotonic: x», где x — истинностное значение условия: полученные числа составляют монотонную последовательность.
// Проверка трёх чисел на монотонность
procedure IsMonotonic(a, b, c : integer);
begin
Writeln("Given sequence is monotonic: ",
((a < b) and (b < c)) or ((c < b) and (b < a)));
end;
// Проверка трёх чисел на монотонность
void isMonotonic(int a, int b, int c) {
cout << "Given sequence is monotonic: " <<
(((a < b) && (b < c)) || ((c < b) && (b < a))) << endl;
}
// Проверка трёх чисел на монотонность
void isMonotonic(int a, int b, int c) {
cout << "Given sequence is monotonic: " <<
// ver. 2 -- без лишних скобок с учетом приоритета операций
(a < b && b < c || c < b && b < a) << endl;
}
3. Написать подпрограмму, которая по заданному двухзначному целому числу n возвращает два однозначных числа, определённых первой и второй цифрами n.
// разбиение целого двузначного числа n на цифры
procedure Figures(n: integer; var first, second : integer);
begin
first := n div 10;
second := n mod 10;
end;
// разбиение целого двузначного числа n на цифры
void figures(int n, int & first, int & second) {
first = n / 10;
second = n % 10;
}
4. Написать функцию целочисленного аргумента, возвращающее целое число по правилу:
function f(x: integer) : integer;
begin
if (x < -2) or (2 < x) then
result := 2 * x
else
result := -3 * x;
end;
int f(int x) {
if (x < -2 || 2 < x) // ver. 1 -- оператор if
return 2 * x;
else
return -3 * x;
}
int f(int x) {
// ver. 2 -- условная операция(?:) :
return (x < -2 || 2 < x) ? (2 * x) : (-3 * x);
}
5. Даны целые числа K и N (N > 0). Вывести N раз число K.
// Печать числа K ровно N раз
procedure PrintNtimes(K, N: integer);
var i : integer;
begin
for i := 1 to N do
Write(K, ' ');
end;
// Печать числа K ровно N раз
void printNtimes(int K, int N) {
for (int i = 0; i < N; ++i) {
cout << K << " ";
}
}