Список форумов Roses Roses
Форум сообщества Roses
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 


Visual Basic
На страницу 1, 2, 3  След.
 
Начать новую тему   Ответить на тему    Список форумов Roses -> Общий раздел -> Общий
Предыдущая тема :: Следующая тема  
Автор Сообщение
Enigma_fury
Elysium
Elysium


Возраст: 35
Зарегистрирован: 20.03.2007
Сообщения: 494
Откуда: Таллинн

СообщениеДобавлено: 01 Февраль, 2011 01:21    Заголовок сообщения: Visual Basic Ответить с цитатой

кто нить шарит в нем, надо такое сделать

А. Создать файл, содержащий сведения о количестве изделий категорий А, В, С, собранных
рабочим за месяц. Структура записи имеет поля - фамилия сборщика, наименование цеха,
количество изделий по категориям, собранных рабочим за месяц. Количество записей -
произвольное.
Б. Считая заданными значения расценок Sа, Sb, Sc за выполненную работу по сборке
единицы изделия категорий A, B, C соответственно, подсчитать:
- общее количество изделий категорий А, В, С, собранных рабочим цеха Х;
- ведомость заработной платы рабочих цеха Х;
- средний размер заработной платы работников этого цеха.

Нужно создать программу, которая работает и текст программы, если смогут то можно ещё блок-схему

мне нужна формула как расчитать : средний размер заработной платы работников этого цеха.
и как должна выглядить : ведомость заработной платы рабочих цеха Х;
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Doredel
Royal Rose
Royal Rose


Возраст: 109
Зарегистрирован: 23.02.2006
Сообщения: 11222


СообщениеДобавлено: 01 Февраль, 2011 11:24    Заголовок сообщения: Ответить с цитатой

Enigma_fury писал(а):
Нужно создать программу, которая работает

Enigma_fury писал(а):
которая работает

Ну вот...

Ну я тебе не помогу думаю, но самоудовлетворение будет.

Структура записи текстового файла
Код:
data begin of itable occurs 0 with header line,
 data item_a type i,
 data item_b type i,
 data item_c type i,
 data name type string,
 data workshop type string.
end of itable.


Структура для сумм
Код:
data begin of wa,
 data item_a type i,
 data item_b type i,
 data item_c type i,
 data workshop type string,
 data namecount type i.
end of wa.


Строка текстового файла
Код:
|item_a|item_b|item_c|name|workshop|


Пример
Код:
|5|7|9|Darkman|Roses|


Будем считать что мы произвели считывание из текстового файла, оно зависит от языка, поэтому париться не буду.

Код:
sort itable by workshop name. ' Для того чтобы не делать вложенных циклов, сортировка обязательна. Одна из самых важных строчек в программе.

loop at itable.
 at new name. 'Считаем количество сотрудников. Это на случай если будут две записи на одного сотрудника.
  add 1 to wa-namecount.
 endat.
 if sy-index > 1.
 at new itable-workshop. 'Когда имя цеха меняется пора сделать вывод результатов
  wa-item_a = wa-item_a * item_ap. 'Умножаем продукцию на цену экземпляра
  wa-item_b = wa-item_b * item_bp.
  wa-item_c = wa-item_c * item_cp.
  wa-item_a = wa-item_a + wa-item_b + wa-item_c. 'Чтобы не засирать структуру суммируем все прямо тут.
  wa-item_a = wa-item_a / wa-namecount. 'Делим на число сотрудников
  write: 'средняя зп цеха', wa-workshop, 'составляет', wa-item_a.
  clear wa. 'Чистим временные данные
  wa-workshop = itable-workshop. 'Проставляем имя цеха
 endat.
 else.
  wa-workshop = itable-workshop. 'Проставляем имя цеха для первой записи таблицы
 endif.
  add-corresponding itable to wa. 'Думаю понятно
 endloop.

* Вывод даных по последнему цеху.
wa-item_a = wa-item_a * item_ap.
wa-item_b = wa-item_b * item_bp.
wa-item_c = wa-item_c * item_cp.
wa-item_a = wa-item_a + wa-item_b + wa-item_c.
wa-item_a = wa-item_a / wa-namecount.
write: 'средняя зп цеха', wa-workshop, 'составляет', wa-item_a.


Не компилировалось, не тестилось итп. Рассчитано на чтение и понимание, потому что абап легкочитаемый язык. Если ничего не понятно в коде, блок схема строится по комментариям.

Оу я только по цеху инфу вывел. Ну по работнику по этому коду тоже должно быть понятно как. Smile


Последний раз редактировалось: Doredel (01 Февраль, 2011 23:45), всего редактировалось 1 раз
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Lina
Elysium
Elysium


Возраст: 33
Зарегистрирован: 14.09.2007
Сообщения: 6
Откуда: Эстония :)

СообщениеДобавлено: 01 Февраль, 2011 21:50    Заголовок сообщения: Ответить с цитатой

Вопросик.
А можно эту же программу более простым языком VB написать? А то проходили ток основы и так ничего не понятно Sad
_________________
Somi . Ток тссс...
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Death Sender
Troll of Roses
Troll of Roses



Зарегистрирован: 04.02.2006
Сообщения: 6063
Откуда: у твоей мамы такой уродливый ребёнок?

СообщениеДобавлено: 01 Февраль, 2011 22:42    Заголовок сообщения: Ответить с цитатой

Халявщики. Спрошу в своей группе, мы на втором курсе почти такие же программы писали, если у кого-нибудь осталось, то скину.

Добавлено спустя 4 минуты 6 секунд:

Ну и на ВБ там прилично кода выходит на самом деле.
_________________
Дон. Дон Дон.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Lina
Elysium
Elysium


Возраст: 33
Зарегистрирован: 14.09.2007
Сообщения: 6
Откуда: Эстония :)

СообщениеДобавлено: 01 Февраль, 2011 22:49    Заголовок сообщения: Ответить с цитатой

К сожалению приходится искать помощи везде, потому что сроки поджимают Confused
_________________
Somi . Ток тссс...
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Doredel
Royal Rose
Royal Rose


Возраст: 109
Зарегистрирован: 23.02.2006
Сообщения: 11222


СообщениеДобавлено: 01 Февраль, 2011 22:59    Заголовок сообщения: Ответить с цитатой

Death Sender писал(а):
Ну и на ВБ там прилично кода выходит на самом деле.

Примерно в полтора раза больше чем я написал.
Lina, в интернете все есть, написать подобную программу дело суток даже без знания языка.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Lina
Elysium
Elysium


Возраст: 33
Зарегистрирован: 14.09.2007
Сообщения: 6
Откуда: Эстония :)

СообщениеДобавлено: 01 Февраль, 2011 23:05    Заголовок сообщения: Ответить с цитатой

если бы мне могли сказать какие данные должны выдаваться и как и расчитать(по каким формулам), а так примерно вот



private type spisok
fio as string
zex as string
kA as integer
kB as integer
kC as integer
end type
public n as integer

