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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.10.2013, 18:26   #1
Иринкин
Новичок
Джуниор
 
Регистрация: 03.10.2013
Сообщений: 7
Печаль Работа со строками

Здравствуйте! Пожалуйста, помогите написать программу в Delphi, мне сказали задача легкая, но я в программировании совсем чайник.
Задача такая: Пользователь вводит строку в текстовое поле. Строка абсолютно произвольная. Нажимает на кнопку и на экран выходит результат, какие буквы повторились и сколько раз. Т.е., например, если введено asreetganat, то на экран выйдет :
a=3
e=2
t=2
Выполнить надо использовав массив. Т.е. мы считываем строку по каждому символу в массив, там уже ищем совпадения, считаем и выводим. Я понимаю алгоритм действий, но не представляю как реализовать!

Заранее огромное спасибо!
Иринкин вне форума Ответить с цитированием
Старый 03.10.2013, 18:31   #2
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Цитата:
Выполнить надо использовав массив. Т.е. мы считываем строку по каждому символу в массив
Строка - в общем-то и есть массив
============
Что у вас уже готово? Наработки есть?

если нет, я могу вам помочь за небольшое вознаграждение
Вадим Мошев вне форума Ответить с цитированием
Старый 03.10.2013, 18:47   #3
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Цитата:
Строка - в общем-то и есть массив
Со строкой получится не так красиво..
А вот если a : array ['A'..'Z'] of Integer; (и не забывать UpCase'ать), то будет более-менее хорошо..
Poma][a вне форума Ответить с цитированием
Старый 03.10.2013, 18:50   #4
type_Oleg
Старожил
 
Аватар для type_Oleg
 
Регистрация: 02.03.2008
Сообщений: 2,504
По умолчанию

Да, и строку, введенную в текстовое поле по имени Edit1, зовут Edit1.Text
Вот и работайте с ней, как с массивом символов.

Например,введете в поле Edit1 "я криведко" , Edit1.Text[3] будет равно к
type_Oleg вне форума Ответить с цитированием
Старый 03.10.2013, 21:34   #5
Иринкин
Новичок
Джуниор
 
Регистрация: 03.10.2013
Сообщений: 7
По умолчанию

Цитата:
Сообщение от Вадим Мошев Посмотреть сообщение
Строка - в общем-то и есть массив
============
Что у вас уже готово? Наработки есть?

если нет, я могу вам помочь за небольшое вознаграждение
Ну из наработок только интерфейс пока и некоторые другие жалкие попытки, так что нет, наработок пока нет

Цитата:
Сообщение от type_Oleg Посмотреть сообщение
Да, и строку, введенную в текстовое поле по имени Edit1, зовут Edit1.Text
Вот и работайте с ней, как с массивом символов.

Например,введете в поле Edit1 "я криведко" , Edit1.Text[3] будет равно к
Спасибо, если честно даже не подумала об этом. Буду пробовать!
А может быть подскажите, как лучше сделать подсчет одинаковых элементов? Просто с помощью счетчика и while?

Последний раз редактировалось Stilet; 05.10.2013 в 12:02.
Иринкин вне форума Ответить с цитированием
Старый 03.10.2013, 21:41   #6
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Цитата:
А может быть подскажите, как лучше сделать подсчет одинаковых элементов? Просто с помощью счетчика и while?
Ну можно так :
Код:
a : array ['A'..'Z'] of Integer;

for i := 1 to Length(Edit1.Text) do
     Inc (a[UpCase(Edit1.Text[i])]);
Или так :
Код:
for ch := 'A' to 'Z' do begin
    tcnt := 0;
    for i := 1 to Length(Edit1.Text) do
        if UpCase (Edit1.Text[i]) = ch then
            Inc (tcnt);
    WriteLn (ch, ' : ', tcnt)
end;
Poma][a вне форума Ответить с цитированием
Старый 03.10.2013, 21:59   #7
type_Oleg
Старожил
 
Аватар для type_Oleg
 
Регистрация: 02.03.2008
Сообщений: 2,504
По умолчанию

Можно и while, но лучше for. Наверное, будет два цикла, один вложенный в другой.
Первый проходит все символы строки от 1 до конца стоки (длина строки - Length(Edit1.Text)),
во втором - ищется совпадение с текущим символом.

Но это так, на первый взгляд. Может есть способ и проще, поэлегантнее.

PS. Оппа .. пока писал, опередили.
Poma][a, а зачем ей этот WriteLn, если у нее Delphi, и не в консоли?

Последний раз редактировалось type_Oleg; 03.10.2013 в 22:01.
type_Oleg вне форума Ответить с цитированием
Старый 03.10.2013, 22:01   #8
Иринкин
Новичок
Джуниор
 
Регистрация: 03.10.2013
Сообщений: 7
По умолчанию

Буду пробовать, спасибо!
Иринкин вне форума Ответить с цитированием
Старый 03.10.2013, 22:06   #9
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Цитата:
Poma][a, а зачем ей этот WriteLn, если у нее Delphi, и не в консоли?
А кто ж знает как у Вас в Дельфи надо выводить?
Poma][a вне форума Ответить с цитированием
Старый 03.10.2013, 22:13   #10
Иринкин
Новичок
Джуниор
 
Регистрация: 03.10.2013
Сообщений: 7
По умолчанию

А как сделать вывод на Label? Label1.Caption:=....
Как бы это (ch, ' : ', tcnt) сюда записать?

Ой, или можно ShowMessage(ch, ' : ', tcnt)???

Последний раз редактировалось Иринкин; 03.10.2013 в 22:17.
Иринкин вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа со строками lolwto Помощь студентам 1 22.03.2013 13:07
работа со строками lilywka Помощь студентам 1 20.03.2013 18:30
Работа с матрицами (норма матрицы, работа со строками) Neitrosha Помощь студентам 1 26.11.2010 20:19
Работа со строками Pormonik Общие вопросы C/C++ 1 21.05.2010 20:45
Работа со строками eR- Помощь студентам 2 23.02.2009 15:11