]]> ]]>

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

]]>

Работа программистам