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

Упростить программу или часть задать по другому

27.03.2014, 19:34. Показов 580. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
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
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
uses
  CRT;
 
const
  a: string[16] = '0123456789ABCDEF'; //Шаг1: Задаем строку для поиска в ней символов
var //Шаг2: Задаем переменные
  n: real;
  vuvod, w, w2, w3, w4: string;
  q, cc, ind, cc2, k, l, q2: longint;
 
//ШАГ3: процедура для разделения дробной и целой части числа
procedure rasdel(var ww: string);
var //Шаг3.1: Задаем переменную
  i: integer;
begin //Шаг3.2: пишем в строку по символам целую часть и удаляем с первой позиции по pos('.',ww) целую часть
  w2:=copy(ww,1,pos('.',ww)-1);
  delete(ww, 1,pos('.',ww));
  w3 := ww; //Шаг3.3.: Затем остаток исходной строки заносим в w3 (т.е. дробную часть)
end;
 
//ШАГ: функция для перевода целой части числа из любой СС в 10-ю
function Decat(ww2: string; cc: byte): integer;
var //Шаг4.1: Переменные
  i, n, sum: integer;
begin
  sum := 0;
  n := length(ww2); //Шаг4.2: присваиваем n - длину строки ww
  for i := 1 to n do //Шаг4.3.: пробегаемся по строке
  begin
    dec(n); //Шаг4.4: уменьшим счетчик на 1
    sum := sum + round((pos(ww2[i], a) - 1) * exp(ln(cc) * n));//Шаг4.5: суммируем число найденное в
    //строке по позиции символа-1 (pos(ss[i],a)-1)) в степени dec(n)
  end;
  Decat := sum;
end;
 
//ШАГ5: функция для перевода целой части числа из 10-й в любую сс
function Celoe(d: real; c: integer): string;
var //Шаг5.1: Переменные
  w: string;
  n2: integer;
begin
  n2 := round(int(d)); //Шаг5.2: Берем целую часть от числа
  w := '';
  repeat
    w := ((a[n2 mod c + 1]) + w); //Шаг5.3: повторяем пока число не будет равно нулю берём целую часть при
    //делении числа на основание и берём остаток + 1 от деления целой части на 16, записываем
    //результат посимвольно в строку w
    n2 := n2 div c;
  until (n2 = 0);
  Celoe := w;
end;
 
//ШАГ6: функция для перевода дробной части числа из 10-й в любую сс}
function Drob(d: real; t, c: integer): string;
var // Шаг6.1: Переменные
  w: string;
  l2, k, n3: real;
  i, l: integer;
begin
  k := d - int(d); //Шаг6.2: Берем дробную часть
  w := '';
  i := 0;
  if t <> 0 then //Шаг6.3: Если точность не равна 0 то переводим
  begin
    repeat
      l2 := k * c;
      k := frac(l2);//Шаг6.4: умножаем число на c (основание СС) берём целую часть и снова умножаем дробную
      w := w + a[round(int(l2)) + 1]; //Шаг6.5: ищем в строке элемент на позиции round(int(l2))+1
      //(целая часть от умножения числа на c +1)
      inc(i); //Шаг6.6: увеличиваем счетчик
    until i = t;
  end
  else //Шаг6.7: Иначе присваеваем w "0"
   w := '0';
  Drob := w;
end;
 
//ШАГ7:функция для проверки может ли быть это число в заданной системе счисления}
Function proverka(c:integer;w:string):boolean;
Var //Шаг7.1. Переменные
 i,kol,j:integer;
begin
kol:=0;
for i:=1 to c do
begin
 for j:=1 to length(w) do //Шаг7.2: Бежим по строке, если ввод правильный переходим на шаг 8, если не правильно ошибка
 if w[j]=a[i] then
  inc(kol);
end;
if kol=length(w) then
 proverka:=true
else
 proverka:=false;
end;
 
//ШАГ8: перевод дробной части из произвольной сс  в 10-ю
function drob2(ww: string; c: integer): real;
var //Шаг8.1: переменные
  i: integer;
  sum: real;
begin
  for i := 1 to length(ww) do //Шаг8.2: Бежим по строке, а конкретно по дробной части
    sum := sum + (pos(ww[i], a) - 1) * exp(ln(c) * -i); //Шаг8.3: умножаем позицию символа строки -1
  //на онование системы счисления в степени -i
  drob2 := sum;
