Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.12.2010, 12:19   #11
Balthazar
 
Регистрация: 06.12.2010
Сообщений: 5
По умолчанию

помогите перевести эту задачу пожалуйста:
uses crt;
var st:string;
i,j:byte;
begin
writeln('Введите арифметическое выражение: ');
readln(st);
for i:=2 to length(st) do begin
if st[i-1] in ['+','-','*','/'] then
if st[i] in ['+','-','*','/'] then
inc(j);
end;
for i:=2 to length(st) do begin
if (st[i-1] in ['0'..'9']) and (st[i] in [' '])
and (st[i+1] in ['0'..'9'])then inc(j);
if (st[i-1] in ['+','-','*','/']) and (st[i] in [' '])
and (st[i+1] in ['+','-','*','/'])then inc(j);
end;
if j=0 then
writeln('Данное выражение записано верно!')
else
writeln('Данное выражение записано не верно!');
end.


Создайте свою тему, не пишите в чужой!

Последний раз редактировалось alex_fcsm; 07.12.2010 в 12:26.
Balthazar вне форума Ответить с цитированием
Старый 20.04.2012, 14:03   #12
Nyrzhan
Новичок
Джуниор
 
Регистрация: 20.04.2012
Сообщений: 1
По умолчанию

помогите пожалуйста перевести программу из visual C++ на borland C++
#include <vcl.h>
#pragma hdrstop
#include "Main.h"
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
__fastcall TForm1::TForm1(TComponent* Owner): TForm(Owner)
{
}
void __fastcall TForm1::Button1Click(TObject *Sender)
{
//установка начальных значений элементов массивов
int board[][8] = {{0},{0},{0},{0},{0},{0},{0},{0}};
int horizontal[] = {2, 1, -1, -2, -2, -1, 1, 2};
int vertical[] = {-1, -2, -2, -1, 1, 2, 2, 1};
int accessibility[][8] = {{2,3,4,4,4,4,3,2},
{3,4,6,6,6,6,4,3},
{4,6,8,8,8,8,6,4},
{4,6,8,8,8,8,6,4},
{4,6,8,8,8,8,6,4},
{4,6,8,8,8,8,6,4},
{3,4,6,6,6,6,4,3},
{2,3,4,4,4,4,3,2}};
//инициализация генератора случайных чисел
srand(time(NULL));
bool Go = true; //признак того, что можно начинать ходить try
{
//установка начальных значений
currentRow = StrToInt(Edit2->Text);
currentColumn = StrToInt(Edit1->Text);
//проверка допустимости начальных значений
if(currentRow>7 || currentRow<0 || currentColumn>7 ||currentColumn<0)
{
//сообщение об ошибке
Application->MessageBoxA("Вы должны ввести цифру от 0 до 7","Ошибка", MB_OK);
Go = false;
}
}
catch(...)
{
Application->MessageBoxA("Вы должны ввести цифру от 0 до 7","Ошибка", MB_OK);
Go = false;
}
//начинаем искать решение
if(Go)
{
//устанавливаем коня на заданную клетку
DecAccessibility(accessibility, horizontal, vertical,currentRow, currentColumn);
board[currentRow][currentColumn] = 1;
StringGrid1->Cells[currentColumn][currentRow] = IntToStr(1);
int MoveNumber; //код хода
int count = 1; //счетчик ходов
bool exit = true; //нужна для выхода из цикла
//перемещаем коня пока это возможно
do
{
MoveNumber = FindMove(board, accessibility, vertical,horizontal, currentRow, currentColumn);
if (MoveNumber !=-1)
{
count++;
move(board, vertical, horizontal, currentRow,currentColumn, MoveNumber, count);
DecAccessibility(accessibility, vertical, horizontal,currentRow, currentColumn);
}
else exit = false;
}
while(exit);
}
}

void TForm1::move(int board[][8], int vertical[], int horizontal[],int &currentRow, int &currentColumn, int Numb, int cnt)
{
//изменяем текущие координаты
currentRow += vertical[Numb];
currentColumn += horizontal[Numb];
//запоминаем, что на этой клетке мыуже были
board[currentRow][currentColumn] = 1;
//выводим номер хода в StringGrid
StringGrid1->Cells[currentColumn][currentRow] = IntToStr(cnt);
}
void TForm1::DecAccessibility(int accessibility[][8],int horizontal[],
int vertical[], int crRow, int crColumn)
{
int Hmove, Vmove; //координаты клеток, лежащих в одном ходу от текущей
//перебираем все возможные варианты ходов и уменьшаем на 1 значения
//соответствующих элементов массива accessibility
for(int i=0; i<8; i++)
{
Hmove = crRow + vertical[i];
Vmove = crColumn + horizontal[i];
//проверка выхода за границу массива
if((Hmove<8)&&(Hmove>=0)&&(Vmove<8) &&(Vmove>=0))
accessibility[Hmove][Vmove] -= 1;
}
}
int TForm1::FindMove(int board[][8], int accessibility[][8],
int vertical[], int horizontal[], int crRow, int crColumn)
{
//Индексы элементов этого массива соответствуют кодам возможных ходов.
//Элементы массива будут содержать "-1" если ход невозможен или
//число равное значению соответствующего элемента массива accessibility
int PossibleMoves[8] = {-1,-1,-1,-1,-1,-1,-1,-1};
int tRow, tColumn; //временные координаты
//проверяем все возможные варианты ходов
for(int i=0; i<8; i++)
{
tRow = crRow + vertical[i];
tColumn = crColumn + horizontal[i];
//проверка выхода за границу массива и того, ходили ли мы на
//эту клетку раньше
if(tRow<8 && tRow>=0 && tColumn<8 &&tColumn>=0 &&
board[tRow][tColumn]==0)
PossibleMoves[i] = accessibility[tRow][tColumn];
}
//анализ массива PossibleMoves
int count = 0;
int min = 8;
int Pos = 0;
//находим минимальный элемент массива не равный "-1", если таких
//элементов несколько - запоминаем их количество
for(int j=0; j<8; j++)
if(PossibleMoves[j]!=-1 && PossibleMoves[j]<=min)
{
min = PossibleMoves[j];
count++;
Pos = j;
}
//возможных ходов нет
if(count==0) return -1;
//возможен только 1 ход (или он оптимальный)
if(count==1) return Pos;
//Возможно несколько ходов, но мы не можем определить какой из
//них лучше. Поэтому выбираем ход случайным образом. При выборе
//учитываем только лучшие ходы.
int Ind = rand()%count;
for(int k=0; k<8; k++)
if(PossibleMoves[k]==min && Ind==0)
{
Pos = k;
break;
}
else Ind--;
return Pos;
}
Nyrzhan вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перевод программы с Pascal в C++ GoodSpirit Помощь студентам 4 19.05.2010 18:04
Перевод кода из Pascal в Object Pascal zemskov77 Общие вопросы Delphi 1 03.01.2009 09:37