///// unit.h /////
#ifndef UNIT_H
#define UNIT_H
extern int myVar;
#endif
///// unit.cpp /////
#include "unit.h"
int myVar;
///// main.cpp /////
#include "unit.h"
int main()
{
myVar = 1;
}
///// unit.h /////
#ifndef UNIT_H
#define UNIT_H
int myVar;
#endif
///// main.cpp /////
#include "unit.h"
int main()
{
myVar = 1;
}
#define LEFTPANEL 200
enum {
LEFTPANEL = 200
};
ВОЗМОЖНО для констант, влезающих в int.extern const int LEFTPANEL;
....
const int LEFTPANEL = 200;
ВОЗМОЖНО для любых констант.constexpr int LEFTPANEL = 200;
static const int LEFTPANEL = 200;
package ru.toster.java.q241826;
import java.util.Date;
import java.util.Scanner;
public class App {
public static void main(String[] args) {
Scanner scnr = new Scanner(System.in);
while (true) {
System.out.print("enter command>");
String command = scnr.nextLine();
if ("help".equals(command)) {
printListCommand();
} else if ("date".equals(command)) {
printDate();
} else if ("time".equals(command)) {
printTime();
} else if ("exit".equals(command)) {
System.out.println("Good Bye!");
break;
} else {
System.out.println("Unknown command! Please enter 'help'");
}
}
scnr.close();
}
private static void printTime() {
System.out.printf("%1tT\n", new Date());
}
private static void printDate() {
System.out.printf("%1tY-%1$tm-%1$td\n", new Date());
}
private static void printListCommand() {
System.out.println(
"'help'\tprint list commands;\n" +
"'exit'\texit from programm;\n" +
"'date'\tprint today's date;\n" +
"'time'\tprint current time;");
}
}
Ret (Class::*)(Args...) [const]
. Сам указатель получать &Class::Fun
, а вызывать операторами .*
или ->*
std::function
(boost::function
), std::bind
(boost::bind
) или std::mem_fun, std::mem_fn
для более унифицированного подхода:struct some
{
some() : value(0) {}
int inc() { return ++value; }
int dec() { return --value; }
int get() const { return value; }
int value;
};
int main()
{
some s;
int (some::*inc_f)() = &some::inc; // inc_f - указатель на функцию
std::cout << "(s.*inc_f)() = " << (s.*inc_f)() << std::endl; // оператор .* - оператор вызова по указателю на функцию
int (some::*val_ptr) = &some::value; // val_ptr - указатель на член
s.*val_ptr = 10;
std::cout << "s.*val_ptr = " << s.*val_ptr << std::endl;
int (some::*const_f)() const = &some::get; // const-функция
std::cout << "s.*const_f() = " << (s.*const_f)() << std::endl;
using namespace std::placeholders;
std::function<int (some&)> mem_f;
mem_f = std::bind(&some::inc, _1); // биндим на функцию-член, _1 - placeholder для объекта
std::cout << "mem_f(s) = " << mem_f(s) << std::endl; // s.inc();
mem_f = std::mem_fn(&some::dec); // другой способ через mem_fn
std::cout << "mem_f(s) = " << mem_f(s) << std::endl; // s.dec();
std::function<int()> mem_f_ = std::bind(&some::inc, &s); // биндим на функцию член и сразу указываем объект, получаем функцию без аргументов
std::cout << "mem_f_() = " << mem_f_() << std::endl; /// s.inc();
std::function<int(some const &)> const_fn = std::mem_fn(&some::get); // some const &
std::cout << "const_fn(s) = " << const_fn(s) << std::endl;
return 0;
}
$arr1 = [1,2,3,4,5,7,2,8];
$arr2 = [2,9,5,5,7,2,8,1];
$len = count($arr1);
$conformity = [];
for($i = 0; $i < $len; $i++) {
/**
* $temp содержит нули в позициях, где числа в двух массивах
* по одному и тому же индексу не равны. Единицы — там, где равны.
*/
$temp = array_map(function($x,$y){return intval($x==$y);}, $arr1, $arr2);
// Элементы полученного массива суммируются и добавляются в отчётный массив
$conformity[] = array_sum($temp);
// Массив прокручивается на одну позицию
$arr1[] = array_shift($arr1);
}
//С помощью max($conformity) выбирается максимальное совпадение элементов
echo sprintf("Max conformity is %s%%\n", number_format(100*(max($conformity)/$len), 2));
$arr1 = [1,2,3,4,5,7,2,8];
$arr2 = [2,9,5,5,7,2,8,1];
function conformity($arr1, $arr2) {
$len = count($arr1);
$max = $curr = 0;
for($i = 0; $i < $len; $i++) {
array_map(function($x,$y)use(&$curr){$curr += intval($x==$y);}, $arr1, $arr2);
if($curr == $len) {
return 100;
}
$max = $max > $curr ? $max : $curr;
$curr = 0;
$arr1[] = array_shift($arr1);
}
return 100*($max/$len);
};
echo sprintf("Max conformity is %s%%\n", number_format(conformity($arr1, $arr2), 2));