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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.01.2013, 22:14   #1
lilywka
Пользователь
 
Регистрация: 14.10.2012
Сообщений: 31
Сообщение программа к задаче в Делфи

Задание:
есть 2 карты. Определить, бьет ли вторая карта первую
препод на доске ее написал. в ней куча ошибок. те что смогла - убрала. но нужно и другие ошибки разобрать. я не знаю, что с ними сделать. помогите довести ее до ума.

Код:
program Project2;

{$APPTYPE CONSOLE}

uses
  SysUtils;

type
  mast=(pik,tref,bubn,cherv);
  value=(six,seven,eight,nine,ten);
  karta=record;
  m:mast;
  v=value;
var
  k,k1,k2:karta;
  b:boolean;
  j:mast;
function Strike(k1,k2:karta;km:mast):boolean;
begin
  strike:=false;
if k1.m=k2 then
begin
if k1.v>k2.v then
  Strike:true;
end
else if (k1.m=km)then
  strike:true;
end;
var i:integer;
  ch:char;
begin
  k1.m:=tref;
  k1.v:=ten;
  k2.m:=pik;
  k2.v:=tuz;
  k.m:=tref;
  b:=strike(k1,k2,km);
  writeln(b);
  { TODO -oUser -cConsole Main : Insert code here }
end.

Последний раз редактировалось Stilet; 01.01.2013 в 22:38.
lilywka вне форума Ответить с цитированием
Старый 01.01.2013, 22:42   #2
kventin_zhuk
БНТУ ФИТР
Форумчанин
 
Аватар для kventin_zhuk
 
Регистрация: 20.05.2012
Сообщений: 315
По умолчанию

Код:
program Project2;
uses
  crt;
const
// объявляем константы  для обозначения разрядности карты)
  six = 6;
  seven = 7;
  eight = 8;
  nine = 9;
  ten = 10;
  valet = 11;
  dama = 12;
  korol = 13;
  tuz = 14;
type
  mast=(pik, tref, bubn, cherv);
  karta=record
    m: mast;  // масть карты
    v: integer;  // значение
  end;

function Strike(k1,k2:karta):boolean;
var
  str: boolean;
begin
  //функция определения, бьёт ли одна карта другую.
  str := true; // Переменна (false - если карты не бьются)
  if k1.m <> k2.m then
  begin
    str := false;  //  если масти не равны - str -  ложь
    Strike := str;// возвращаем значение
    Exit; //  и выходим из функции
  end;
  if (k1.v <= k2.v) then
  begin
    str := false; // аналогично, только с о значением карт.
    Strike := str;
    Exit;
  end;
  Strike := str;// если ни одно из условий не было выполнено - возвращаем true (ката 1 бьёт карту 2)
end;

var
  k1,k2:karta; // две переменные - две карты
begin
// инициализируем обе карты.
  k1.m:=tref;
  k1.v:=ten;
  k2.m:=tref;
  k2.v:=ten;
  // если функция вернула истину - карта 1 бьёт 2. иначе нет)
  if (Strike (k1, k2)) then
      writeln ('YES')
  else
      writeln ('NOT');
  writeln('Happy New Year!');
end.
С++(console/builder/WinAPI/Linux), C#, Pascal, Delphi, Asm, Prolog.
< ----- Контакты
kventin_zhuk@live.com

Последний раз редактировалось kventin_zhuk; 01.01.2013 в 22:46.
kventin_zhuk вне форума Ответить с цитированием
Старый 01.01.2013, 22:43   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
program Project2;

{$APPTYPE CONSOLE}

uses
  SysUtils;

type
  mast=(pik,tref,bubn,cherv);
  value=(six,seven,eight,nine,ten);

  karta=record
   m:mast;
   v:value;
  end;

var
  k,k1,k2:karta;
  b:boolean;
  j:mast;

function Strike(k1,k2:karta;km:mast):boolean;
begin
 Strike:=not ((k1.m<k2.m)or(k1.v<k2.v));
end;

var i:integer;
  ch:char;
begin
  k1.m:=tref;
  k1.v:=ten;
  k2.m:=pik;
  k2.v:=tuz;
  k.m:=tref;
  b:=strike(k1,k2,km);
  writeln(b);
  { TODO -oUser -cConsole Main : Insert code here }
end.
Примерно так... Не проверял.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 01.01.2013, 23:02   #4
lilywka
Пользователь
 
Регистрация: 14.10.2012
Сообщений: 31
По умолчанию

спасибо большое)
lilywka вне форума Ответить с цитированием
Старый 02.01.2013, 13:16   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

хоть тему и разобрали уже, я не могу не дать ссылочку на свой пост с решением...
ВОТ

p.s. в моём сообщении "бьёт/не бьёт" проверяется по правилам игры в "Дурака".
В разных играх разные правила старшинства карт и определения кто кого бьёт...
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программа к задаче Demiar Помощь студентам 4 01.01.2013 05:28
Программа по задаче Саша019960 Помощь студентам 4 29.11.2011 19:08
Программа по задаче Саша019960 Помощь студентам 2 29.11.2011 09:06
решите задаче в делфи, я на экзамене vbn Помощь студентам 1 23.01.2009 12:09