С Новым годом! Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 12.12.2019
Сообщений: 2

Найти рейтинг книг в книжном магазине

12.12.2019, 14:52. Показов 648. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В чем суть задачи, мы должны составить рейтинг книг по их индексу
Сначала вводится какое количество книг мы будем рассматривать, пусть будет десять, позже мы вводим сами индексы этих книг,
то есть получается пользователь вводит: 10 98 98 345 234 10 98 23 2345 34565 897 и он выводит, какие книги больше всего раз появлялась в этом списке по уменьшанию. В нашем примере больше всего вводилась книга 98 потом 10 и т.д
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
12.12.2019, 14:52
Ответы с готовыми решениями:

В продаже книг в книжном магазине берет участие ЕОМ
В продаже книг в книжном магазине берет участие ЕОМ. Написать программу, которая спрашивает у покупателя пазвание книги, которую тот желает...

Реализовать эпизод применения компьютера в книжном магазине: компьютер запрашивает стоимость книг и сумму
реализовать эпизод применения компьютера в книжном магазине: компьютер запрашивает стоимость книг и сумму , внесенную покупателем, если...

В продаже книг в книжном магазине принимает участие ЭВМ
Составить программу, которая запрашивает стоимость книг, сумму денег, внесенную покупателем, а далее определяет причитающуюся сдачу (если...

4
2374 / 776 / 561
Регистрация: 15.01.2019
Сообщений: 2,394
12.12.2019, 18:53
Попробуйте такой код.
Pascal
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
program Project1;
uses
  CRT;
const
  maxelem = 100;
var
  a: array [1..maxelem] of integer; { Переменная для  хранения массива.}
  b: array [1..2,1..maxelem] of integer; { Переменная для  хранения массива.}
  n: integer; {  Переменная для хранения значения количества элементов в массиве.}
  i,j,k,h: integer; { Вспомогательные переменные для организации циклов.}
  tmp: integer; { Промежуточная переменная для организации сортировки}
  flag: boolean; {Логическая переменная для организации отбора элементов}
begin
  write('Введите значение максимального количества рассматриваемых книг: ');
  Readln(n);
  for i:= 1 to n do
    begin
     write('Введите значение ',i,' индекса книги: ');
     Readln(a[i]);
    end;
  writeln('Исходный массив с индексами книг: ');
  textcolor(10);
  for i:= 1 to n do
    begin
      write(a[i]:6);
      if i mod 10 = 0 then
        writeln;
    end;
  k:= 0;
  for i:= 1 to n do   { Цикл для перебора элементов в исходном массиве}
    begin
      flag:= false;
      for j:= 1 to k do {Цикл для перебора элементов во втором массиве}
        if a[i] = b[1,j] then  {Условие проверки наличия значений уже прошедших отбор }
          flag:= true;   {Флаг, который показывает, что такие значения уже найдены и занесены во второй массив}
      if not flag then
        begin
          inc(k);
          b[1,k]:= a[i];    {Пополнение второго массива элементами, значения которых еще не встречались}
        end;
    end;
 
  for i:= 1 to k do  { Подсчет количества повторений индексов книг}
    for j:= 1 to n do
      if b[1,i] = a[j] then
         b[2,i]:= b[2,i] + 1;
 
  for i:= 1 to k-1 do      { Упорядочивание частоты повторений по убыванию}
    for j:= 1 to k-i do
      if b[2,j] < b[2,j+1] then
        begin
          tmp:= b[2,j];      {Обмен значениями элементов для 2 строки}
          b[2,j]:= b[2,j+1];
          b[2,j+1]:= tmp;
          tmp:= b[1,j];      {Такой же обмен значениями элементов для 1 строки, чтобы не перепутать соответствия}
          b[1,j]:= b[1,j+1];
          b[1,j+1]:= tmp;
        end;
  writeln;
  textcolor(7);
  writeln('Массив с индексами книг и частотой их повторения: ');
  writeln('Зеленым цветом  отмечены индексы книг, желтым цветом - количество встречающихся индексов. ');
  for h:= 1 to (k div 10) + 1 do   {Повторение печати массива разбитого на целые десятки}
    begin
      for i:= 1 to 2 do
        begin
          if i = 1 then       {Изменение цвета для разных типов данных массива}
            textcolor(10)
          else
            textcolor(14);
          if h <= k div 10 then
            for j:= (h-1)*10+1 to (h-1)*10+10 do
              write(b[i,j]:6) {Вывод элементов массива, которые входят в десятки}
          else
            for j:= (h-1)*10+1 to (h-1)*10+ k mod 10 do
              write(b[i,j]:6); {Вывод элементов массива, которые остаются после целых десятков}
          writeln;
        end;
      writeln;
    end;
 
 
  Readln;
end.
0
Модератор
10378 / 5665 / 3399
Регистрация: 17.08.2012
Сообщений: 17,305
13.12.2019, 04:31
ValentinNemo, реализация не верная. Например, если книг 10, индексов может быть введено хоть +100500, главное, чтобы разных индексов было не более 10.

Количество книг вводить незачем.
Pascal
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
const
  m = 1000;
 
type
  book = record index, rating: integer end;
 
var
  a: array[1..m] of book;
  i, j, k, n, x: integer;
  t: book;
 
begin
  n := 0;
  writeln('Введите индексы книг через пробел и нажмите <Enter>:');
  while not eoln do
    begin
      read(x);
      i := 1;
      while (i <= n) and (a[i].index <> x) do inc(i);
      if i <= n
        then inc(a[i].rating)
        else begin
          inc(n);
          a[n].index := x
        end
    end;
  readln;
  for i := 1 to n - 1 do
    begin
      k := i;
      for j := i + 1 to n do if a[k].rating < a[j].rating then k := j;
      if k > i
        then begin
          t := a[i];
          a[i] := a[k];
          a[k] := t
        end
    end;
  if n > 0
    then begin
      writeln('Рейтинг книг в порядке убывания:');
      for i := 1 to n do write(a[i].index, ' ')
    end
    else writeln('Не введено ни одного индекса');
  readln
end.
Если индекс совпадает с номером книги:
Pascal
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
const
  m = 1000;
 
type 
  book = record index, rating: integer end;
 
var
  a: array[1..m] of book;
  i, j, k, n, x: integer;
  t: book;
 
begin
  writeln('Введите номера книг через пробел и нажмите <Enter>:');
  while not eoln do
    begin
      read(x);
      inc(a[x].rating)
    end;
  n := 0;
  while a[n + 1].rating > 0 do
    begin
      inc(n);
      a[n].index := n;
    end;
  readln;
  for i := 1 to n - 1 do
    begin
      k := i;
      for j := i + 1 to n do if a[k].rating < a[j].rating then k := j;
      if k > i
        then begin
          t := a[i];
          a[i] := a[k];
          a[k] := t
        end
    end;
  if n > 0
    then begin
      writeln('Рейтинг книг в порядке убывания:');
      for i := 1 to n do write(a[i].index, ' ')
    end
    else writeln('Номера книг введены неверно');
  readln
end.
При вводе большого количества индексов не обращайте внимания на возможные автопереводы на новую строку, и нажимайте <Enter> только после ввода всех индексов.
0
0 / 0 / 0
Регистрация: 12.12.2019
Сообщений: 2
13.12.2019, 07:58  [ТС]
Первое число это общее количество книг, то есть после них идет определенное кол-во книжных экземпляров, какой бы номер у них не был,
То есть после 10 идет ровно 10 индексов
0
Модератор
10378 / 5665 / 3399
Регистрация: 17.08.2012
Сообщений: 17,305
13.12.2019, 15:11
А, понял, то есть, первое число в строке - это общее количество индексов, а остальные числа - это индексы, которые могут совпадать? Извините, сразу не сообразил.

ValentinNemo, извините.

feedgy, в первой программе замените строки 14 и 15, а во второй программе - строки 13 и 14 на
Pascal
  read(k);
  for j := 1 to k do
В этом случае можно при вводе большого количества индексов использовать <Enter>, ввод не прекратится, пока не будут введены все индексы.
Дополнительно во второй программе можно убрать строки с 20 по 24, а строку 17 заменить на
Pascal
17
18
      inc(a[x].rating);
      a[x].index := x
Последнее - на всякий случай... Вторая программа не соответствует заданию.

Есть ещё вариант. Можно добавить после первого begin строчку read; и таким образом ввести первое число "в никуда". Но, в данном случае, этот трюк - так себе решение.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
13.12.2019, 15:11
Помогаю со студенческими работами здесь

Не выводятся записи о книжном магазине
program p1; type knmag=record f:string; namekn:string; namest:string; god:integer; case k:integer of 1:(city,made:string); ...

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

Оплата покупки в книжном магазине
При покупке в книжном магазине пользователь вносит стоимость книги и деньги, внесенные покупателем. Если сумма, внесенная покупателем равна...

Расчет с покупателем в книжном магазине
После паскале трудновато c C++. Условный оператор. Задача: Составить программу, реализующую эпизод применения компьютера в книжном...

Бланк продажи в книжном магазине VBA в Excel
Создать форму для заполнения бланка продажи в книжном магазине. Поле: название книги, вид (учебная, научная, художественная, детская) ...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути Сочетание глобально распределённой вычислительной мощности и инновационных. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru