Тема: Delphi/Делфи
Показать сообщение отдельно
Старый 11.12.2010, 20:21   #26
Dis is one half
 
Аватар для OneHalf
 
Регистрация: 19.10.2007
Адрес: Санкт-Петербург
Сообщений: 1,460
Репутация: 304 [+/-]
Скрытый текст:
Цитата:
Сообщение от Дарио Посмотреть сообщение
begin
writeln('enter the course');
readln(K1);
writeln('enter the order');
readln(ord);
case K1 of
north: case ord of
forw: begin K2:=north; writeln(K2); end;
backw: begin K2:=south; writeln(K2); end;
left: begin K2:=west; writeln(K2); end;
right: begin K2:=east; writeln(K2); end;
east: case ord of
forw: begin K2:=east; writeln(K2); end;
backw: begin K2:=west; writeln(K2); end;
left: begin K2:=north; writeln(K2); end;
right: begin K2:=south; writeln(K2); end;
south: case ord of
forw: begin K2:=south; writeln(K2); end;
backw: begin K2:=north; writeln(K2); end;
left: begin K2:=east; writeln(K2); end;
right: begin K2:=west; writeln(K2); end;
west: case ord of
forw: begin K2:=west; writeln(K2); end;
backw: begin K2:=east; writeln(K2); end;
left: begin K2:=south; writeln(K2); end;
right: begin K2:=north; writeln(K2); end;
end.
Это называется китайский код

Если религия не запрещает поставить соответствие между направлениями и цифрами, то можно сделать так:
Скрытый текст:
Код:
Const
    forward = 1;  left = 2; backward = 3; right = 4;
    north = 1;  east = 2; south = 3; west = 4;
type
    TCourse = 1..4;
    TOrder = 1..4;
var
    firstCourse1, secondCourse: TCourse;
    order: TOrder;

Begin
    writeln('enter the course (north - 1;  east - 2; south - 3; west - 4');
    readln(firstCourse);
    writeln('enter the order (forward - 1,  left - 2, backward - 3, right - 4)');
    readln(order);

    secondCourse := (firstCourse + order - 2) Mod 4 + 1;
End.


Добавлено через 21 минуту
Цитата:
Сообщение от Steklov Посмотреть сообщение
есть два комбобокса
в одном допустим 1 2 3 4
в другом Коля петя маша саша

как записать что бы при выборе 1, во втором появлялся только маша саша, при выборе 2 появлялся коля петя, при выборе другого только определенные данные?
как бы в if записать, но как правильнее?
Можно создать массив соответствий:
Скрытый текст:
Код:
var
    // Первый индекс - индекс выбранного элемента в первом списке,
    //    второй - индекс имени. Если записано true, то соответствующее имя должно попасть в список.
    whatShow = Array [0..3, 0..3] of Boolean; 
    names = Array[0..3]  of String;

Begin
    // Не знаю, есть ли в Delphi сокращенная инициализация массивов...
    whatShow[0, 0] = false; whatShow[0, 1] = false; whatShow[0, 2] = true; whatShow[0, 3] = true;
    whatShow[1, 0] = true; whatShow[1, 1] = true; whatShow[1, 2] = false; whatShow[1, 3] = false;
    whatShow[2, 0] = false; whatShow[2, 1] = true; whatShow[2, 2] = false; whatShow[2, 3] = true;
    whatShow[3, 0] = true; whatShow[3, 1] = false; whatShow[3, 2] = true; whatShow[3, 3] = false;

    names[0] = "Коля"; names[1] = "Петя"; names[2] = "Маша"; names[3] = "Саша";

    // Не помню названия методов, но суть такая:
    CheckBox2.Clear; // Чистим список с именами
    For i = 0 To 3 Do
        If whatShow[CheckBox1.SelectedItemIndex, i] Then
            CheckBox2.Items.Add(names[i]); // Добавляем имя в список, если в массиве в соответствующем месте true
End;

Последний раз редактировалось OneHalf; 12.12.2010 в 02:16. Причина: Добавлено сообщение
OneHalf вне форума  
Отправить сообщение для OneHalf с помощью ICQ Отправить сообщение для OneHalf с помощью Skype™ Ответить с цитированием