Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

QBasic

Войти
Регистрация
Восстановить пароль
 
Petro29
6 / 6 / 0
Регистрация: 30.04.2016
Сообщений: 155
#1

Программа – «Лучший работник» - QBasic

27.11.2016, 10:45. Просмотров 424. Ответов 7
Метки нет (Все метки)

QBasic/QuickBASIC
1
2
3
4
5
6
7
8
9
CLS
INPUT “ Кол. работников: “, n
FOR j = 1 TO n
PRINT j; “-м работником сделано деталей:”
    INPUT “   “,  k   ‘кол. собраных деталей
      S = S + k
NEXT j
PRINT “ Собрано деталей всеми работниками: “; S
PRINT “ Лучший работник – это  ?  -й работник.»
QBasic/QuickBASIC
1
2
3
4
5
6
Кол. работников:  3
1-й работник сделал деталей:  7
2-й работник сделал деталей:   8
3-й работник сделал деталей:  9
  Собрано деталей всеми работниками:  24
Лучший работник – это  ? –й работник.
Лучший работник – это 1-й, 2-й или 3-й работник? Имеет ли такая программа решение?


А вот другое решение этой же программы: Вопро тот же.
QBasic/QuickBASIC
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
CLS
DIM A(5)
FOR j = 1 TO 5
PRINT j; “-м работником собрано деталей:”;
  INPUT “  “, A(j)   ‘кол. собранных деталей
     S = S + A(j)
NEXT j
    P = A(1)
FOR j = 1 TO 5
   PRINT A(j);
IF P < A(j) THEN P = A(j)
NEXT j
   PRINT
PRINT “ Собрано деталей всеми работниками: “; S
PRINT “ Лучший работник – это ?  -й работник.
QBasic/QuickBASIC
1
2
3
4
5
6
7
8
9
1-м работником собрано деталей:  12
2-м работником собрано деталей:   5
3-м работником собрано деталей:  8
4- м работником собрано деталей:  6
5-м работником собрано деталей:  9
12,  5,  8,  6,  9
Собрано деталей всеми работниками:  40
Больше всех собрано работником:   12
Лучший работник – это  ?  -й работник.

А как вывести индекс лучшего работника – не получается. Вы могли бы сделать это.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.11.2016, 10:45
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Программа – «Лучший работник» (QBasic):

Определите лучший результат и номер спортсмена, показавший его - QBasic
В массив занесены данные о результатах выступления спортсменов в упражнении жим лежа : 305,5;363,5;320,5;190;301,5;290;312,5;315.Определите...

Программа для работы с массивом объектов типа Worker (работник) - C++
Здравствуйте! дали такое интересное задание: Worker: Фамилия и инициалы, Должность, Год поступления на работу, Зарплата. Создать...

Ввести в типизированный файл ФИО и лучший результат спортсмена, а потом изменить его так, чтобы осталось N лучший спортсменов - Turbo Pascal
Задание состоит в том, чтобы ввести в типизированный файл ФИО и лучший результат спортсмена, а потом изменить его так, чтобы осталось N...

Лучший математик среди шахматистов и лучший шахматист среди математиков — один и тот же человек или разные? - Логика и множества
Лучший математик среди шахматистов и лучший шахматист среди математиков — один и тот же человек или (вероятно) разные? Как формально, с...

Лучший самоучитель по PHP и Лучшая программа для создания сайтов на PHP - скачать? - PHP
У кого есть ссылки на материалы или опыт - как например за неделю или за месяц научится и понимать PHP и делать сайты на PHP? В каком...

Справочник Работник - 1С
Всем привет! не судите мои знания строго есть справочник Работник в нем ФИО,должность,кол-во часов работы и есть документ Зарплата...

7
echs
891 / 1086 / 348
Регистрация: 23.10.2013
Сообщений: 5,076
Записей в блоге: 8
27.11.2016, 11:28 #2
Petro29
Лучший работник это тот, кто сделал больше деталей.
1. Значит вы ищете в массиве Максимум и одновременно
в другой переменной запоминаете индекс.
...
пример, взято из последней вашей программы и добавлено
две строки необходимого вам кода (переменная ind - это и
есть индекс лучшего работника). После выхода из цикла
ind надо распечатать.

QBasic/QuickBASIC
1
2
3
4
5
6
7
8
9
10
P = A(1)
ind = 1
 
FOR j = 1 TO 5 
   PRINT A(j); 
   IF P < A(j) THEN 
      P = A(j) 
      ind = j
   END IF
NEXT j
0
Petro29
6 / 6 / 0
Регистрация: 30.04.2016
Сообщений: 155
25.12.2016, 12:03  [ТС] #3
Программа – «Лучший работник».(изменённая с учётом вашего ответа)
QBasic/QuickBASIC
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
CLS
INPUT “ Кол. работников: “, n 
FOR j = 1 TO n
PRINT j; “-м работником собрано деталей:”;
  INPUT “  “, A(j)   ‘кол. собранных деталей
     S = S + A(j)
NEXT j
    P = A(1)
    ind = j
FOR j = 1 TO n
IF P < A(j) THEN 
    P = A(j)
    ind = j
  END IF
NEXT j
   PRINT
PRINT “ Собрано деталей всеми работниками: “; S
PRINT “ Работник, собравший больше всех деталей: “; P
PRINT “ Номер этого лучшего работника: “; ind
Если лучший работник 2-й или 3-й то всё нормально.
А вот при лучшем 1-м работнике вместо номера 1 выходит номер 4
QBasic/QuickBASIC
1
2
3
4
5
6
7
1-м работником собрано деталей:  12
2-м работником собрано деталей:  8
3-м работником собрано деталей:  9
 
Собрано деталей всеми работниками: 29
Больше всех собрано работником:   12
Номер этого лучшего работника:  № 4
Это, видимо, из-за того, что при определении Р мах вводили первый номер цикла.
И как же быть?
И ещё вопрос неразрешимый: Как бы сделать сумму собранных деталей
каждым работником за все дни. Очень надо!
0
echs
891 / 1086 / 348
Регистрация: 23.10.2013
Сообщений: 5,076
Записей в блоге: 8
25.12.2016, 15:08 #4
Petro29
Вы в строке 9 сделали опечатку
Смотрите тот код, что я вам предложил. Должно быть ind = 1 (ОДИН)
0
Petro29
6 / 6 / 0
Регистрация: 30.04.2016
Сообщений: 155
11.01.2017, 17:52  [ТС] #5
С номером лучшего работника всё получилось. А ещё был вопрос про сумму каждого работ-
ника за все дни. Вопрос то был, а темы для него и не было. Вот теперь появилась: задаётся
количество дней, и, соответственно – вопрос внизу.

Добавлено через 19 секунд
QBasic/QuickBASIC
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Кол. рабочих дней:  2
 
1 – й день
Кол. работников:  2
1-м работником собрано деталей:  15
2-м работником собрано деталей:  12
 
Собрано деталей всеми работниками за 1 – й день:  27
Работник, собравший больше всех деталей:   15
Номер этого лучшего работника:  № 1
 
2 – й день
Кол. работников:  3
1 – м  работником собрано деталей:  12
2 – м  работником собрано деталей:  21
3 – м  работником собрано деталей:  8
 
Собрано дет. всеми работниками за 2 – й день:  41
Работник, собравший больше всех деталей:  21
Номер этого лучшего работника:  №2
Вопрос: Определить сумму каждого работника за все дни. Вот тогда будет полноценный
лучший работник за все дни – за неделю, за месяц, а не за один день.
У меня не получилось.
0
echs
891 / 1086 / 348
Регистрация: 23.10.2013
Сообщений: 5,076
Записей в блоге: 8
11.01.2017, 18:20 #6
Petro29
Вам вероятно следует определиться с числом работников.
И для каждого работника следует задать массив. Размер
массива должен быть равен максимум 30 (дней). А то
он на экране не поместится...
Или лучше сразу задать матрицу. Каждая строка будет
обозначать одного работника. Сколько строк - столько
работников.
Кроме того придется ввести линейный массив, длина
которого равна количеству строк предыдущей матрицы
В этот массив будут внесены суммы (количество изделий)
каждого работника за все дни
...
примечание
в ручную матрицу устанешь заполнять.
либо операторы DATA - READ, а еще лучше
заполнение случайными числами.
0
Petro29
6 / 6 / 0
Регистрация: 30.04.2016
Сообщений: 155
04.06.2017, 12:48  [ТС] #7
Программа – «Лучший работник». С ней я уже обращался в январе этого года. Ответ вы дали академический: про матрицы, массивы, оператор DATE – READ. Но без конкретного решения. Пришлось к ней вернуться и сделать такой код. Программа полезная, если бы не одно но: нельзя ли как то избавиться от многократных INPUTов и PRINTов.
Это хорошо, если два – три работника, а если 10, 20 и больше – тогда как?


Вот если бы вы решили эту задачку. С циклом у меня не получилось.
PureBasic
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
CLS
INPUT “ Ввести кол. рабочих дней: “, n
INPUT “ Ввести кол. работников: “, 3
FOR i = 1 TO n
   PRINT
      PRINT i; “-й день”
            S = 0
PRINT1- м работником сделано деталей: “;
   INPUT “    “, k, p, f
      S1 = S1 + k 
      S2 = S2 + p
      S3 = S3 + f
NEXT i
   PRINT
PRINT1- й работник сделал деталей: “; S1; “шт”
PRINT2- й работник сделал деталей: “; S2; “шт”
PRINT3- й работник сделал деталей: “; S3; “шт”
   IF S1 > S2 AND S1 > S3 THEN
        PRINT “ Победил 1-й работник.”
           END IF
    IF S2 > S1 AND S2  > S3 THEN
        PRINT “ Победил 2- й работник.”
   ELSE PRINT “ Победил 3- й работник.”
           END IF
      PRINT
PRINT “ Победившему работнику присуждается 1-е место и Медаль!
На выходе получили:
PureBasic
1
2
3
4
5
6
7
8
9
10
Ввести кол. рабочих дней.  2
Количество. работающих:  3
 
      1-й день
Кол. дет., сделанных 1-м, 2-м и 3-м работниками:  20, 25, 30
 
     2- день
Кол. дет., сделанных 1-м, 2-м и 3-м работниками:  15, 20, 25
Победил 3- й работник.
Победившему работнику присуждается 1-е место и Медаль!
0
Sasha_Smirnov
5425 / 1270 / 136
Регистрация: 08.02.2009
Сообщений: 3,959
Записей в блоге: 29
05.06.2017, 00:26 #8
Как-то несправедливо, что если S1 = S2 AND S1 = S3 THEN всё равно программа сообщит, что
Цитата Сообщение от Petro29 Посмотреть сообщение
QBasic/QuickBASIC
1
“ Победил 3- й работник.”
А чем он выделился-то?
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.06.2017, 00:26
Привет! Вот еще темы с ответами:

Описать класс Работник - Delphi
описать класс работник имя фамилия инициалы должность оклад и дата поступления . Помогите пожалуйста (

Создать структуру Работник - C++
Создать структуру &quot;Работник&quot;, с такими строками: -фамилия -разряд -Семейное положение -пол -дети Создать массив этих структур,...

Описать класс «Работник» - Lazarus
Описать класс «Работник». Каждая запись содержит фамилия и инициалы, должность, год поступления на работу, зарплата. Предусмотреть...

Фоновый работник, демон - Python
Вопрос знатокам django: какой способ будет наименее костыльным, чтобы вытянуть мнооооого иныфы (много запросов) с одного сервиса, складывая...


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

Или воспользуйтесь поиском по форуму:
8
Yandex
Объявления
05.06.2017, 00:26
Ответ Создать тему
Опции темы

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