Требуется проф совет программера.
|
|
XDiem | Дата: Вторник, 26.05.2009, 03:34 | Сообщение # 1 |
Группа: Разработчики
Сообщений: 2932
Репутация: 378
Награды: 0
Статус: Offline
| Не для кого не секрет, что уже отгремели выпускные 11 классов, но у нас студентов на носу сессия и самое время садиться (хотя бы) за парту. Эту тему открываю, пототому что мне нужен ваш проф. совет. В 7-11 классах я был неравнодушен к информатике и создавал совершенно безумные творения на языках программирования, но все мои знания уже давно выветрились и мне отчаянно требуется ваша помощь. На языке Visual Basic. Дано условие: Необходимо ввести 10 различных слов и с помощью пересчета количества букв в каждом сопоставить с заданным числом, Затем вывести результат. Представляя как все это выглядит в алгоритмической цепочке, я совершенно не помню как это должно выглядеть в программном коде. Коллеги, очень прошу вас о помощи.
xdiem.blogspot.com
|
|
|
|
maxshakh | Дата: Вторник, 26.05.2009, 03:51 | Сообщение # 2 |
Группа: Мастера
Сообщений: 520
Репутация: 376
Награды: 2
Статус: Offline
| Quote (KOT2020) с помощью пересчета количества букв в каждом сопоставить с заданным числом то есть выбрать слово с заданным количеством букв? или как ставить в соответствие?
Закончено: ФАИ-М, M24 Chaffee, Western River, Autoblinda AB41
|
|
|
|
XDiem | Дата: Вторник, 26.05.2009, 04:26 | Сообщение # 3 |
Группа: Разработчики
Сообщений: 2932
Репутация: 378
Награды: 0
Статус: Offline
| мне дано некое число, скажем 5. И 10 слов, совершенно разных. Мне нужно посчитать в каждом слове количество букв и сравнить с данным числом Напрмер. данное число 5 1маша 2паша 3федор 1=4 2=4 3=5 вывод 3. Вроде правильно написал, былбы сканер набросал бы на бумаге... Добавлено (26.05.2009, 04:26) ---------------------------------------------
Quote (maxshakh) то есть выбрать слово с заданным количеством букв да оно самое
xdiem.blogspot.com
|
|
|
|
ildarik8312 | Дата: Вторник, 26.05.2009, 04:43 | Сообщение # 4 |
Группа: Пользователи
Сообщений: 19
Репутация: 0
Награды: 0
Статус: Offline
| KOT2020, ну так и возьми, допустим х за счетчик кол-ва букв, если равно -выводим, не равно- идем дальше..
|
|
|
|
maxshakh | Дата: Вторник, 26.05.2009, 05:11 | Сообщение # 5 |
Группа: Мастера
Сообщений: 520
Репутация: 376
Награды: 2
Статус: Offline
| n - количество букв k - количество слов words - массив со словами <вводим слова и сохраняем в массиве> j=1 while (j<k) or (Len(words[j])<>n) j=j+1 whend if j<k then <найдено слово с номером i - выводим> else <слово не найдено> endif
Закончено: ФАИ-М, M24 Chaffee, Western River, Autoblinda AB41
Сообщение отредактировал maxshakh - Вторник, 26.05.2009, 05:12 |
|
|
|
SerGo | Дата: Вторник, 26.05.2009, 05:29 | Сообщение # 6 |
Группа: Опытные
Сообщений: 9
Репутация: 2
Награды: 0
Статус: Offline
| С помощью условного оператора IF ... THEN ... ELSE x - заданое число FOR i=1 TO 10 вводим слово IF <длина слова>=x THEN выводим слово next i длину слова можно найти кажется с помощью функции LEN(<слово>) только не уверен в правильности синтаксиса. Добавлено (26.05.2009, 05:29) ---------------------------------------------
Quote (maxshakh) n - количество букв k - количество слов words - массив со словами <вводим слова и сохраняем в массиве> j=1 while (j<k) or (Len(words[j])<>n) j=j+1 whend if j<k then <найдено слово с номером i - выводим> else <слово не найдено> endif не пройдет если будет два слова нужно обьединить с моим n - количество букв k - количество слов words - массив со словами <вводим слова и сохраняем в массиве> j=0 for i=1 to k if Len(words[i])=n then <найдено слово с номером i - выводим> j=1 end if next i if j=0 then <слово не найдено> endif
|
|
|
|
maxshakh | Дата: Вторник, 26.05.2009, 05:41 | Сообщение # 7 |
Группа: Мастера
Сообщений: 520
Репутация: 376
Награды: 2
Статус: Offline
| Quote (SerGo) не пройдет если будет два слова почему?
Закончено: ФАИ-М, M24 Chaffee, Western River, Autoblinda AB41
|
|
|
|
SerGo | Дата: Вторник, 26.05.2009, 05:48 | Сообщение # 8 |
Группа: Опытные
Сообщений: 9
Репутация: 2
Награды: 0
Статус: Offline
| Quote (maxshakh) Quote (SerGo) не пройдет если будет два слова почему? Немного не так сказал. Непройдет если будет два и больше слова с нужным колличеством букв while (j<k) or (Len(words[j])<>n) и в любом случае пройдет весь цикл, и сохранится только последнее значение j
Сообщение отредактировал SerGo - Вторник, 26.05.2009, 06:07 |
|
|
|
maxshakh | Дата: Вторник, 26.05.2009, 17:24 | Сообщение # 9 |
Группа: Мастера
Сообщений: 520
Репутация: 376
Награды: 2
Статус: Offline
| SerGo, не, цикл завершится или при прохождении всего списка (j<k)=false или при нахождении первого слова подходящей длины (Len(words[j])<>n)=false, то есть Len(words[j])=n соответственно цикл или найдет первое подходящее слово (только одно) или не найдет ничего. Кстати, в условии ничего не сказано про несколько слов.
Закончено: ФАИ-М, M24 Chaffee, Western River, Autoblinda AB41
|
|
|
|
XDiem | Дата: Вторник, 26.05.2009, 20:35 | Сообщение # 10 |
Группа: Разработчики
Сообщений: 2932
Репутация: 378
Награды: 0
Статус: Offline
| SerGo, хочу вас огорчить функция лен усть, len она насколько я помню используется не так. Программа выглядит несколько проще. Забиваем цикл с 10 инпутбоксами для слов. затем опять же цикл, в нем забиваем отсчет букв и попутно проверяем их оставшееся количество. вывод слова. примерно так, я это понял, но как это выразить в программном коде, понятия не имею...
xdiem.blogspot.com
|
|
|
|
SerGo | Дата: Среда, 27.05.2009, 03:46 | Сообщение # 11 |
Группа: Опытные
Сообщений: 9
Репутация: 2
Награды: 0
Статус: Offline
| Quote (maxshakh) SerGo, не, цикл завершится или при прохождении всего списка (j<k)=false или при нахождении первого слова подходящей длины (Len(words[j])<>n)=false, то есть Len(words[j])=n соответственно цикл или найдет первое подходящее слово (только одно) или не найдет ничего. Кстати, в условии ничего не сказано про несколько слов. тогда оператор AND а не OR. Quote (maxshakh) Кстати, в условии ничего не сказано про несколько слов но и не сказано, что только одно нужное. Quote (KOT2020) len она насколько я помню используется не так вероятно имеется ввиду не тот Visual Basic Quote (KOT2020) затем опять же цикл, в нем забиваем отсчет букв и попутно проверяем их оставшееся количество. вывод слова. for i=1 to 10 j=1 while символ с номером[j]<> <символ конца строки> - уже не помню код j=j+1 whend если j-1 = n - выводим слово nexti Возможно, что нужно начинать с j=0, не знаю с какого номера начинается масив символов (строка). тогда проверяем условие j=n
|
|
|
|
XDiem | Дата: Среда, 27.05.2009, 04:39 | Сообщение # 12 |
Группа: Разработчики
Сообщений: 2932
Репутация: 378
Награды: 0
Статус: Offline
| Тот тот, просто я несколько по другому его изучал. так то все понятно, но хотелось бы увидеть как перевести строку в число. И если вам не трудно, напишите хотябы примерно полный текст программы.
xdiem.blogspot.com
|
|
|
|
bigmal | Дата: Среда, 27.05.2009, 14:21 | Сообщение # 13 |
Группа: Пользователи
Сообщений: 12
Репутация: 4
Награды: 0
Статус: Offline
| KOT2020, Если честно, то захотелось инсталлировать VB и просто написать весь код. На самом деле все настолько просто, что гораздо сложнее объяснить как это работает
|
|
|
|
XDiem | Дата: Четверг, 28.05.2009, 00:19 | Сообщение # 14 |
Группа: Разработчики
Сообщений: 2932
Репутация: 378
Награды: 0
Статус: Offline
| bigmal, полностью согласен! Поэтому мне и хотелось бы увидеть программный код...
xdiem.blogspot.com
|
|
|
|
bigmal | Дата: Понедельник, 01.06.2009, 02:25 | Сообщение # 15 |
Группа: Пользователи
Сообщений: 12
Репутация: 4
Награды: 0
Статус: Offline
| Не знаю, актуальна ли ещё проблема, но все-таки дам решение. Думается мне, что оно практически самое лучшее :)
Приведу текст главной функции, в которой всё и делается. На форме может быть любой количество контролов с именем Text1...TextN. Все они будут участвовать в опросе.
Private Sub Command2_Click() Dim a, b, CountLet As Integer Dim res, NameContr As String
CountLet = CInt(CountLetter) If CountLet = 0 Then MsgBox ("Не задано количество букв") Exit Sub End If
b = 0 res = "Слова с заданным количеством букв: " & vbCrLf & vbCrLf
For a = 0 To Form1.Controls.Count - 1 NameContr = StrConv(Form1.Controls(a).Name, vbLowerCase) If InStr(1, NameContr, "text") <> 0 Then If Len(Form1.Controls(a)) <> 0 Then If Len(Form1.Controls(a)) = CountLet Then res = res & Form1.Controls(a) & vbCrLf b = b + 1 End If End If End If Next a If b = 0 Then MsgBox ("Нет слов, удовлетворящих условиям") Else MsgBox (res) End If End Sub
Вот ссылка на проект. Там же лежит файл помощи по функция VB.
з.ы. пинки не принимаются, т.к. сделано за 20 минут, а ещё потому, что всё высказанное выше вызывает здоровое "недоумение" :)
Сообщение отредактировал bigmal - Понедельник, 01.06.2009, 02:27 |
|
|
|