' создание файла
Private Sub Command1_Click()
dim x() as spisok, i as integer
List1.Clear 'если не будет необязательной части, то это не надо писать
List2.Clear 'если не будет необязательной части, то это не надо писать
n = val(inputbox(""" Введите количество рабочих" ," КОЛИЧЕСТВО РАБОЧИХ" ))
open "" СВОЙ ПУТЬ" for output as #1
redim x(n)
for i=1 to n
with x(i)
.fio = inputbox(" Введите фамилию рабочего" ," ФАМИЛИЯ РАБОЧЕГО" )
.zex = inputbox (" Введите гаименование цеха" ," НАИМЕНОВАНИЕ ЦЕХА" )
.kA = val(inputbox(" Введите кол-во деталей категории А, собранных рабочим за месяц" ," КОЛИЧЕСТВО ДЕТАЛЕЙ КАТЕГОРИИ А"" ))
.kB = val(inputbox(" Введите кол-во деталей категории B, собранных рабочим за месяц" ," КОЛИЧЕСТВО ДЕТАЛЕЙ КАТЕГОРИИ B"" ))
.kC = val(inputbox(" Введите кол-во деталей категории C, собранных рабочим за месяц" ," КОЛИЧЕСТВО ДЕТАЛЕЙ КАТЕГОРИИ C"" ))
write #1, .fio, .zex, .kA, .kB, .kC
end with
next i
close #1

'необязательная часть
'вывод некоторых данных из файла
open "" СВОЙ ПУТЬ" for input as #1
for i=1 to n
with x(i)
input #1, .fio, .zex, .kA, .kB, .kC
List1.AddItem .fio
List2.AddItem .zex
end with
next i
close #1

end sub
_______________________________________

'общее количество изделий категорий А, В, С, собранных рабочим цеха Х
Private Sub Command2_Click()
dim x() as spisok
List3. Clear ' если нет необязательной части, то считать как List1. Clear
List4. Clear ' если нет необязательной части, то считать как List2. Clear
open "" СВОЙ ПУТЬ" for input as #1
ReDim x(n)
z = inputbox(" Введите наименование цеха" , " ЦЕХ" )
For i = 1 To n
m = 0 ' количество деталей
with x(i)
input #1, .fio, .zex, .kA, .kB, .kC
if (z = .zex) then
m = val(.kA + .kB + .kC)
List3.AddItem .fio ' либо List1.AddItem .fio , если ....ну понятно
List4.AddItem m ' либо List2.AddItem m , если .... ну понятно
end if
next i
close #1
end sub
______________________________________






Doredel писал(а):


Lina, в интернете все есть, написать подобную программу дело суток даже без знания языка.



Просто сидеть и заниматься сутками только вб к сожалению времени нет...
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Doredel
Royal Rose
Royal Rose


Возраст: 109
Зарегистрирован: 23.02.2006
Сообщения: 11222


СообщениеДобавлено: 01 Февраль, 2011 23:40    Заголовок сообщения: Ответить с цитатой

Lina писал(а):
public n as integer

Это рак, который надо лечить. Будете называть переменные такими именами - уже через неделю забудете для чего они создавались.

Называть переменные транслитом в принципе тоже рак, но на него хотя бы можно закрыть глаза.

Трудно прочитать и понять что написал автор. Хотя бы из простейшего гуманизма и уважения к преподавателю (да, ведь?) следует переименовать переменные zmn и подобные.
Последняя часть нечитабельна совершенно.

Lina писал(а):
если бы мне могли сказать какие данные должны выдаваться и как и расчитать(по каким формулам)

Рукалицо.
По условию же видно. Я бы сделал в виде отчета, банальный листинг. Возможно требуется сделать вывод информации по сотруднику через комбобоксы, я не знаю. Листинг проще и удобнее всего.

Кстати ввод данных я бы реализовал иначе. Без особых сложностей цикл for next заменяется на while по условию пустого имени рабочего. Если поле пустое - значит данные в файл введены.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
spec
Elysium
Elysium



Зарегистрирован: 01.02.2006
Сообщения: 600
Откуда: питер

СообщениеДобавлено: 02 Февраль, 2011 17:18    Заголовок сообщения: Ответить с цитатой

Переменная n, как и переменная i, вполне нормальные варианты с очевидными значениями, так что это дело вкуса (хотя конечно переменная z не смотрится). Вывод данных и вправду странный, хз может такой и нужен, что такое List1 и прочие не очень понятно.

Дописанный вариант в аську ушёл, должно работать, если то что написано выше работает.
_________________
--
Elysium
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Doredel
Royal Rose
Royal Rose


Возраст: 109
Зарегистрирован: 23.02.2006
Сообщения: 11222


СообщениеДобавлено: 02 Февраль, 2011 19:08    Заголовок сообщения: Ответить с цитатой

spec, worker_iterator, workshop_num намного более очевидны, и делают код читаемым.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Narsil
Grammar nazi
Grammar nazi


Возраст: 35
Зарегистрирован: 09.03.2007
Сообщения: 5516
Откуда: Волшебная страна

СообщениеДобавлено: 02 Февраль, 2011 19:27    Заголовок сообщения: Ответить с цитатой

Doredel писал(а):
worker_iterator, workshop_num намного более очевидны, и делают код читаемым.

Не согласен. Со словом "намного".
Вообще, возможно, кому-то будет больше понятно "worker_iterator". Но набирать каждый раз для цикла
Код:
for (int worker_iterator = 0; worker_iterator < 100; worker_iterator++) {}
я как-то не намерен xD
_________________
На опушке маленький мальчик плакал от страха и кричал: "Волк, волк!", а волк, стоя за кустом, с тоской думал, что главная беда с маленькими мальчиками - их совершенное неумение расставаться.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
spec
Elysium
Elysium



Зарегистрирован: 01.02.2006
Сообщения: 600
Откуда: питер

СообщениеДобавлено: 02 Февраль, 2011 20:26    Заголовок сообщения: Ответить с цитатой

Переменная i используется в пределах 5 строчек, там запутаться нереально. А вот излишне длинные названия читабельности точно не добавят. Насчёт n ещё можно согласится...

Добавлено спустя 5 минут 33 секунды:

Более того, когда пойдут вложенные циклы ты будешь называть переменные Second_Worker_Iterator? или Worker_Iterator_2? тогда точна хана читабелньости.
_________________
--
Elysium
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Doredel
Royal Rose
Royal Rose


Возраст: 109
Зарегистрирован: 23.02.2006
Сообщения: 11222


СообщениеДобавлено: 03 Февраль, 2011 13:07    Заголовок сообщения: Ответить с цитатой

Narsil, для этого можно использовать сокращения. Например _i это итератор, _t - таблица итп. цикл который ты привел в пример кстати в коде встретится максимум пару раз.

spec писал(а):
Более того, когда пойдут вложенные циклы ты будешь называть переменные Second_Worker_Iterator? или Worker_Iterator_2? тогда точна хана читабелньости.

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

Впрочем свои варианты циклов без итератора есть во многих языках.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Narsil
Grammar nazi
Grammar nazi


Возраст: 35
Зарегистрирован: 09.03.2007
Сообщения: 5516
Откуда: Волшебная страна

СообщениеДобавлено: 03 Февраль, 2011 14:43    Заголовок сообщения: Ответить с цитатой

Doredel писал(а):
женные циклы зло, их не должно быть

Лицоладонь.
Doredel писал(а):
цикл который ты привел в пример кстати в коде встретится максимум пару раз.

В этом примере да.
_________________
На опушке маленький мальчик плакал от страха и кричал: "Волк, волк!", а волк, стоя за кустом, с тоской думал, что главная беда с маленькими мальчиками - их совершенное неумение расставаться.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
spec
Elysium
Elysium



Зарегистрирован: 01.02.2006
Сообщения: 600
Откуда: питер

СообщениеДобавлено: 06 Февраль, 2011 01:38    Заголовок сообщения: Ответить с цитатой

Во многих языках можно даже без условных операторов и циклов вообще обходиться, только смысл?
_________________
--
Elysium
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов Roses -> Общий раздел -> Общий Часовой пояс: GMT + 4
На страницу 1, 2, 3  След.
Страница 1 из 3

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2005 phpBB Group
Русская поддержка phpBB

Яндекс.Метрика

Anti Bot Question MOD - phpBB MOD against Spam Bots
Заблокировано регистраций: 18215