|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
07.12.2010, 12:19 | #11 |
Регистрация: 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. |
20.04.2012, 14:03 | #12 |
Новичок
Джуниор
Регистрация: 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 ¤tRow, int ¤tColumn, 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; } |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Перевод программы с Pascal в C++ | GoodSpirit | Помощь студентам | 4 | 19.05.2010 18:04 |
Перевод кода из Pascal в Object Pascal | zemskov77 | Общие вопросы Delphi | 1 | 03.01.2009 09:37 |