Четверг, 05.12.2024, 05:49

[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
«Выделите орфографическую ошибку мышью и нажмите Ctrl+Enter»

  • Страница 1 из 2
  • 1
  • 2
  • »
Требуется проф совет программера.
XDiemДата: Вторник, 26.05.2009, 03:34 | Сообщение # 1
Группа: Разработчики
Сообщений: 2932
Репутация: 378
Награды: 0
Статус: Offline
Не для кого не секрет, что уже отгремели выпускные 11 классов, но у нас студентов на носу сессия и самое время садиться (хотя бы) за парту. smile Эту тему открываю, пототому что мне нужен ваш проф. совет. В 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

не пройдет если будет два слова sad
нужно обьединить с моим

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 инпутбоксами для слов.

затем опять же цикл, в нем забиваем отсчет букв и попутно проверяем их оставшееся количество.
вывод слова.

примерно так, я это понял, но как это выразить в программном коде, понятия не имею... cry


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 smile

Quote (KOT2020)
затем опять же цикл, в нем забиваем отсчет букв и попутно проверяем их оставшееся количество.
вывод слова.

for i=1 to 10
j=1
while символ с номером[j]<> <символ конца строки> - уже не помню код smile
j=j+1
whend
если j-1 = n - выводим слово
nexti

Возможно, что нужно начинать с j=0, не знаю с какого номера начинается масив символов (строка). тогда проверяем условие j=n

 
XDiemДата: Среда, 27.05.2009, 04:39 | Сообщение # 12
Группа: Разработчики
Сообщений: 2932
Репутация: 378
Награды: 0
Статус: Offline
Тот тот, просто я несколько по другому его изучал.
так то все понятно, но хотелось бы увидеть как перевести строку в число. И если вам не трудно, напишите хотябы примерно полный текст программы. smile


xdiem.blogspot.com
 
bigmalДата: Среда, 27.05.2009, 14:21 | Сообщение # 13
Группа: Пользователи
Сообщений: 12
Репутация: 4
Награды: 0
Статус: Offline
KOT2020, Если честно, то захотелось инсталлировать VB и просто написать весь код. На самом деле все настолько просто, что гораздо сложнее объяснить как это работает smile
 
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
Не знаю, актуальна ли ещё проблема, но все-таки дам решение. Думается мне, что оно практически самое лучшее smile :) smile

Приведу текст главной функции, в которой всё и делается. На форме может быть любой количество контролов с именем 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 минут, а ещё потому, что всё высказанное выше вызывает здоровое "недоумение" smile :) smile


Сообщение отредактировал bigmal - Понедельник, 01.06.2009, 02:27
 
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск: