Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   Отладка программ (http://forum.oszone.net/showthread.php?t=202014)

zena 14-03-2011 21:29 1634936

Отладка программ
 
1.Определить количество абзацев в документе. Абзац, который содержит наибольшее число предложений, выделить красным курсивом. Вывести в конце документа сообщение:
а) о количестве абзацев;
б) номера абзацев с наибольшим числом предложений.
2. Подсчитать в 4 абзаце (если такого нет, то выдать соответствующее сообщение) количество слов, начинающихся и заканчивающихся на одну и ту же букву. В конце документа вывести соответствующее сообщение.
3. Найти в документе самое длинное слово. Предложение с самым длинным словом скопировать в начало документа.

KnRSU 22-03-2011 14:53 1641029

zena, вы хотите чтобы за Вас была решена задача или ждёте намека на решение, если первое то Вы ошиблись форумом (тут не фриланс), если второе то:
1. ThisDocument.Paragraphs.Count

насчет наибольшее число предложений
ThisDocument.Paragraphs(x).Range.Select
ThisDocument.Selection.Sentences.Count

выделить красным курсивом
ThisDocument.Selection.Font.Italic = True
ThisDocument.Selection.Font.Color = vbRed


а) количество абзацев ThisDocument.Paragraphs.Count
б) номера абзацев с наибольшим числом предложений - запоминать в массив при обходе во время поиска самого большого по предложениям абзаца

2. ThisDocument.Paragraphs(4).Range.Select
ThisDocument.Selection.Sentences(x).Select
ThisDocument.Selection.Words.Count
и соответственно использовать mid(Selection.Words(y).Text,1,1) = mid(Selection.Words(y).Text,len(Selection.Words(y).Text)-1,1)

3. ThisDocument.Words.Count - обходим по нему и находим

Iska 22-03-2011 18:11 1641224

KnRSU, «ThisDocument» работает именно с тем документом, в котором находится макрос, так что всё ж — «ActiveDocument».

zena 23-03-2011 19:32 1642186

Спасибо, я уже давно ничего не жду. Сама давно всё сделала:
Код:

Sub P1()
'Первый вопрос.
Dim MaxКоличество As Long
Dim MaxНомер As Long
Dim i As Long
With ActiveDocument
    MaxКоличество = .Paragraphs(1).Range.Sentences.Count
    MaxНомер = 1
    For i = 1 To .Paragraphs.Count
        If .Paragraphs(i).Range.Sentences.Count > MaxКоличество Then
            MaxКоличество = .Paragraphs(i).Range.Sentences.Count
            MaxНомер = i
        End If
    Next i
    With .Paragraphs(MaxНомер).Range.Font
        .Italic = True
        .Color = wdColorRed
    End With
    .Content.InsertParagraphAfter
    .Range(Start:=.Range.End - 1, End:=.Range.End - 1).Text = _
        .ComputeStatistics(wdStatisticParagraphs)
    .Content.InsertParagraphAfter
    .Range(Start:=.Range.End - 1, End:=.Range.End - 1).Text = MaxНомер
End With
End Sub

Код:

Sub P2()
'Второй вопрос
Dim КолСлов As Long
Dim Слово As Word.Range
With ActiveDocument
    If .ComputeStatistics(wdStatisticParagraphs) < 4 Then
        MsgBox "В предложении меньше 4 абазацев; программа будет завершена", vbCritical
        Exit Sub
    End If
For Each Слово In .Paragraphs(4).Range.Words
    If Left((Trim(Слово)), 1) = Right((Trim(Слово)), 1) Then
      КолСлов = КолСлов + 1
    End If
Next Слово
End With
MsgBox "В 4 абазаце количество слов, начинающихся и заканчивающихся на одну букву, равно: " & КолСлов
End Sub

Код:

Sub P3()
'Третий вопрос
Dim i As Long
Dim MaxКол As Long
Dim MaxНомер As Long
With ActiveDocument
    MaxКол = .Words(1).Characters.Count
    MaxНомер = 1
    For i = 2 To .Words.Count
        If .Words(i).Characters.Count > MaxКол Then
            MaxКол = .Words(i).Characters.Count
            MaxНомер = i
        End If
    Next i
    .Range(Start:=.Words(MaxНомер).Sentences(1).Start, End:=.Words(MaxНомер).Sentences(1).End).Copy
    .Content.InsertParagraphBefore
    .Range(Start:=0, End:=0).Paste
End With
End Sub



Время: 10:57.

Время: 10:57.
© OSzone.net 2001-