Форум программистов, компьютерный форум, киберфорум
Наши страницы
Visual Basic
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.76/21: Рейтинг темы: голосов - 21, средняя оценка - 4.76
molinenhard
2 / 2 / 0
Регистрация: 10.03.2012
Сообщений: 11
1

В заданной строке определить количество слов, начинающихся и заканчивающихся на одну и ту же букву

10.03.2012, 01:12. Просмотров 3758. Ответов 21
Метки нет (Все метки)

"В заданной строке определить количество слов, начинающихся и заканчивающихся на одну и ту же букву"
и
"В заданном массиве строк определить количество строк, у которых первый и последний символы совпадают."
Сделать нужно через простейшие функции аля substring mid и тп
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.03.2012, 01:12
Ответы с готовыми решениями:

Подсчитать количество слов, начинающихся и заканчивающихся на одну и ту же букву
Добрый день форумчане необходима помощь срочно нужны проги на Visual Basic т.к....

Подсчитать количество слов, начинающихся и заканчивающихся на одну и ту же букву.
Дан файл , содержащий текст на русском языке. Подсчитать количество слов,...

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

Найти количество слов, которые содержат хотя бы одну букву «А»
Дана строка, состоящая из русских слов, набранных заглавными буквами и...

В заданной строке, состоящей из "слов", разделенных пробелами, определить количество "слов"
В заданной строке, состоящей из "слов", разделенных одним или более...

21
Dimon_bogoduhov
123 / 58 / 2
Регистрация: 15.02.2012
Сообщений: 127
10.03.2012, 12:32 2
Цитата Сообщение от molinenhard Посмотреть сообщение
"В заданной строке определить количество слов, начинающихся и заканчивающихся на одну и ту же букву"
эта тема на форуме уже была вот здесь
1
sco43
670 / 163 / 22
Регистрация: 27.01.2012
Сообщений: 372
10.03.2012, 13:30 3
Лучший ответ Сообщение было отмечено как решение

Решение

Visual Basic
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
Dim a(), s, b As String
Dim k, l, m, n, p As Integer
 List1.Clear
Randomize
k = Int(Rnd(1) * 30 + 1) 'ñîçäГ*ГҐГ¬ ñòðîêó ñëîâГ* Г°Г*çäåëåГ*Г» ","
For i = 1 To k
l = Int(Rnd(1) * 5 + 2)
For j = 1 To l
 s = s & Chr(Int(Rnd(1) * 12 + 97))
Next j
s = s & ","
Next i
Text1.Text = s
 
List1.AddItem "ñëîâГ*"
ReDim a(1 To k)                 'ïðåâðГ*Г№Г*ГҐГ¬ ñòðîêó Гў Г¬Г*Г±Г±ГЁГў, ñëîâo ýëåìåГ*ГІ Г¬Г*Г±Г±ГЁГўГ*
For i = 1 To Len(s)
n = n + 1
 If Mid(s, i, 1) = "," Then
  m = m + 1
  a(m) = Mid(s, i + 1 - n, n - 1)
  List1.AddItem a(m)
  n = 0
 End If
Next i
 
List1.AddItem "îäèГ*Г*êîâûå ГЎГіГЄГўГ» "
For i = 1 To k             'ГЁГ№ГҐГ¬ ñëîâГ* Г± îäèГ*Г*êîâîé ïåðâîé ГЁ ïîñëåäГ*ГҐГ© áóêâîé
 If Left(a(i), 1) = Right(a(i), 1) Then
  p = p + 1
 List1.AddItem a(i)
 End If
Next i
List1.AddItem "÷èñëî ñëîâ "
List1.AddItem p
3
molinenhard
2 / 2 / 0
Регистрация: 10.03.2012
Сообщений: 11
10.03.2012, 14:18  [ТС] 4
Спасибо вам огромное, а как насчет"В заданном массиве строк определить количество строк, у которых первый и последний символы совпадают."?
0
gaw
6633 / 1500 / 169
Регистрация: 09.01.2010
Сообщений: 4,273
10.03.2012, 14:19 5
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
List1.AddItem "слова"
ReDim a(1 To k)                 'превращаем строку в массив, словo элемент массива
For i = 1 To Len(s)
n = n + 1
 If Mid(s, i, 1) = "," Then
  m = m + 1
  a(m) = Mid(s, i + 1 - n, n - 1)
  List1.AddItem a(m)
  n = 0
 End If
Next i
=
Visual Basic
1
2
3
4
5
List1.AddItem "слова"
 a = Split(s, ",")            'превращаем строку в массив, словo элемент массива
For i = 1 To k
  List1.AddItem a(i - 1)
Next i
2
sco43
670 / 163 / 22
Регистрация: 27.01.2012
Сообщений: 372
10.03.2012, 14:47 6
Visual Basic
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
Dim a() As String
Dim k, l, p As Integer
 List1.Clear
Randomize
k = Int(Rnd(1) * 30 + 1) 'ñîçäГ*ГҐГ¬ Г¬Г*Г±Г±ГЁГў ñòðîê
ReDim a(1 To k)
List1.AddItem "ñòðîêè"
ReDim a(1 To k)
For i = 1 To k
 l = Int(Rnd(1) * 15 + 3)
For j = 1 To l
  a(i) = a(i) & Chr(Int(Rnd(1) * 15 + 97))
Next j
List1.AddItem a(i)
Next i
 
List1.AddItem "îäèГ*Г*êîâûå ГЎГіГЄГўГ» "
For i = 1 To k             'ГЁГ№ГҐГ¬ ñòðîêè Г± îäèГ*Г*êîâîé ïåðâîé ГЁ ïîñëåäГ*ГҐГ© áóêâîé
 If Left(a(i), 1) = Right(a(i), 1) Then
  p = p + 1
 List1.AddItem a(i)
 End If
Next i
List1.AddItem "÷èñëî ñòðîê "
List1.AddItem p
Добавлено через 1 минуту
Visual Basic
1
 a = Split(s, ",")
Прикольная функция)))
2
molinenhard
2 / 2 / 0
Регистрация: 10.03.2012
Сообщений: 11
10.03.2012, 17:27  [ТС] 7
А как заставить VB читать строку введенную с клавиатуры, мне постоянно выдает выход за массив сколько бы redim и прочего я бы не делал.(желательно к обоим заданиям)
1
sco43
670 / 163 / 22
Регистрация: 27.01.2012
Сообщений: 372
10.03.2012, 17:50 8
Просто в форме создаешь текстовое окошко, имя text1 присваивается автоматически.
Создаешь кнопку, щелкаешь по ней два раза. Пишешь внутри процедуры код:
d=text1.text
Запускаешь эту прогу, вводишь в текстовое окошко текст, щелкаешь кнопку.
Переменной d будет приваиваться тескт, который в это окошко ввел.
Чтоб проверить текст, можно команду добавить после оператора d=text1.text:
msgbox d - появится сообщение после щелчка на кнопку со значением переменной d.
.......................
1
molinenhard
2 / 2 / 0
Регистрация: 10.03.2012
Сообщений: 11
10.03.2012, 20:39  [ТС] 9
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 Dim a(), s As String
        Dim k, l, p As Integer
        List1.Items.Clear()
        p = -1
        k = TextBox3.Text 'кол-во слов
        s = Text1.Text
 
        List1.Items.Add("слова")
        a = Split(s, " ")            'превращаем строку в массив, словo элемент массива
        For i = 1 To k
            List1.Items.Add(a(i - 1))
        Next i
 
        List1.Items.Add("одинаковые буквы ")
        For i = 1 To k             'ищем слова с одинаковой первой и последней буквой
            If Microsoft.VisualBasic.Left(a(i), 1) = Microsoft.VisualBasic.Right(a(i), 1) Then 'выход за пределы массива блаблабла...
                p = p + 1
                List1.Items.Add(a(i))
            End If
        Next i
        List1.Items.Add("число слов ")
        List1.Items.Add(p)
Я так и делал, но ошибку победить не получается

Добавлено через 27 минут
Проблема решена

Добавлено через 1 час 30 минут
Цитата Сообщение от sco43 Посмотреть сообщение
Просто в форме создаешь текстовое окошко, имя text1 присваивается автоматически.
Создаешь кнопку, щелкаешь по ней два раза. Пишешь внутри процедуры код:
d=text1.text
Запускаешь эту прогу, вводишь в текстовое окошко текст, щелкаешь кнопку.
Переменной d будет приваиваться тескт, который в это окошко ввел.
Чтоб проверить текст, можно команду добавить после оператора d=text1.text:
msgbox d - появится сообщение после щелчка на кнопку со значением переменной d.
.......................
Во второй задаче со строками вроде как так легко не получится?

Добавлено через 31 минуту
Так вот, подскажите как можно текст введенный с клавиатуры содержащий несколько строк впихнуть в массив?
1
sco43
670 / 163 / 22
Регистрация: 27.01.2012
Сообщений: 372
10.03.2012, 21:15 10
Лучший ответ Сообщение было отмечено как решение

Решение

Думаю что так:
Visual Basic
1
2
3
4
5
6
7
List1.Clear
Dim a() As String
ReDim a(1 To Val(Text1.Text))
For i = 1 To Val(Text1.Text)
 a(i) = InputBox("Ââeäè ñòðîêó")
 List1.AddItem a(i)
Next i
3
molinenhard
2 / 2 / 0
Регистрация: 10.03.2012
Сообщений: 11
10.03.2012, 21:30  [ТС] 11
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 Dim a() As String
        Dim k, p As Integer
        ListBox1.Items.Clear()
        ReDim a(0 To Val(TextBox1.Text))
        For i = 1 To Val(TextBox1.Text)
            a(i) = InputBox("Ввeди строку")
            ListBox1.Items.Add(a(i))
        Next i
        For i = 1 To k             'ищем строки с одинаковой первой и последней буквой
            If Microsoft.VisualBasic.Left(a(i), 1) = Microsoft.VisualBasic.Right(a(i), 1) Then
                p = p + 1
                ListBox1.Items.Add(a(i))
            End If
        Next i
        ListBox1.Items.Add("число строк ")
        ListBox1.Items.Add(p)
получилось как то так, но в итоге выдает 0 даже если есть строки с одинаковыми буквами
0
SoftIce
es geht mir gut
10470 / 3982 / 1016
Регистрация: 27.07.2011
Сообщений: 9,655
Завершенные тесты: 1
10.03.2012, 21:42 12
Цитата Сообщение от molinenhard Посмотреть сообщение
For i = 1 To k
к чему равно? У тебя цикла проверки вообще нет. к=Val(TextBox1.Text)


или
Visual Basic
1
 For i = 1 To Val(TextBox1.Text)
1
molinenhard
2 / 2 / 0
Регистрация: 10.03.2012
Сообщений: 11
10.03.2012, 21:45  [ТС] 13
Ой ужс, проглядел такую глупость, извиняюсь, проблема решена
0
sco43
670 / 163 / 22
Регистрация: 27.01.2012
Сообщений: 372
10.03.2012, 21:50 14
Цитата Сообщение от molinenhard Посмотреть сообщение
Visual Basic
1
2
3
 Dim a() As String
        
        For i = 1 To k             'ищем строки с одинаковой первой и последней буквой
получилось как то так, но в итоге выдает 0 даже если есть строки с одинаковыми буквами
k - не определно.
Думаю
Visual Basic
1
k=val(textbox1.text)
1
SoftIce
10.03.2012, 21:51
  #15

Не по теме:

sco43, :D

1
molinenhard
2 / 2 / 0
Регистрация: 10.03.2012
Сообщений: 11
14.03.2012, 12:10  [ТС] 16
Нужно подредактировать эти две задачи:
vb.net
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
Public Class Form1
    Dim a() As String
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
 
        ListBox1.Items.Clear()
        ReDim a(0 To Val(TextBox1.Text))
        For i = 1 To Val(TextBox1.Text)        'Вводим строки в массив
            a(i) = InputBox("Ввeдите строку")
            ListBox1.Items.Add(a(i))
        Next i
    End Sub
    Sub opr(ByVal a() As String)
        Dim p As Integer
        For i = 1 To Val(TextBox1.Text) 'Ищем строки с одинаковой первой и последней буквой
            If Microsoft.VisualBasic.Left(a(i), 1) = Microsoft.VisualBasic.Right(a(i), 1) Then
                p = p + 1
            End If
        Next i
        TextBox2.Text = p 'Выводим результат 
    End Sub
    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
        End
    End Sub
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        opr(a)
    End Sub
End Class
1)Не обьявлять массив глобально, а передавать его с помощью byval byref
2)Сделать ввод массива не через импат бокс, а через процедуры\фунции типо:
vb.net
1
2
3
    Function vvod(ByVal T As TextBox) As Double
        Return Val(T.Text)
    End Function
