// Следующая строка при компиляции будет заменена на содержимое файла helloworld.h
#include "helloworld.h"
int main(int argc, char** argv)
{
helloworld(); // Вызываем функцию определённую в другом файле.
return 0;
}
// Следующая конструкция называется include guard.
// Благодаря ней вы не сможете вставить содержимое этого файла дважды,
// что поможет вам избежать ошибок переопределения.
#ifndef HELLOWORLD_H
#define HELLOWORLD_H
// Объявление функции.
// Если функция объявлена но не определена в данном файле,
// компилятор будет искать её реализацию в других файлах.
void helloworld();
#endif
// Снова вставляем содержимое файла helloworld.h
#include "helloworld.h"
#include <iostream>
// Определяем функцию.
void helloworld()
{
std::cout << "Hello, world!";
}
gcc file_name.cpp -lstdc++
msvc++
и g++
делают это автоматически. Наверняка как-то это уже реализованно/упрощено с помощью стл или буст или чего-то еще.
не нуждается в централизованном хранилище: вся история изменения документов хранится на каждом компьютере, в локальном хранилище, и при необходимости отдельные фрагменты истории локального хранилища синхронизируются с аналогичным хранилищем на другом компьютере.
class DecimalFixedPoint
{
public:
static const int denominator = 100; // Affect on precison
friend std::ostream& operator<<(std::ostream& stdout, DecimalFixedPoint dfp);
DecimalFixedPoint() : numerator(0) {}
DecimalFixedPoint(int i, bool) : numerator(i) {}
DecimalFixedPoint(int i) : numerator(i * denominator) {}
explicit DecimalFixedPoint(float f) : numerator(f * denominator) {}
explicit DecimalFixedPoint(double d) : numerator(d * denominator) {}
DecimalFixedPoint operator+(const DecimalFixedPoint& right)
{
return DecimalFixedPoint(numerator + right.numerator, true);
}
DecimalFixedPoint operator-(const DecimalFixedPoint& right)
{
return DecimalFixedPoint(numerator - right.numerator, true);
}
DecimalFixedPoint operator*(const DecimalFixedPoint& right)
{
return DecimalFixedPoint(numerator * right.numerator / denominator, true);
}
DecimalFixedPoint operator/(const DecimalFixedPoint& right)
{
return DecimalFixedPoint(numerator * denominator / right.numerator, true);
}
private:
int numerator;
};
std::ostream& operator<<(std::ostream& stdout, DecimalFixedPoint dfp)
{
stdout << dfp.numerator / DecimalFixedPoint::denominator
<< '.'
<< dfp.numerator % DecimalFixedPoint::denominator;
return stdout;
}
DecimalFixedPoint(int i, bool) : numerator(i) {}
второй параметр нужен для того, чтоб сигнатура отличалась от конструктора DecimalFixedPoint(int i) : numerator(i * denominator) {}
Если вызывается конструктор с параметром bool
, подразумевается, что мы не приводим целое число к нашему типу, а передаём заранее вычисленный числитель нашей дроби. Это, конечно, костыль, но так как такой подход используется в самом стандарте C++ (перегрузка префиксных и постфиксных инкремента/декремента), то совесть моя чиста. isPrime = true;
А если находится число, деление на которое происходит нацело, то есть остаток от деления равен нулю if((i%j) == 0)
, тогда доказано обратное, данное число составное: isPrime = false;
i < 100
, то в проверку пойдёт и само число, а так как число нацело делится само на себя, остаток будет 0 и условие сработает неправильно. Внутренний цикл перебирает делители числа, а для числа N, они находятся в диапазоне [1, N], однако так как и простые числа делятся на 1 и на самих себя, проверять нужно только диапазон (1, N).j<(i/j)
как раз обеспечит перебор целых чисел в диапазоне [2, √N].for (j=2; j<(i/j); j++) {
if((i%j) == 0) {
isPrime = false;
break;
}
}
for each
, он не является частью стандарта языка C++ и поддерживается только в VisualStudio.for (string strFILE : v_strSEARCH)
{
cout << "Файл " << v_strFILE << endl;
}
return vector<string>();
public MyStruct MM
{
get {return _mm;}
}
set
{
_mm = value;
OnPropertyChanged("MM");
}
public MyStruct MM
{
get {return _mm;}
set
{
_mm = value;
OnPropertyChanged("MM");
}
}
#/usr/bin/env python3
# -*- coding: utf-8 -*-
def compress(msg):
c_msg = ""
prev_char = ""
count = 1
for curr_char in msg:
if curr_char != prev_char:
if prev_char:
c_msg += str(count)
c_msg += curr_char
count = 1
else:
count += 1
prev_char = curr_char
c_msg += str(count)
return c_msg
for count, item in enumerate(result23):
...
for count, item in enumerate(result23):
cur.executescript(
"""INSERT INTO result """
"""('#','number','target_1', 'target_2','bet_size','payot') """
"""VALUES (""" +
",".join((str(count), item, str(result2).replace('\'',''),
str(result3), str(result4), str(result5))) +
");"
)
int gcd(int a, int b) {
int c;
while (b) {
c = a % b;
a = b;
b = c;
}
return abs(a);
}
int a = 16;
int b = 4;
gcd(a, b);
cout << a << ' ' << b; // Выведет "16 4", а не "4 0"
template<T> struct LinkedListItem
{
T value;
LinkedListItem* next;
};
#include <iostream>
float f1(float x)
{
return 2 * x + 6;
}
float f2(float x)
{
return -3 * x * x + 8 * x - 6;
}
void printTable(float(*f)(float), float beg=0.f, float end=10.f, float step = 1.f)
{
for(float x = beg; x <= end; x += step)
{
std::cout << "x = " << x << "\ty = " << f(x) << '\n';
}
}
int main(int argc, char** argv)
{
printTable(f1);
printTable(f2);
}
chown
sudo chown Samba:Samba /var/www
sudo chmod 755 /var/www
cout << static_cast<char>(7);
(x1 != x2 or y1 != y2) and # Первая точка не совпадает со второй и...
(x1 != x3 or y1 != y3) and # Первая точка не совпадает с третьей и...
(x2 != x3 or y2 != y3) and # Вторая точка не совпадаят с третьей и...
((x1 == x2 and x2 == x3) or # X-координаты всех точек равны или...
(y1 == y2 and y2 == y3)) # Y-координаты всех точек равны