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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.02.2012, 16:34   #1
rodia
 
Регистрация: 22.02.2012
Сообщений: 3
По умолчанию Перевод код программы с с++ на delphi

Пишу в с++, необходима помощь в переводе данного кода в язык delphi. Спасибо

Код:
#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#include "conio.h"

#define MAXPOLE 8

int pole[MAXPOLE];
int count=0;
bool check(int beg)
{
    bool res=true;
    if (beg>=1)
    {
        int i=0;
        while (res &&  (i<beg))
        {
            if (pole[i] == pole[beg]) res=false;
            if (abs(pole[beg]-pole[i]) == abs(beg-i)) res=false;
            i++;
        }
    }
    return res;
}

void print(int beg)
{
    printf("----------- %02d ------------\n",count);
    printf("    A  B  C  D  E  F  G  H \n");
    for(int y=0; y<beg; y++)
    {
        printf("%d  ",y+1);
        for(int x=0; x<MAXPOLE; x++)
        {
            if (x== pole[y]) printf(" F ");
                else printf(" * ");
        }
        printf("\n");
    }
    printf("---------------------------\n");
}

int main()
{
    int beg=0;
    pole[beg]=-1;
    while (beg>=0)
    {
        pole[beg]++;
        if (pole[beg] == MAXPOLE)  beg--;
        else
        {
            if (check(beg))
            {
                beg++;
                if (beg==MAXPOLE) 
                {
                    count++;
                    print(MAXPOLE);
                    beg--;
                }
                else pole[beg]=-1;
            }
        }
        
        
    }    
    printf("%d \n", count);    
	getch();
    return 0;
}
rodia вне форума Ответить с цитированием
Старый 22.02.2012, 17:07   #2
Кольша
Далеко не
Участник клуба
 
Аватар для Кольша
 
Регистрация: 11.08.2011
Сообщений: 1,512
По умолчанию

опишите что делает этот код?
Кольша вне форума Ответить с цитированием
Старый 22.02.2012, 17:24   #3
rodia
 
Регистрация: 22.02.2012
Сообщений: 3
По умолчанию

решение задачи о 8 ферзях. функция поиска расположения ферзя и прорисовка в виде матрицы

ребята знающие помогите,пожалуйста

Последний раз редактировалось rodia; 22.02.2012 в 22:23.
rodia вне форума Ответить с цитированием
Старый 23.02.2012, 13:21   #4
reserv
Пользователь
 
Регистрация: 17.02.2012
Сообщений: 10
По умолчанию

Вот, кажется, работает!

Код:
program Project2;

{$APPTYPE CONSOLE}

uses
  SysUtils;
const
  MAXPOLE = 8;
var
  pole: array[0..MAXPOLE-1] of Integer;
  count: Integer = 0;

function check(beg: Integer): Boolean;
var
  res: Boolean;
  i: Integer;
begin
  res := True;
  if beg >= 1 then
  begin
    i := 0;
    while res and (i < beg) do
    begin
      if (pole[i] = pole[beg]) then res := False;
      if (abs(pole[beg] - pole[i]) = abs(beg - i)) then res := False;
      i := i + 1;
    end;
  end;
  Result := res;
end;

procedure print(beg: Integer);
var y, x:Integer;
begin
  Writeln('----------- ', count:2, ' ------------');
  Writeln('    A  B  C  D  E  F  G  H ');
  for y := 0 to beg - 1 do
  begin
    Write((y+1), '  ');
    for x := 0 to MAXPOLE - 1 do
    begin
      if x = pole[y] then
        Write(' F ')
      else Write(' * ');
    end;
    Writeln('');
  end;
  Writeln('---------------------------');
end;


var
  beg: Integer = 0;
begin
  try
    pole[beg] := 0;
    while beg >= 0 do
    begin
      pole[beg] := pole[beg] + 1;
      if pole[beg] = MAXPOLE then beg := beg -1
      else
      begin
        if check(beg) then
        begin
          beg := beg + 1;
          if beg = MAXPOLE then
          begin
            count := count + 1;
            print(MAXPOLE);
            beg := beg - 1;
          end
          else pole[beg] := -1;
        end;
      end;
    end;
    Writeln(count, ' ');
    Readln;
  except
    on E:Exception do
      Writeln(E.Classname, ': ', E.Message);
  end;
end.
reserv вне форума Ответить с цитированием
Старый 23.02.2012, 16:56   #5
rodia
 
Регистрация: 22.02.2012
Сообщений: 3
По умолчанию

reserv, спасибо большое.
rodia вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перевод программы на Delphi iron_cross Общие вопросы Delphi 0 10.10.2011 17:03
Перевод программы с языка Delphi на C++ LeXX013 Фриланс 3 02.06.2010 06:33
Перевод программы с delphi на Java zlobagi Фриланс 1 15.05.2010 17:54
Перевод текста в код Морзе (Delphi) pomoshnic Помощь студентам 6 21.03.2009 18:04