Форум программистов, компьютерный форум, киберфорум
Наши страницы
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
Jane_Jane
0 / 0 / 0
Регистрация: 08.03.2019
Сообщений: 12
1

Проблемы с case

09.11.2019, 23:58. Просмотров 878. Ответов 8

Здравствуйте! Имеется задача:
Type курс=(C,В,Ю,З); {север, восток, юг, запад} Приказ=(вперед, вправо, назад, влево);
Var K1,K2:курс; ПР:приказ; Корабль сначала шел по курсу K1, а затем его курс был изменен согласно приказу ПР. Определить K2 - новый курс корабля.


Никак не могу понять, где я с case ошиблась, программа не выводит окончательное решение (пробовала по-разному присваивать и складывать строки)
Delphi
1
MemoR.Lines.Add('Наш окончательный курс= '+N);
Спасибо вам за помощь.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
unit lab;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Mask, ExtCtrls;
 
type
  TForm1 = class(TForm)
    Label3: TLabel;
    Label4: TLabel;
    MemoR: TMemo;
    Okey: TButton;
    clear: TButton;
    Course: TMaskEdit;
    rg2: TRadioGroup;
    rb5: TRadioButton;
    rb6: TRadioButton;
    rb7: TRadioButton;
    rb8: TRadioButton;
    procedure FormCreate(Sender: TObject);
    procedure OkeyClick(Sender: TObject);
    procedure clearClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
 
procedure TForm1.FormCreate(Sender: TObject);
begin
          MemoR.Clear;
 
end;
 
procedure TForm1.OkeyClick(Sender: TObject);
       var
          z:  string; m:char;
          N, E, S, W, F, R, B, L, k :string;
      begin
      try
       z := Course.Text ;
       except   raise EconvertError.Create('Error');
      end;
      N := 'Север';
      E := 'Восток';
      S := 'Юг';
      W := 'Запад';
      L := 'Влево';
      F := 'Впреред';
      R := 'Вправо';
      B := 'Назад';
      if z = 'С' then
        begin
          case rg2.ItemIndex of
            0: k := 'North';
            1: k := 'West';
            2: k := 'South';
            3: k := 'East';
          end;
        end;
 
      if z = 'З' then
       begin
        case rg2.ItemIndex of
            0: k := k + N;
            1: k := k + W;
            2: k := k + S;
            3: k := k + E;
        end;
       end;
 
      if z = 'Ю' then
       begin
          case rg2.ItemIndex of
            0: k := N;
            1: k := S;
            2: k := W;
            3: k := E;
          end;
       end;
 
      if z = 'В' then
       begin
          case rg2.ItemIndex of
            0: k := k + N;
            1: k := k + N;
            2: k := k + N;
            3: k := k + N;
          end;
       end;
      MemoR.Lines.Add('Наш начальный курс= '+z);
      MemoR.Lines.Add('Наш окончательный курс= '+k);
     { MemoR.Lines.Add('OldCourse = '+Course.Text);
      if (Course.Text = 'C') and (rb5.Checked) then
       begin
        MemoR.Lines.Add('Мы поменяли направление на= '+F);
        MemoR.Lines.Add('Наш окончательный курс= '+k);
       end; }
end;
 
procedure TForm1.clearClick(Sender: TObject);
begin
Course.Text:='';
MemoR.Clear;
end;
 
end.
0
Лучшие ответы (1)
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.11.2019, 23:58
Ответы с готовыми решениями:

8

Rayvenor
61 / 50 / 12
Регистрация: 04.08.2018
Сообщений: 275
10.11.2019, 00:14 2
Jane_Jane, можно, конечно, искать ошибки в данном решении, но оно вообще не соответствует заданию. В задании вам подсказано, что нужно решать через заведение своих типов.
0
Rayvenor
61 / 50 / 12
Регистрация: 04.08.2018
Сообщений: 275
10.11.2019, 01:49 3
Мне кажется такое решение будет ближе к условию задачи. Правда, оно мне кажется не красивым, может кто-то сделает изящнее. По заданию предлагают завести переменную типа Приказ, но я не нашёл зачем она нужна.
1
Вложения
Тип файла: zip Курс корабля.zip (4.8 Кб, 5 просмотров)
Jane_Jane
0 / 0 / 0
Регистрация: 08.03.2019
Сообщений: 12
10.11.2019, 10:44  [ТС] 4
Rayvenor, подскажите, какой у вас делфи? У меня просто пишет "Can not find resoure file .... Recreated" и не работает
0
10.11.2019, 10:44
D1973
Модератор
4776 / 3416 / 1560
Регистрация: 21.01.2014
Сообщений: 14,485
Записей в блоге: 3
Завершенные тесты: 1
10.11.2019, 12:16 5
Цитата Сообщение от Jane_Jane Посмотреть сообщение
У меня просто пишет "Can not find resoure file .... Recreated"
Это нормально.
Цитата Сообщение от Jane_Jane Посмотреть сообщение
и не работает
а Вы, небось, в Дельфи 7 это открывать пытаетесь? Нет, тут надо или в RAD Studio открывать или исходник причесывать руками...
1
Rayvenor
61 / 50 / 12
Регистрация: 04.08.2018
Сообщений: 275
10.11.2019, 12:54 6
Jane_Jane, у меня RAD Studio 10.3.1. Delphi 7 у меня нет и устанавливать не планирую.
Цитата Сообщение от Jane_Jane Посмотреть сообщение
"Can not find resoure file .... Recreated"
Я сознательно не добавлял в архив подобные файлы, их дельфи должна уметь сформировать при отсутствии. Проблема точно не в этом.
Попробуйте сделать новый пустой проект, удалить из него юнит (папочка с минусом), затем добавить мой и отредактировать секцию uses как-то так:
Delphi
1
2
3
uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Graphics,
  Controls, Forms, Dialogs, StdCtrls, TypInfo, ExtCtrls;
0
Puporev
Модератор
57809 / 44042 / 30413
Регистрация: 18.05.2008
Сообщений: 105,303
10.11.2019, 13:13 7
Jane_Jane, Посмотрите алгоритм здесь (последний код).
перечислимый тип
1
AzAtom
508 / 303 / 115
Регистрация: 15.11.2015
Сообщений: 1,283
10.11.2019, 14:34 8
Delphi 7 не примет нелатинские символы в определении типов.
0
AzAtom
508 / 303 / 115
Регистрация: 15.11.2015
Сообщений: 1,283
10.11.2019, 14:37 9
Лучший ответ Сообщение было отмечено Jane_Jane как решение

Решение

Вот вариант от Rayvenor, поправленный для Delphi 7.
2
Вложения
Тип файла: rar Курс корабля2.rar (3.7 Кб, 1 просмотров)
10.11.2019, 14:37
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.11.2019, 14:37

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:

9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.