setlocale(LC_ALL, "rus"); do { system("cls"); for (int i(0); i < 3; i++) { for (int j(0); j < 3; j++) { table[i][j] = char('1' + i * 3 + j); } } cout << "\t\t*** крестики нолики ***\n\n"; cout << "\tПравила:\n"; cout << "\tиграют два игрока на поле 3х3\n"; cout << "\tпобеждает тот кто составит выигрышную комбинацию\n";
cout << "\n\tДля хода нажмите на цифру ячейки поля\n"; cout << "\tВведите Имя 1-го. игрока за X: ", cin.getline(nam1, 30); cout << "\tВведите Имя 2-го. игрока за 0: ", cin.getline(nam2, 30); int i = 0; bool L = false, Result; do { ПерерисовкаИгровогоПоля(); if (L) cout << "Вы вели неверные данные!"; L = !input((_getch() - '0')); Result = win(); } while (!Result && i < 9); //system("cls"); ПерерисовкаИгровогоПоля(); if (Result) { if (xod) cout << "\n\n\tПобедил 0 " << nam2 << endl; else cout << "\n\n\tПобедил X " << nam1 << endl; } else cout << "\tНичия!! \n";
cout << "\tВыберите действие: " << "\n\n"; cout << "\t1 - Пройти задачу повторно " << "\n\n"; cout << "\t( Нажмите: 0 Для завершения программы. )" << "\n";
В y1, y2 теперь значения в точках 0, 0,1, 0,2, ..., 1. С ними можно делать что угодно, у меня по ним построены графики.
(Код для построения, работает на сайте, где у меня это было запущено. import matplotlib matplotlib.use('Agg') import matplotlib.pyplot as plt fig = plt.figure() ax = fig.add_subplot(111) ax.plot(x, y1, '-r', label="Euler") ax.plot(x, y2, '-g', label="Euler+") ax.legend() fig.savefig('graph.png') )
Зеленый график должен быть ближе к истинному решению, чем красный.
Код Visual C++, Win32, Консоль:
#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include <random>
#include <time.h>
#include <Windows.h>
using namespace std;
char table[3][3];
char nam1[30];
char nam2[30];
bool xod;
bool input(int n)
{
if (n<1 || n>9)
return false;
int i, j;
if (n % 3 == 0)
{
i = n / 3 - 1;
j = 2;
}
else
{
j = n % 3 - 1;
i = n / 3;
}
if (table[i][j] == 'O' || table[i][j] == 'X')
return false;
if (xod)
{
table[i][j] = 'X';
xod = false;
}
else { table[i][j] = 'O'; xod = true; }
return true;
}
bool win()
{
for (int i(0); i < 3; i++)
{
if (table[i][0] == table[i][1] && table[i][1] == table[i][2]) return true;
}
for (int i(0); i < 3; i++)
{
if (table[0][i] == table[1][i] && table[1][i] == table[2][i]) return true;
}
if (table[0][0] == table[1][1] && table[1][1] == table[2][2]
|| table[0][2] == table[1][1] && table[1][1] == table[2][0]) return true;
return false;
}
void ПерерисовкаИгровогоПоля()
{
system("cls");
if (xod)
cout << "\tХодит X " << nam1 << " : \n\n";
else cout << "\tХодит 0 " << nam2 << " : \n\n";
for (int i(2); i >= 0; i--)
{
cout << "\t";
for (int j(0); j < 3; j++)
{
cout << "| " << table[i][j] << ' ';
}
cout << '|';
cout << endl;
}
}
int main()
{
setlocale(LC_ALL, "rus");
do
{
system("cls");
for (int i(0); i < 3; i++)
{
for (int j(0); j < 3; j++)
{
table[i][j] = char('1' + i * 3 + j);
}
}
cout << "\t\t*** крестики нолики ***\n\n";
cout << "\tПравила:\n";
cout << "\tиграют два игрока на поле 3х3\n";
cout << "\tпобеждает тот кто составит выигрышную комбинацию\n";
cout << "\n\tДля хода нажмите на цифру ячейки поля\n";
cout << "\tВведите Имя 1-го. игрока за X: ", cin.getline(nam1, 30);
cout << "\tВведите Имя 2-го. игрока за 0: ", cin.getline(nam2, 30);
int i = 0;
bool L = false, Result;
do
{
ПерерисовкаИгровогоПоля();
if (L) cout << "Вы вели неверные данные!";
L = !input((_getch() - '0'));
Result = win();
}
while (!Result && i < 9);
//system("cls");
ПерерисовкаИгровогоПоля();
if (Result)
{
if (xod)
cout << "\n\n\tПобедил 0 " << nam2 << endl;
else cout << "\n\n\tПобедил X " << nam1 << endl;
}
else cout << "\tНичия!! \n";
cout << "\tВыберите действие: " << "\n\n";
cout << "\t1 - Пройти задачу повторно " << "\n\n";
cout << "\t( Нажмите: 0 Для завершения программы. )" << "\n";
} while (_getch() == '1');
cout << "\n\n\tПроверка задания закончена " << endl << endl;
_getch();
}
import numpy as np
def f(x, y):
return (1 - x*x)/y + 1
step = 0.1
x_start = 0.
x_end = 1.
y_init = 1.
x = np.arange(x_start, x_end + step/2, step)
y1 = np.zeros(len(x))y2 = np.zeros(len(x))
y1[0] = y2[0] = y_init
for i in range(len(x) - 1):
y1[i + 1] = y1[i] + f(x[i], y1[i]) * step
y2[i + 1] = y2[i] + f(x[i] + step/2, y2[i] + f(x[i], y2[i]) * step/2) * step
В y1, y2 теперь значения в точках 0, 0,1, 0,2, ..., 1. С ними можно делать что угодно, у меня по ним построены графики.
(Код для построения, работает на сайте, где у меня это было запущено.
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt
fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot(x, y1, '-r', label="Euler")
ax.plot(x, y2, '-g', label="Euler+")
ax.legend()
fig.savefig('graph.png')
)
Зеленый график должен быть ближе к истинному решению, чем красный.