Здравствуйте, Neyaa!
Я перевела Вашу программу, она компилируется (в VS 2003, в другой среде может быть разница в хидерах (библиотеках в include)), саму работу программы не проверяла. Синтаксис С++ можете посмотреть сами, но уточню некоторые моменты.
[b]Цикл:[/b][i]Pascal:[/i] for i:=1 to n do begin тело_цикла end;
[i]C++:[/i] for (i=0; i<n; i++) {тело_цикла} - массивы в си по умолчанию нумеруются с 0
[b]Объявление типа:[/b][i]Pascal:[/i] type Domin_Arr=array[1..10] of Kostyashka;
[i]C++:[/i] typedef Domin_Arr Kostyashka [10];
[b]Подключение библиотек:[/b][i]Pascal:[/i] uses имя_библиотеки;
[i]C++:[/i] #include "имя_библиотеки.h" или #include <имя_библиотеки[.h]> (для стандартных библиотек)
[b]Описание функции (процедуры):[/b][i]Pascal:[/i] function Имя_функции (список_параметров): тип; или procedure Имя_процедуры (список_параметров);
[i]C++:[/i] тип Имя_функции (список_параметров) - аналог процедуры - функция типа void
[b]Возвращаемый параметр:[/b][i]Pascal:[/i] var имя: тип
[i]C++:[/i] тип &имя
[b]Функции реакции пользователя:[/b][i]Pascal:[/i] readkey, keypressed
[i]C++:[/i] getch(), kbhit() соответсвенно
[b]Функции ввода данных:[/b][i]Pascal:[/i] read[ln] -- write[ln]
[i]C++:[/i] cin, scanf -- cout, printf
В С++
[b]основная программа - функция[/b] с зарезервированным именем
[b]main[/b], как правило, типа int, но может быть и void. Аналогом типа record можно считать тип struct.
Более подробно о синтаксисе читайте
тут или
здесь.
Удачи!
Приложение:
#include <conio.h>
#include <iostream>
using namespace std;
struct Kostyashka { //этот тип определяет костяшку, где a, b-числа на сторонах
int a;
int b;
};
typedef Kostyashka Domin_Arr [10]; //этот тип определяет массив костяшек
/*Раздел описания глобальных переменных:
b - исходный массив костяшек, rer - промежуточный, а result - массив хранения результата.
Busy - массив хранения индексов занятых в исходном массиве костяшек*/
int n, i, _max; //В си есть такая функция, поэтому _max
Domin_Arr b, rer, result;
bool busy [10];
/*Возвращает 0 если костяшку х нельзя подставить к z,
1-если можно без поворота х, 2-если с поворотом*/
int yes (Kostyashka z, Kostyashka x)
{
if (x.a==z.b) return 1;
else
if (x.b==z.b) return 2;
else return 0;
}
//выполняет поворот костяшки q
void reverse (Kostyashka &q)
{
int k;
k = q.a; q.a = q.b; q.b = k;
}
/*Сердце программы процедура построения цепочки.
Параметры j-номер подставляемой костяшки,
K – номер вложения и элемента массива rer*/
void built (int j, int k)
{
int v; //обязательно локальная переменная цикла
if (kbhit()) exit (1); //Аналог keypressed
busy[j] = true; //Добавляем в конец массива rer костяшку b[s] (rer - стек)
rer[k] = b[j]; //запоминаем ее номер в исходном массиве
for (v=0; v<n; v++) //цикл перебора
if (!busy[v]) //если костяшка с номером v не занята
if (yes(rer[k],b[v])==1) built(v,k+1); //если подходит, то подставляем ее в качестве следущей
else
if (yes(rer[k],b[v])==2) {
reverse(b[v]); built(v,k+1); }
busy[j]=false; //забываем
if (k>_max) {
_max=k;
for (i=0; i<n; i++)//если цепочка максимальная относительно имеющейся
result[i]=rer[i]; //нельзя просто так присваивать массив, надо поэлементно
}
}
//основная программа
int _tmain(int argc, _TCHAR* argv[])
{
cin >> n;
for (i=0; i<n; i++) {
cin >> b[i].a;
cin >> b[i].b;
}
for (i=0; i<n; i++) {
built(i,1); //подставляем каждую костяшку в качестве первой и строим от нее цепочку
reverse(b[i]);
built(i,1);
}
for (i=0; i<n; i++) //вывод результата
printf ("%4i:%i", result[i].a, result[i].b);
_getch ();
return 0;
}