Модераторы: Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [VB6/VBA] Сортировка, замена, подсчет факториалов 
:(
    Опции темы
Pitbul
Дата 2.5.2008, 19:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Fruzenshtein
*


Профиль
Группа: Участник
Сообщений: 231
Регистрация: 30.4.2008
Где: Киев

Репутация: нет
Всего: нет



Формулировка задания:


В Эксэле дан рядок элементов, найти минимальный элемент. Все кратные ему элементы заменить факториалами их номеров
 smile 
--------------------
### JAVA  ######  programming ###
PM MAIL WWW ICQ Skype   Вверх
kapbepucm
Дата 3.5.2008, 09:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 993
Регистрация: 14.6.2007
Где: Латвия

Репутация: 6
Всего: 12



Кажеться, тоже самое
Цитата(kapbepucm @  3.5.2008,  09:12 Найти цитируемый пост)
Код
Private Sub CommandButton1_Click()
  Dim I As Long
  Dim SelectionMinElement As Long
  Dim t As Long
  If Selection.Rows.Count <> 1 Then
    MsgBox "Нужен 1 ряд элементов!", vbCritical
    Exit Sub
  End If
  If Selection.Columns.Count = 1 Then
    MsgBox "Может выделите больше элементов, чем 1?", vbCritical
    Exit Sub
  End If
  For I = 1 To Selection.Columns.Count
    If Selection(1, I) = "" Then
      MsgBox "Найден пустой элемент!", vbCritical
      Exit Sub
    End If
  Next I
  On Error GoTo ErrorLabel
    SelectionMinElement = Selection(1, 1)
    For I = 1 To Selection.Columns.Count
      If SelectionMinElement > CLng(Selection(1, I)) Then SelectionMinElement = CLng(Selection(1, I))
    Next I
  On Error GoTo 0
  If SelectionMinElement = 0 Then
    MsgBox "Минимальный элемент=0", vbCritical, "Деление на 0"
    Exit Sub
  End If
  t = 1
  For I = 1 To Selection.Columns.Count
    t = t * I
    If (SelectionMinElement <> Selection(1, I)) And ((Selection(1, I) Mod SelectionMinElement) = 0) Then
      Selection(1, I) = t
    End If
  Next I
ExitLabel:
Exit Sub
ErrorLabel:
  If Err.Number = 13 Then
    MsgBox "Нужны только цифры!", vbCritical
    Resume ExitLabel
  End If
End Sub



--------------------
(С) kapbepucm
PM MAIL Skype   Вверх
Pitbul
Дата 3.5.2008, 10:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Fruzenshtein
*


Профиль
Группа: Участник
Сообщений: 231
Регистрация: 30.4.2008
Где: Киев

Репутация: нет
Всего: нет



kapbepucm

Огромное спасибо!=) Это как раз то что надо=) smile 

Только можно вопрос: какие корективы надо внести, что бы:
1. ПРи выделении пустой области не было МЕСЕДЖА пустой элемент, а просто все происходило так как будто пробелов нет. smile 
2. Что бы можно было проделовать такое и с буквами, но их учитывать как пробелы и просто по алфавиту расставлять без факториалов smile 
3. При выделении одного элемента ничего не происходило smile 

Извиняюсь за такие дуратские замечания, но преподаватели именно на это ругаются smile 
--------------------
### JAVA  ######  programming ###
PM MAIL WWW ICQ Skype   Вверх
kapbepucm
Дата 3.5.2008, 12:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 993
Регистрация: 14.6.2007
Где: Латвия

Репутация: 6
Всего: 12



Цитата(Pitbul @  3.5.2008,  10:05 Найти цитируемый пост)
ПРи выделении пустой области не было МЕСЕДЖА пустой элемент, а просто все происходило так как будто пробелов нет
А если вся выделенная область "пустая"?

Добавлено через 1 минуту и 22 секунды
Цитата(Pitbul @  3.5.2008,  10:05 Найти цитируемый пост)
Что бы можно было проделовать такое и с буквами, но их учитывать как пробелы и просто по алфавиту расставлять без факториалов  
3. При выделении одного элемента ничего не происходило 
Немного подождите...



--------------------
(С) kapbepucm
PM MAIL Skype   Вверх
kapbepucm
Дата 3.5.2008, 13:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 993
Регистрация: 14.6.2007
Где: Латвия

Репутация: 6
Всего: 12



Цитата(Pitbul @  3.5.2008,  10:05 Найти цитируемый пост)
3. При выделении одного элемента ничего не происходило 
Сделано.
Код
Private Sub CommandButton1_Click()
  Dim I As Long
  Dim SelectionMinElement As Long
  Dim t As Long
  If Selection.Rows.Count <> 1 Then
    MsgBox "Нужен 1 ряд элементов!", vbCritical
    Exit Sub
  End If
  If Selection.Columns.Count = 1 Then
    Exit Sub
  End If
  For I = 1 To Selection.Columns.Count
    If Selection(1, I) = "" Then
      'пусто
      Exit Sub
    End If
  Next I
  On Error GoTo ErrorLabel
    SelectionMinElement = Selection(1, 1)
    For I = 1 To Selection.Columns.Count
      If SelectionMinElement > CLng(Selection(1, I)) Then SelectionMinElement = CLng(Selection(1, I))
    Next I
  On Error GoTo 0
  If SelectionMinElement = 0 Then
    MsgBox "Минимальный элемент=0", vbCritical, "Деление на 0"
    Exit Sub
  End If
  t = 1
  For I = 1 To Selection.Columns.Count
    t = t * I
    If (SelectionMinElement <> Selection(1, I)) And ((Selection(1, I) Mod SelectionMinElement) = 0) Then
      Selection(1, I) = t
    End If
  Next I
ExitLabel:
Exit Sub
ErrorLabel:
  If Err.Number = 13 Then
    MsgBox "Нужны только цифры!", vbCritical
    Resume ExitLabel
  End If
End Sub


Добавлено @ 13:46
Цитата(Pitbul @  3.5.2008,  10:05 Найти цитируемый пост)
2. Что бы можно было проделовать такое и с буквами, но их учитывать как пробелы и просто по алфавиту расставлять без факториалов
В каком смысле расставить по алфавиту? Что, например, делать стаким набором:{Z;X;C;V;AA;ЖЭ}

Это сообщение отредактировал(а) kapbepucm - 3.5.2008, 18:13


--------------------
(С) kapbepucm
PM MAIL Skype   Вверх
Pitbul
Дата 3.5.2008, 15:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Fruzenshtein
*


Профиль
Группа: Участник
Сообщений: 231
Регистрация: 30.4.2008
Где: Киев

Репутация: нет
Всего: нет



{Z;X;C;V;AA;ЖЭ} = {AA,C,V,X,Z,ЖЭ} вот так

Цитата

А если вся выделенная область "пустая"?


То просто остается пустой и все не более smile 

А так вот проверил новую вариацию и думаю что проблем не возникнет с этим пунктом при сдаче=) Огромное спасибо=) smile 
--------------------
### JAVA  ######  programming ###
PM MAIL WWW ICQ Skype   Вверх
kapbepucm
Дата 3.5.2008, 18:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 993
Регистрация: 14.6.2007
Где: Латвия

Репутация: 6
Всего: 12



Цитата(Pitbul @  3.5.2008,  15:21 Найти цитируемый пост)
вот так
дополнительный вопрос: а что делать с таким рядом:
Код
{5;[пусто];QQQ;[пусто];4;5;QQQ;[пусто];[пусто];1;2;3;a}



Это сообщение отредактировал(а) kapbepucm - 3.5.2008, 18:21


--------------------
(С) kapbepucm
PM MAIL Skype   Вверх
Pitbul
Дата 4.5.2008, 10:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Fruzenshtein
*


