Форум программистов, компьютерный форум, киберфорум
Pascal ABC
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
2 / 2 / 1
Регистрация: 23.09.2012
Сообщений: 34

Удалить из последовательности числа. продублировать числа

05.11.2012, 13:44. Показов 3258. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Дана последовательность натуральных чисел {Aj}j=1...n (n<=10000). Удалить из последовательности числа, все цифры которых различны, а среди оставшихся продублировать числа, произведение которых кратно 14.
Решил вот так: http://ideone.com/JxZu2v
Но при запуске на борланд компиляторе в универе почему-то возникают ошибки переполнения. Где косяк?
Можно ли упростить программу и не использовать второй массив?

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
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
  program main;
  
  type TByte=array[0..9] of Byte;
  type TArray=array[1..10000] of Integer;
  
  {Заполняет массив значениями value}
  procedure FillArray(A:TByte; size:Integer; value:Integer);
  var i:Integer;
  begin
    for i:=1 to size do
      A[i]:=value;
  end;
  
  {Тестирует число по условию задачи.
  0 - все цифры разные (удалить число), 1 - есть одинаковые (пропустить), 
  2 - дублировать. Каждый элемент массива index[0..9] содержит количество 
  соответствующих цифр в числе, например index[3]=5 - в числе пять троек}
  function TestNumber(n:Integer):Integer;
  var index:TByte;
      status:Byte;
      i:Integer;
      temp:real;
  begin
    status:=0;
    TestNumber:=status;
    FillArray(index,High(index)-Low(index),0);
    while n>0 do
      begin
        inc(index[n mod 10]);
        n:=n div 10;
      end;
    for i:=0 to 9 do
      if index[i]>1 then
        begin
          status:=1;
          TestNumber:=status;
          break;
        end;
    if (status=0) then exit;
    temp:=1;
    for i:=1 to 9 do
      if index[i]>0 then
        temp:=temp*exp(ln(i)*index[i]);
    if (((trunc(temp)+1) mod 14)=0) then 
      TestNumber:=2;
  end;
  
  {Удаление числа из массива}
  procedure delete(var A:TArray; var n:Integer);
  var k,m:Integer;
  begin
    k:=1;
    while k<=n do
      if TestNumber(A[k])=0 then
        begin
          for m:=k to n-1 do
            A[m]:=A[m+1];
          n:=n-1;
        end
       else
        k:=k+1;
  end;
  
  procedure DreadMagic(var A:TArray; var B:TArray; var n:Integer);
  var k,i:Integer;
  begin
    k:=0;
    for i:=1 to n do
    case TestNumber(A[i]) of
      0: ; {do nothing}
      1: begin
            k:=k+1;
            B[k]:=A[i];
         end;
      2: begin
            k:=k+1; B[k]:=A[i];
            k:=k+1; B[k]:=A[i];
         end;
    end;
    n:=k;
  end;
  
  procedure Input(var A:TArray; var n:Integer);
  var i:Integer;
  begin
    write('Enter n: ');
    read(n);
    writeln('Enter ',n, ' elements:');
    for i:=1 to n do
      read(A[i]);
  end;
  
  procedure Output(A:TArray; n:Integer);
  var i:Integer;
  begin
    for i:=1 to n do
      write(A[i]:6);
  end;
  
  const T:array[1..7] of Integer=(987,4562,1123,59234,55768,876,1172);
  var A:TArray;
      B:TArray;
      i,n:Integer;
  begin
    n:=0;
    {for i:=1 to n do
      A[i]:=T[i];}
    Input(A,n);
    DreadMagic(A,B,n);
    Output(B,n);
  end.
Добавлено через 13 часов 15 минут
Переполнение начинается там, где возведение в степень.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
05.11.2012, 13:44
Ответы с готовыми решениями:

Массив. Удалить простые числа и продублировать числа, равные кубу целого числа
добрый вечер) тут надо написать такую программу дана последовательность чисел, удалить из этой последовательности простые числа и затем...

Удалить из последовательности числа, начинающиеся цифрой 2, а среди оставшихся продублировать числа, сумма цифр которых равна 25
Дана последовательность натуральных чисел {Aj}j=1...n (n&lt;=10000). Удалить из последовательности числа, начинающиеся цифрой 2, а среди...

Удалить из последовательности простые числа и продублировать числа кратные 8
Ввести последовательность натуральных чисел. Если последовательность не упорядочена по невозрастанию и не упорядочена по неубыванию, ...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
05.11.2012, 13:44
Помогаю со студенческими работами здесь

Удалить из файла числа и продублировать оставшиеся
Дана последовательность натуральных чисел {Aj}j=1...n (n&lt;=10000). Удалить из последовательности числа, начинающиеся цифрой 2, а среди...

Для каждого числа исходной последовательности удалить из записи числа все цифры, большие 5
Написать программу. Дана последовательность из n натуральных чисел. Для каждого числа исходной последовательности удалить из записи...

Переставить числа последовательности таким образом, чтобы в начале этой последовательности оказались все положительные числа, а в конце отрицательные
пусть задана последовательность чисел N1, N2, ..., Nk, состоящая из положительных и отрицательных значений. составить блок схему и...

Удалить из последовательности числа
Помогите написать программу. Дана последовательность натуральных чисел {Aj}j=1...n (n&lt;=10000). Удалить из последовательности числа,...

Найти числа из заданной последовательности, которые делятся на все числа из другой последовательности
Вход программы имеет следующий формат. Сначала вводится N &gt; 0- количество чисел в последовательности А. Далее идут N целых чисел. После...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru