Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
 Аватар для Shoshona
31 / 31 / 37
Регистрация: 03.06.2014
Сообщений: 1,055

Игра "Города": организовать поиск последнего и первого символа и их сравнение

13.07.2015, 13:47. Показов 2495. Ответов 28
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте форумчане! Пишу игру "Города", но столкнулся с проблемой. мне нужно в методе класса организовать поиск последнего и первого символа и их сравнение. Вот тут и беда. Получается мне нужно в конце хода менять местами номера едитов. Это вообще возможно?
C++
1
2
3
4
5
6
7
8
9
10
void string::find(int k, int l)
{   char a,b,c;
    a=Edit1->Text[Edit1->Text.Length()];  // последний
    b=Edit2->Text[1];                       // первый
    if(a!=b)
       {
           ShowMessage("Не тот город");
         // и вот тут нужно что-то делать, но я не знаю что :cry:
       }
}
Прошу вашей помощи как можно скорее, идо не могу из-за этого дальше продвигатся.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
13.07.2015, 13:47
Ответы с готовыми решениями:

Поиск первого и последнего вхождения символа
Прошу помощи в реализации поиска первого и последнего вхождения символа (пусть будет 'm'),в приведен ниже коде выскакивает ошибка:...

Поменять местами название первого города таблицы и последнего города, начинающегося с буквы К
Задан список из 10 городов.(массив string ). Поменять местами название первого города таблицы и последнего город,начинающегося с буквы К. ...

Поиск первого символа справа или последнего слева
Всем здрасти! Короткий вопрос, как найти первый символ в тексте, но справа. Или последний слева. Спасибо!

28
Почетный модератор
Эксперт С++
 Аватар для SatanaXIII
5851 / 2862 / 392
Регистрация: 01.11.2011
Сообщений: 6,906
14.07.2015, 09:39
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Shoshona Посмотреть сообщение
В чем может быть проблема?
В том, что класс это самостоятельная обособленная единица. Он ничего не знает ни о каких других классах, если ему о них не сказать принудительно.

Если вы хотите сделать нормальный класс, то следует ввести в него дополнительные приватные переменные и функции, заполняющие из вне эти переменные. Таким образом ваш класс будет работать только со своими данными.

Вариант номер раз
C++
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
// .h файл
class Text
{
private:
    char a, b; // <--------------- Собственные приватные переменные класса
public:
    Cities();
   virtual  void input()=0;
 //  virtual    string output()=0;
    char *inputCity;
    char *outputCity;
    void find();
  //    void remember();
 
    void FillAAndB( char a_, char b_ ); // <---------------- Метод заполнения их
};
void Text::FillAAndB( char a_, char b_ ) // <---------------- Реализация метода
{
    this->a = a_;
    this->b = b_;
}
void Text::find()
{   //char a,b; // <-------------------- Перенесены в приватную секцию класса
    ////static bool trigger; //// <--- Это все вынести из класса вообще
    ////trigger ^= 1;
    ////a = trigger? *Edit1->Text[Edit1->Text.Length()]: Edit2->Text[Edit1->Text.Length()];
    ////b = trigger? *Edit2->Text[1]: Edit1->Text[1];
    if(a!=b)
       {
           ShowMessage("Города не похожи");
       }
}
Далее где-то в основной программе:
C++
1
2
3
4
5
6
7
8
Text text_ex;
 
static bool trigger;
trigger ^= 1;
 
text_ex.FillAAndB( trigger? *Edit1->Text[Edit1->Text.Length()]: Edit2->Text[Edit1->Text.Length()];
                         trigger? *Edit2->Text[1]: Edit1->Text[1] );
text_ex.find();

Вариант номер два

C++
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
// .h файл
#include <vcl.h> // <-------------- В этом файле лежит описание класса TEdit
                 // Подключив его можно будет работать со стандартными компонентами (типа Edit) внутри вашего класса, но
                 //  взамен вы получите утяжеление всей конструкции и невозможность переноса класса в другую среду
class Text
{
private:
    TEdit *Edit1, *Edit2; // <------------- Объявляем указатели на поля ввода
public:
    Cities();
   virtual  void input()=0;
 //  virtual    string output()=0;
    char *inputCity;
    char *outputCity;
    void find();
  //    void remember();
 
    void FillEdits( TEdit *Edit1_, TEdit *Edit2_ ); // <----------- Объявление
};
void FillEdits( TEdit *Edit1_, TEdit *Edit2_ ) // <-------------- Реализация
{
    this->Edit1 = Edit1_;
    this->Edit2 = Edit2_;
}
void Text::find()
{   char a,b;
    static bool trigger;
    trigger ^= 1;
    a = trigger? *Edit1->Text[Edit1->Text.Length()]: Edit2->Text[Edit1->Text.Length()]; // <- Все работает
    b = trigger? *Edit2->Text[1]: Edit1->Text[1];
    if(a!=b)
       {
           ShowMessage("Города не похожи");
       }
}
Где-то в основной программе:
C++
1
2
3
4
Text text_ex;
 
text_ex.FillEdits( Edit1, Edit2 );
text_ex.find();
0
14.07.2015, 09:40

Не по теме:

taras atavin, какие люди без охраны )))

0
 Аватар для Shoshona
31 / 31 / 37
Регистрация: 03.06.2014
Сообщений: 1,055
14.07.2015, 09:42  [ТС]
Если я опишу функцию в начале СРР файла, а потом допустим, в кнопке буду ее вызывать, это будет правильно?
0
1409 / 573 / 127
Регистрация: 31.10.2011
Сообщений: 1,960
14.07.2015, 09:46
правильно, главное чтоб вызываемая функция была описана выше

Добавлено через 2 минуты
это и делает #include *.h
0
 Аватар для Shoshona
31 / 31 / 37
Регистрация: 03.06.2014
Сообщений: 1,055
14.07.2015, 10:07  [ТС]
SatanaXIII, я попробывал реализовать вариант номер 1 но тут выбило кучу ошибок... кидаю скрин и саму прогу, может так удобней будет! (в двух частях кинул, потому что много весят).
Миниатюры
Игра "Города": организовать поиск последнего и первого символа и их сравнение  
Вложения
Тип файла: rar Visua p1l.rar (7.48 Мб, 2 просмотров)
Тип файла: rar Visual p2.rar (307.8 Кб, 2 просмотров)
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33460 / 21560 / 8248
Регистрация: 22.10.2011
Сообщений: 37,016
Записей в блоге: 12
14.07.2015, 10:43
Цитата Сообщение от _Dimon_ Посмотреть сообщение
нужно
C++
1
a = trigger? Form1->Edit1->Text[Form1->Edit1->Text.Length()]: Form1->Edit2->Text[Form1->Edit1->Text.Length()];
Не нужно. Нужно вот так:
C++
1
a = trigger? Form1->Edit1->Text[Form1->Edit1->Text.Length()]: Form1->Edit2->Text[Form1->Edit2->Text.Length()];
, и я уже писал об этом выше, но за оффтопом о Дельфи, это, конечно, прошло незамеченным, и ошибка тянется до сих пор.
0
 Аватар для Shoshona
31 / 31 / 37
Регистрация: 03.06.2014
Сообщений: 1,055
14.07.2015, 10:55  [ТС]
Это я уже давно исправил, но все равно не работает. Я описываю функцию... а как потом вызвать ее в любом месте программы? я пишу например
C++
1
2
Text a;
a.find(char a,char b);
мне выдает ошибку.

Добавлено через 53 секунды
и вот так не работает
C++
1
void Text::find(char a,char b);
0
 Аватар для Shoshona
31 / 31 / 37
Регистрация: 03.06.2014
Сообщений: 1,055
14.07.2015, 11:31  [ТС]
Ребята, с одной проблемой я разобрался. Там у меня виртуальный класс был, а к виртклассу объекты не подключаются. Исправил, но все-равно ошибка... вот новый файл. Прошу посмотрите, потому что я уже не знаю что делать.
Суть в том, что компилятор не видит класс в программе. он думает, что это переменная.
Вложения
Тип файла: rar Visual2.rar (1.23 Мб, 4 просмотров)
Тип файла: rar Visual1.rar (9.96 Мб, 4 просмотров)
0
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
14.07.2015, 19:53
К классу вообще ничего не подключается и объекты вообще никуда не подключаются и виртуальность здесь не причём.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
14.07.2015, 19:53