Профиль
Группа: Участник
Сообщений: 231
Регистрация: 30.4.2008
Где: Киев

Репутация: нет
Всего: нет



kapbepucm

Я очень сильно извеняюсь=) Обговорил с теми кто уже сдавал эту ЛАБУ и они сказали что можно ее сдать без действий с символами=) Огромное спасибо=)

 smile 
--------------------
### JAVA  ######  programming ###
PM MAIL WWW ICQ Skype   Вверх
kapbepucm
Дата 4.5.2008, 17:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 993
Регистрация: 14.6.2007
Где: Латвия

Репутация: 6
Всего: 12



Ну ладно с буквами, а что делать с цифрами, например: {[пусто];5;7;2;4;[пусто];3}

Добавлено через 1 минуту и 29 секунд
Внимание, я стёр не ту строку в коде, код немного поменялся!


--------------------
(С) kapbepucm
PM MAIL Skype   Вверх
Pitbul
Дата 5.5.2008, 18:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Fruzenshtein
*


Профиль
Группа: Участник
Сообщений: 231
Регистрация: 30.4.2008
Где: Киев

Репутация: нет
Всего: нет



Цитата

Ну ладно с буквами, а что делать с цифрами, например: {[пусто];5;7;2;4;[пусто];3}


Если так то: ПУСТО, 5, 7, 4!, 5!, ПУСТО, 3

Вот так=) smile 
--------------------
### JAVA  ######  programming ###
PM MAIL WWW ICQ Skype   Вверх
kapbepucm
Дата 6.5.2008, 09:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 993
Регистрация: 14.6.2007
Где: Латвия

Репутация: 6
Всего: 12



С учётом новых требований- новый код:
Код
Public Function IsNumberF(param) As Boolean
  IsNumberF = True
  Dim I As Long
  On Error GoTo ErrorLabel
  I = CLng(param)
  On Error GoTo 0
  If param = "" Then IsNumberF = False'на всякий случай
Exit Function
ExitLabel2:
  On Error GoTo 0
  IsNumberF = False
Exit Function
ErrorLabel:
  Resume ExitLabel2
End Function
Private Sub CommandButton1_Click()
  Dim I As Long
  Dim SelectionMinElement As Long
  Dim Flag As Boolean: Flag = False
  Dim t As Long
  If Selection.Rows.Count <> 1 Then
    MsgBox "Нужен только 1 ряд элементов!", vbCritical
    Exit Sub
  End If
  If Selection.Columns.Count = 1 Then
    'обведён 1 элемент- ничего не делаем
    Exit Sub
  End If
  For I = 1 To Selection.Columns.Count
    If IsNumberF(Selection(1, I)) Then
      SelectionMinElement = Selection(1, I)
      Flag = True
      Exit For
    End If
  Next I
  If Not Flag Then
    'нет минимального элемента- ничего не делем
    Exit Sub
  End If
  For I = 1 To Selection.Columns.Count
    If IsNumberF(Selection(1, I)) Then
      If SelectionMinElement > Selection(1, I) Then SelectionMinElement = Selection(1, I)
    End If
  Next I
  If SelectionMinElement = 0 Then
    MsgBox "минимальный элемент=0", vbCritical, "деление на 0"
    Exit Sub
  End If
  t = 1
  For I = 1 To Selection.Columns.Count
    t = t * I
    If IsNumberF(Selection(1, I)) Then
      If (SelectionMinElement <> Selection(1, I)) And ((Selection(1, I) Mod SelectionMinElement) = 0) Then
        Selection(1, I) = t
      End If
    End If
  Next I
End Sub


Добавлено через 4 минуты и 55 секунд
Маленькое дополнение. У вас в загаловке темы написана сортировка. А в задании ни слова о том что и как сортировать.


--------------------
(С) kapbepucm
PM MAIL Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.0527 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.