Visual Basic, строки

Ответить
Mary Yu
Сообщения: 37
Зарегистрирован: 24 сен 2008, 00:15

15 дек 2008, 17:24

Мои преподы звери...Им было скушно,и они решили устроить экзамен сразу на 2 языках программирования Паскаль и...вижу бэйсике. Т.Т
Над вижу бэйсиком мы работали почти ровно год назад..Некоторые лекции серьёзно не разбирали,даже лаб не было.
Вот задача,которую предоставил препод:
"Сколько букв в строке заканчивается на английскую заглавную "А"? "Вот его решению только не доверяю,потому что у него бывают потери памяти,серьёзно:

Код: Выделить всё

Dim s As integer               {например , rA_DA}
Dim sum,n,i,k as integer
cls
sum=0
s=text1.text
n=len(s)
for i=1 to n 
k=mid(s,i,1)
 if k="A" and mid(s,i+1,1)=" "
  then str=s1+1 or mid(s,i+1,1)="."
next
Помогите найти ошибки,чт.она заработала!
Аватара пользователя
Naeel Maqsudov
Сообщения: 2551
Зарегистрирован: 20 фев 2004, 19:17
Откуда: Moscow, Russia
Контактная информация:

15 дек 2008, 17:39

0)

Наверное имелось в виду "Сколько слов заканчивается"

1)
Не уверен, что представленное решение на Visual Basic. Может это QBasic?.. Хотя text1.text... Что-то тут вообще не из той оперы...

2)
S as String, а не

3)
cls - это точно не из VBasic :) Какой экран хотите очистить?

4)
где вывод результата? Куда надо вывести результат

5)
ошибка в алгоритме: делаете for i=1 to n, а потом еще mid(s,i+1,1). На последней итерации это будет обращение к символу n+1, которого не существует. (n-последний)

6)
вот тут:
if k="A" and mid(s,i+1,1)=" "
then str=s1+1 or mid(s,i+1,1)="."

Тут сразу 3 ошибки: синтаксическия и 2 логические. Возможно имелось в виду:
if k="A" and (mid(s,i+1,1)=" " or mid(s,i+1,1)=".") then sum=sum+1
но тогда как быть, если после слова стоит не точка, а запятая, или другой разделитель?
Mary Yu
Сообщения: 37
Зарегистрирован: 24 сен 2008, 00:15

17 дек 2008, 01:08

Naeel Maqsudov писал(а):0)

Наверное имелось в виду "Сколько слов заканчивается"

Угу
Не уверен, что представленное решение на Visual Basic. Может это QBasic?.. Хотя text1.text... Что-то тут вообще не из той оперы...

из этой :D

2)
S as String, а не
Он ещё сказал что мона использовать Variant

3)
cls - это точно не из VBasic Какой экран хотите очистить?

Это случайно не ку Б?

6)
вот тут:
if k="A" and mid(s,i+1,1)=" "
then str=s1+1 or mid(s,i+1,1)="."

Тут сразу 3 ошибки: синтаксическия и 2 логические. Возможно имелось в виду:
if k="A" and (mid(s,i+1,1)=" " or mid(s,i+1,1)=".") then sum=sum+1
но тогда как быть, если после слова стоит не точка, а запятая, или другой разделитель?


Ни наю,поэтому вас спрашиваю
Аватара пользователя
Naeel Maqsudov
Сообщения: 2551
Зарегистрирован: 20 фев 2004, 19:17
Откуда: Moscow, Russia
Контактная информация:

17 дек 2008, 01:45

Mary Yu писал(а): Это случайно не ку Б?


Это к кому вопрос? Это же у Вас написано "cls"!
Я поэтому и говорб, что у Вас тут намешан VBasic с чем-то еще :)

Допустим у Вас VBasic.
Допустим вы сделали там форму... Скажем, Form1
Снова Допустим (так как вы же не написали, как оно там на самом деле сделано) на эту форму вы "бросили" поле TextBox1 и кнопку CommandButton1

тогда Ваша программа - это должна быть процедура обработки нажатия кнопки. Так?

Что-то вроде

Код: Выделить всё

Sub CommandButton1_Click()
  .....
End Sub
Все правильно?
SergeiNG
Сообщения: 1
Зарегистрирован: 17 дек 2008, 12:53

17 дек 2008, 12:54

А может так???

Код: Выделить всё

Dim s As String             '  {например , rA_DA}
Dim sum, n, i, k As Integer
'Cls
sum = 0
s = text1.Text
n = Len(s)
For i = 1 To n
    k = Mid(s, i, 1)
    If i = n Then
        If k = "A" Then
        sum = sum + 1
    Else
        If k = "A" And (Mid(s, i + 1, 1) = " " Or Mid(s, i + 1, 1) = ".") Then
        sum = sum + 1
        End If
    End If
Next
Banny
Сообщения: 1
Зарегистрирован: 18 дек 2008, 17:57

18 дек 2008, 18:36

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

1. Строка, содержащая произвольный текст, состоит не более чем из 200 символов. Написать, какие буквы и сколько раз встречаются в этом тексте.
2. Из заданной символьной строки выбрать те символы, которые встречаются в ней только один, в том порядке, в котором они встречаются в тексте.
3. Определите, является ли заданная строка правильной записью вещественного числа с возможным знаком и десятичной точкой.
4. С клавиатуры вводиться отрывок N строкю Требуется напечатать строку, в которой больше всего слов.

Буду очень благодарен если поможете с решением данных задач.
Заранее большое вам Спасибо!
Mary Yu
Сообщения: 37
Зарегистрирован: 24 сен 2008, 00:15

18 дек 2008, 21:23


Все правильно?

да,...осталось тока запустить прогу...
Mary Yu
Сообщения: 37
Зарегистрирован: 24 сен 2008, 00:15

18 дек 2008, 21:24

SergeiNG писал(а):А может так???

Код: Выделить всё

Dim s As String             '  {например , rA_DA}
Dim sum, n, i, k As Integer
'Cls
sum = 0
s = text1.Text
n = Len(s)
For i = 1 To n
    k = Mid(s, i, 1)
    If i = n Then
        If k = "A" Then
        sum = sum + 1
    Else
        If k = "A" And (Mid(s, i + 1, 1) = " " Or Mid(s, i + 1, 1) = ".") Then
        sum = sum + 1
        End If
    End If
Next


сча запустим и проверим))
Ответить