Задан список из десяти городов, поменять местами название первого города таблицы и последнего города,
Задан список из десяти городов, (массив string)поменять местами название первого города таблицы и последнего города, начинающегося с буквы...

На место первого символа записать код FF, на место последнего символа- старший байт первого исходного числа
Сегмент данных содержит два символьных кода. На место первого символа записать код FF, на место последнего символа- старший байт первого...

Не работает сравнение двух слов по первой и последней букве (игра в города)
Подскажите. Только начал осваивать PHP самостоятельно, хочу в порядке обучения написать игру в города. База слов берется из тектсового...

Вывести все символы исходной строки а$, начиная от первого заданного символа x$ до последнего заданного символа y$
Мужики, спасайте ^^ 2)Вывести все символы исходной строки а$, начиная от первого заданного символа x$ до последнего заданного символа...

Определить последнее вхождение символа “р” в строке и вывести строку, начиная с первого символа и до последнего “р” в строке
Заданы 2 строки, состоящие из слов, разделенных пробелами. Определить последнее вхождение символа “р” в строке и вывести строку, начиная с...


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

Или воспользуйтесь поиском по форуму:
29
Ответ Создать тему
Новые блоги и статьи
Нейтральные знания, чистый код - бла-бла-бла-бла, на самом деле кликбейт и самореклама, плагиат, и вот почему
Hrethgir 27.07.2026
То-есть отклонение такой публикации говорит само за себя, и пусть только возьмут на вооружение после отклонения публикации - это будет чистейшим актом плагиата. Отклонял Хабр. Дословно, отклонённая. . .
тв 16 бой ии
anaschu 27.07.2026
Великий Перелом ИИ: Как уравнения ОДУ Radau дожали цензурные фильтры Алисы Фиксируем в мемофонде Теории Всего беспрецедентный факт в истории ИИ-зондирования. В затяжном многораундовом. . .
мв 15. непроверенное, возможно, глюк
anaschu 27.07.2026
НАУЧНО-АНАЛИТИЧЕСКИЙ ОТЧЕТ. РАЗДЕЛ 1. 1: «НАУКА» (РАСШИРЕННАЯ СТЕХИОМЕТРИЧЕСКАЯ И ГЕНЕТИЧЕСКАЯ ВЕРСИЯ)Тема: Теоретическое обоснование инвариантности 19-мерного тензорного ядра непрерывных ОДУ и. . .
Очистка реквизитов и табличных частей документа при копировании (вариант 2)
Maks 26.07.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРаботу", разработанного в КА2. Задача: Заменить алгоритм запрета копирования документов для сотрудников с ролью "Стажер",. . .
Доктрина интенционального знания - Доктрина для портала "Срез".
Hrethgir 25.07.2026
Может найдётся кто захочет оценить доктрину. . . Написания правил участия для меня роскошь, требующая лимита времени, поэтому все сообщения не прошедшие модерацию будут видны только участникам портала,. . .
сукцессия 44. Решил подать на припринт в межународные сервисы препринтов. Но нужно одобрение от ученых
anaschu 25.07.2026
Английский вариант. Пока кто то не одобрит мою личность, мне не получиться это опубликовать на препринте. Но заявку на публикацию статьи я сегодня подам.
сукцессия 43. Вторая научная статья за месяц- прайминг и гатгил
anaschu 25.07.2026
две стороны одной монеты
Более приземисто - Эстафету хвоста в .cdl (деревья эстафеты в сад).
Hrethgir 24.07.2026
В будущем, после написания блока инверсии обхода дерева (эстафеты хвоста), я планирую вернуться к нашему прошлому разговору о том, обладают ли знания целеполаганием. Тогда я пришел к выводу, что. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru