Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.03.2013, 10:34   #1
Ingez
Пользователь
 
Регистрация: 23.03.2013
Сообщений: 24
По умолчанию VBA

Здравствуйте, я новичок в программировании.Нужна ваша помощь!

1.Дано натуральное число N>99. Определить число сотен в нем.
(Честно говоря само задание не понял. Что значит "число сотен"?
это допустим если мы ввели число 4789 число сотен в нем будет 7 или 47?)

2.Дано натуральное число N<=1000.Вычислить сколько в нем цифр; найти предпоследнюю цифру если число >=10.

P.S.: При этом нельзя использовать строковые ф-ий и массивы!
Прошу составить простую программу понятную для начинающего программиста!
Если сможете помочь буду очень благодарен!


В первом задании просто объясните пожалуйста что значит "ЧИСЛО СОТЕН"...!

Последний раз редактировалось Ingez; 23.03.2013 в 10:52.
Ingez вне форума Ответить с цитированием
Старый 23.03.2013, 12:26   #2
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

1. Число сотен 47. (тысяч - 4, десятков - 478, единиц - 4789)
s-andriano вне форума Ответить с цитированием
Старый 23.03.2013, 12:34   #3
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

число сотен i:=n div 100;
предпоследняя цифра i:=(n mod 100) div 10;

Ну да, только заметил, что vba. Пример дельфийский привел
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 23.03.2013, 22:11   #4
Ingez
Пользователь
 
Регистрация: 23.03.2013
Сообщений: 24
По умолчанию

s-andriano, Аватар, спасибо, все сделал!
Только думаю число сотен это все таки цифра стоящая на позиции сотен т.е. например 9573 - число сотен 5, а не 95....

Сможете помочь еще с одним заданием?

3.Дано натуральное число N<=9999.
Определить:
1) является ли число палиндромом;
2)верно ли что это число содержит ровно три одинаковые цифры?
3)верно ли что все четыре цифры разные?
Ingez вне форума Ответить с цитированием
Старый 23.03.2013, 22:36   #5
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

1. Тогда что может означать фраза "пятнадцать сотен"? Вряд ли "количество сотен" стоит путать с "разрядом сотен в позиционной записи числа".

3. Коль скоро по сути все задачи на сравнение десятичных разрядов, а строковыми функциями пользоваться нельзя, значит, для этих разрядов нужно придумать свои обозначения и свои функции. Думаю, вполне подойдет и буквальное воспроизведение имеющихся строковых функций.
s-andriano вне форума Ответить с цитированием
Старый 24.03.2013, 19:23   #6
Ingez
Пользователь
 
Регистрация: 23.03.2013
Сообщений: 24
По умолчанию

Сделал предыдущее задание решение получилось очень длинным!

Помогите кто-нибудь еще с одной задачей на VBA:

4.Напечатать самое длинное слово из текста. (который пользователь вводит сам)

P.S.:На это раз можно пользоваться (а точней нужно) строковыми функциями, но не использовать массивы (Но только разве такое возможно?)
На крайний случай если без массивов никак можно с массивами.
Ingez вне форума Ответить с цитированием
Старый 24.03.2013, 20:00   #7
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

И как бы Вы стали делать эту задачу, если бы строка была написана на бумажке?
s-andriano вне форума Ответить с цитированием
Старый 24.03.2013, 20:34   #8
Ingez
Пользователь
 
Регистрация: 23.03.2013
Сообщений: 24
По умолчанию

Цитата:
Сообщение от s-andriano Посмотреть сообщение
И как бы Вы стали делать эту задачу, если бы строка была написана на бумажке?
Сосчитал бы кол-во букв и все.
У меня такой вопрос: без массивов то все это можно сделать?
Ingez вне форума Ответить с цитированием
Старый 24.03.2013, 20:44   #9
gaw4
Форумчанин
 
Регистрация: 31.05.2010
Сообщений: 407
По умолчанию

Код:
Private Sub CommandButton1_Click()
s = InputBox("N<=9999", , 3223)
If IsNumeric(a) And Len(a) < 5 Then

a = IIf(s = StrReverse(s), "Y", "N")
k = 0
For i = 1 To Len(s) - 1
   For j = i + 1 To Len(s)
        k = k - (Mid(s, i, 1) = Mid(s, j, 1))
        If k = 3 Then Exit For
   Next j, i
Label1 = k
b = IIf(k = 3, "Y", "N")
c = IIf(k = 0, "Y", "N")
MsgBox s & vbNewLine & "палиндром - " & a & vbNewLine & _
       "три одинаковых -     " & b & vbNewLine & _
       "все разные -     " & c
Else
MsgBox "N<=9999"
End If
End Sub

Private Sub CommandButton2_Click()
s = InputBox("Text", , "Напечатать самое длинное слово из текста. (который пользователь вводит сам)")
If Len(s) > 0 Then
Do While InStr(1, s, "  ") > 0
s = Replace(s, " ", "")
Loop
a = Split(s, " ")
ind = 0
For i = 0 To UBound(a)
  If Max < Len(a(i)) Then
     Max = Len(a(i))
     ind = i
  End If
Next i
MsgBox s & vbNewLine & "самое длинное слово  = " & a(ind) & " ="
Else
MsgBox "Error"
End If
End Sub
icq 584 308 611
gaw4 вне форума Ответить с цитированием
Старый 24.03.2013, 21:03   #10
Ingez
Пользователь
 
Регистрация: 23.03.2013
Сообщений: 24
По умолчанию

gaw4, спасибо конечно, но
1)Первую не надо было делать я сам уже его сделал;
2)Мне не понять ваш код, т.к. я еще не владею VBA на вашем уровне.

Если кто-то сможет написать по последнему заданию легкий для понимания код буду благодарен.

Последний раз редактировалось Ingez; 24.03.2013 в 21:18.
Ingez вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Совместимость Excel 2007 VBA - Excel 2010 VBA Genas Microsoft Office Excel 2 28.11.2012 15:33
VBA Word,VBA Excel решить 2 задачи fafolo4ka Фриланс 6 05.03.2012 01:15
VBA michael D. Помощь студентам 1 01.03.2012 13:02
VBA kolochkov Microsoft Office Excel 13 09.04.2011 21:11