во второй задаче:
vb.net
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
Public Class Form1
 
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim s As String
        Dim k As Integer
        List1.Items.Clear()
        k = TextBox3.Text
        s = Text1.Text
        Обработка(s, k)
    End Sub
 
    Sub Обработка(ByVal s As String, ByVal k As Integer)
        Dim a() As String
        Dim p As Integer
        a = Split(s, " ")
        For i = 1 To k
            If Microsoft.VisualBasic.Left(a(i), 1) = Microsoft.VisualBasic.Right(a(i), 1) Then
                p = p + 1
            End If
        Next i
        List1.Items.Add("Кол-во слов начинающихся и заканчивающихся")
        List1.Items.Add("на одну и ту же букву")
        List1.Items.Add(p)
    End Sub
 
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        End
    End Sub
End Class
1)Сделать работу не через элементы массива, а с целой строкой....Как я понимаю придется посимвольно проверять всю строку
0
SoftIce
es geht mir gut
10470 / 3982 / 1016
Регистрация: 27.07.2011
Сообщений: 9,655
Завершенные тесты: 1
14.03.2012, 12:36 17
Была уже такая тема
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Option Compare Text
Sub Command1_Click()
 Dim s As Variant, kol As Integer
 
 
  For Each s In Split(Replace(InputBox("Введите текст", _
                      "Ввод текста для обработки", _
                      "Это строка для обработко. Итоги."), _
                                                  ".", " "))
    If Left(s, 1) = Right(s, 1) And Len(s) > 1 Then
      Print s: kol = kol + 1
    End If
  Next s
  
  Print
  Print "Kоличество слов, у которых первый и последний " & vbCrLf _
        & "символы совпадают между собой = "; kol
End Sub
Это по второй задаче.

Добавлено через 8 минут
Или тебе надо без Сплит?
1
molinenhard
2 / 2 / 0
Регистрация: 10.03.2012
Сообщений: 11
14.03.2012, 12:38  [ТС] 18
Во второй задаче как раз без сплит
0
SoftIce
es geht mir gut
10470 / 3982 / 1016
Регистрация: 27.07.2011
Сообщений: 9,655
Завершенные тесты: 1
14.03.2012, 13:43 19
Без Сплит вторая задача
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Option Compare Text
Sub Command1_Click()
 Dim s As Variant, kol As Integer, n As String, k As String
  s = Trim(Replace(Replace(InputBox("Введите текст", _
      "Ввод текста для обработки", _
      " Это строка для обработко. Итоги."), _
      ".", " "), ",", " ")) & Space(1) 'Убир.проб.спр.-слева, заменяем точ.и зап.на проб., в конце ставим пробел.
   While InStr(1, s, "  ")
     s = Replace(s, "  ", " ") ' Тут убираем длинные пробелы
   Wend
   n = Mid(s, 1, 1)     ' Переменной n присваиваем значение первого символа
   For i = 1 To Len(s)
       If Mid(s, i, 1) = " " Then ' Если встречается пробел, то
        k = Mid(s, i - 1, 1)        'Переменной k присваивается значение предыдущего символа
        If n = k Then kol = kol + 1 ' Если переменные начала и конца совпадают, то увеличиваем kol
            ' Print n & k
            ' k = 0:  n = 0 '         Обнуляем переменные начала и конца
            n = Mid(s, i + 1, 1) 'Переменной присваиваем значение первого символа
        End If
    Next i
  Print "Kоличество слов, у которых первый и последний " & vbCrLf _
        & "символы совпадают между собой = "; kol
End Sub
1
molinenhard
2 / 2 / 0
Регистрация: 10.03.2012
Сообщений: 11
14.03.2012, 14:50  [ТС] 20
Да, все отлично
а в первой задачке как можно ввести эти строки через лист бокс, без импата
0
14.03.2012, 14:50
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.03.2012, 14:50

Найти количество слов в заданной строке
Дана строка, состоящая из русских слов, разделенных пробелами (одним или...

Подсчитать количество слов в заданной строке
Помогите пожалуйста с задачей. Дан текст. а) Подсчитать количество слов в...

Определить количество слов в строке и написать их
1) Определить кол-во слов в строке и написать их. Слова разделяют различные...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru