g++ 4.x
Версия реализации g++ языка программирования C++Стабильная и развивающаяся ветка компилятора g++.
Примеры:
Факториал - C++ (6):
Используется рекурсивное определение факториала.
#include <iostream>
unsigned long long factorial(unsigned long long n)
{
if (n == 0)
return 1;
else
return n * factorial (n - 1);
}
int main(void)
{
for (int n = 0; n <= 16; n++)
std::cout << n << "! = " << factorial(n) << std::endl;
return 0;
}
Hello, World! - C++ (34):
#include <iostream>
int main(void)
{
std::cout << "Hello, World!" << std::endl;
return 0;
}
CamelCase - C++ (272):
Эта программа обрабатывает введенную строку посимвольно. Функция getline
считывает из потока ввода, заданного первым аргументом, строку (не до пробела, а до конца строки) и записывает ее во второй аргумент. Стандартная функция tolower
работает только с одиночными символами, поэтому для преобразования в нижний регистр строки целиком используется функция transform
, которая применяет заданную функцию ко всем элементам вектора (а в STL строка — это вектор символов). Затем для каждого символа строки проверяется, является ли он символом алфавита (функция isalpha
), и в зависимости от результата он либо дописывается в конец результирующей строки (в верхнем регистре, если перед ним был не-алфавитный символ), либо устанавливает признак “последний символ был пробелом”. Функция isalpha
работает с символами любого регистра, поэтому перевод в нижний регистр можно было делать не отдельным действием над всей строкой, а при присоединении каждого отдельного символа.
#include <string>
#include <iostream>
#include <algorithm>
using namespace std;
int main() {
string text, cc="";
bool lastSpace = true;
getline(cin, text);
transform(text.begin(), text.end(), text.begin(), (int (*)(int))tolower);
for (int i=0; i<text.size(); i++)
if (isalpha(text[i])) {
if (lastSpace)
cc += toupper(text[i]);
else
cc += text[i];
lastSpace = false;
}
else {
lastSpace = true;
}
cout << cc << endl;
return 0;
}
Числа Фибоначчи - C++ (490):
Используется итеративное вычисление чисел Фибоначчи; вычисленные значения сохраняются в массиве.
#include <iostream>
#include <vector>
using std::cout;
using std::vector;
int main() {
vector<int> fib(17);
fib[0] = 0;
fib[1] = 1;
for (int i = 2; i < 17; ++i) {
fib[i] = fib[i - 2] + fib[i - 1];
}
for (int i = 1; i < 17; ++i) {
cout << fib[i] << ", ";
}
cout << "...\n";
}
Комментарии
]]>blog comments powered by Disqus
]]>