end;
//Шаг9: Открытие диалового окна
begin
  ClrScr;
  repeat
    write('Введите СС из которой будете переводить: '); //Шаг9.1:вывод фразы" Введите СС из которой будете переводить:"
    readln(cc2); //Шаг9.2: Ввод СС1
    write('Введите СС в которую нужно перевести : '); //Шаг9.3: Вывод фразы "Введите СС в которую нужно перевести :"
    readln(cc); //Шаг9.4: Ввод СС2
  until (cc2 in [2..16]) and (cc in [2..16]); //Шаг9.5:  проверки вводимых СС
  repeat//Шаг9.6: Цикл ввода числа и проверка на его существование
   write('ввод числа в ', cc2, '-й СС: ');
   readln(w);
   w4:=w;
   if pos(',',w)<>0 then
    w[pos(',',w)]:='.';
   q2:=pos('.',w);
   val(w,n,l);
   Rasdel(w);
   if not proverka(cc2,w2) or not proverka(cc2,w3) then //Шаг9.7: Вывод ошибки в случае неправильного ввода"Некорректное число.Повторите"
    write('Некорректное число.Повторите ')
  until proverka(cc2,w2) and proverka(cc2,w3); //Шаг9.8: Вывод фразы "До какого знака после запятой считать:"
  write('До какого знака после запятой считать: ');
    readln(q);
  if cc2 = 10 then
  begin
    if ((n - round(int(n))) = 0) then //Шаг9.9: если дробная часть числа=0 то юзаем Celое
      vuvod := Celoe(n, cc)
    else //Шаг9.10: иначе юзаем обе и добавляем , между дробной и целой частью числа
      vuvod := Celoe(n, cc) + ',' + Drob(n, q, cc);
  end
  else
  begin
    if q2=0 then
      vuvod := Celoe(Decat(w3, cc2), cc) //Шаг9.11: переводим сначала из любой в 10-ю сс, а затем из 10-й в любую
    else
      vuvod := Celoe(Decat(w2, cc2), cc) + ',' + drob(drob2(w3, cc2),q, cc); //Шаг9.12: Затем добавляем переведенную дробную часть
  end;
  write('Число ',w4,'_',cc2,' в ',cc,'-й системе счисления:=',vuvod); //Шаг10: Выводим результат
end.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
27.03.2014, 19:34
Ответы с готовыми решениями:

Как можно упростить программу?(или подкорректировать)
(ссылка на задание) Вот мое решение : Код: #include &lt;stdio.h&gt; #include &lt;conio.h&gt; #include &lt;iostream.h&gt; #include...

Получить куки через api и задать из другому домену возможно ли?
Получаю через api куки авторизованного пользователя на домене a.ru, после чего нужно авторизовать этими куками пользователя по домену b.ru...

Можно ли в java каким либо образом передать часть кода другому методу?
Распишу проблему мне нужно решить САЛУ, в которой коэффициенты при переменных - это определённый интеграл от функции. Эти все функции...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
27.03.2014, 19:34
Помогаю со студенческими работами здесь

Упростить часть кода в сумме двух списков
Дан список (a1, a2,…, aN). Вычислить значение выражения- max(a2,a4,…)+min(a1,a3,…). Рабочий код: (defun x (list index f element) ...

Оптимизировать часть кода: упростить и сделать меньше строк
В общем код такой но он не полный это тока его часть и там все одно по одному повторяется и этот код слишком большой если массив строк...

Выяснить что больше, целая часть числа x, или его дробная часть, умноженная на 10
1)Ввести число x, выяснить что больше: целая часть числа x, или его дробная часть, умноженная на 10. Если первое, то число разделить на...

Ввести число х, выяснить что большеЖ целая часть х, или его Дробная часть, уу
Ввести число х, выяснить что больше: целая часть х, или его Дробная часть, умноженная на 10. Если первое, то число умножить на 10, если...

Ввести число х, выяснить что больше: целая часть х, или его дробная часть, умноженная на 10
Ввести число х, выяснить что больше: целая часть х, или его Дробная часть, умноженная на 10. Если первое, то число умножить на 10, если...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru