Turbo Pascal

Vladimir B.

милый добрый кот
Модератор
c[1..x] - цифра, n - число

i:=1;
if n<=9 then
c[1]:=n
else
begin
c:=n mod 10;
n:=n div 10;
inc(i);
while c>=9 do
begin
c:=n mod 10;
n:=n div 10;
inc(i);
end;
c:=n;
end;

массив набивается потихоньку цифрами

P.S. Akel ты жжош.
P.P.S. Может что неправильно написал, сильно не гневайтесь, облом это все в отладчик совать :)
 
A

AkeL.php

Guest
Кроссавчег. =) Массивом и я могу поковырять. Хотелось бы узнать, как сделать без них.
 

Vladimir B.

милый добрый кот
Модератор
Лузер :) Я массив только для удобства твоего создал - если ты заметил, его легко можно убрать. У меня вместо массива была 1 переменная и еще немного сравнений (искалась самая большая и маленькая цифры). Убираешь каунтер, массив, суешь туда свои конкретные задачи и все.
 

KoLoB

KoLoB.cz
А как насчет строчек? Число конвертируем в строку и по одному символу вырезаем, копируем и вообще делаем что хотим ;)
 

KoLoB

KoLoB.cz
Это гораздо проще, согласен. Но... никаких строк использовать нельзя (да их еще и на теории не давали). Единственное оставшееся - целочисленное деление и остаток.
Целочисленное деление... остаток....

Ну да, в Киев тоже через Одессу можно доехать ;)
 

Vladimir B.

милый добрый кот
Модератор
KoLoB... с научной точки зрения ты не прав, на этот алгоритм требуется меньше ресурсов (памяти и процессора), т.к. не надо ни массива-строки, ни процедур преобразования (даже если они реализованы через простое изменение кода символа на константу, чтоб получить цифру - они все-равно скушают кусочек стека ;)). Проще - не всегда эффективнее, возьмем тот-же самый "пузырек", простой но неэкономный, и квик-сорт. Результат - один, а знать надо оба способа.

Хотя, с практической - действительно гораздо проще через строки. И вообще, скажут через строки - будут все делать через строки. Вот и вся премудрость :)
 

Nalivai

•-.,__,,.-•*’°`’*•-.,
помогите решить, не получаються 3 задачи :(
1. Обчислити значення функції, якщо а змінюється від а початкового до а кінцевого із кровок дельта а.Результат обчислень вивести у вигляді таблиці. У випадку, якщо обчислення функції неможливо, видати відпоідне повідомлення. Обчислити найбільше значення функції на цьому інтервалі. Вихідні дані задати самостійно. Написати програму, навести результати роботи програми.
You must be registered for see images

2. Підрахувати кількість n-значних чисел Фібоначчі, у яких старша цифра парна.
3. Дані два вектори однакової довжини A(N) i D(N). Сформувати третій вектор B(2*N) за таким правилом: елементи з вектора А ставляться на непарне місце у векторі В, елементи з вектора D ставляться на парне місце у векторі В.
Спасибо
 

Вкладення

Hamster

Well-Known Member
Вот тебе 2 похожих ОДЗ, только вариант другой.
 

Вкладення

quant

yeah
2. Підрахувати кількість n-значних чисел Фібоначчі, у яких старша цифра парна.
вот руководство для составления мат модели и кода, дальше думай сам
для начала - числа Фибоначчи - ряд, первое и второе число единицы, следующие - сумма двух предыдущих, тобеш 1, 1, 2, 3, 5, 8, 13, 21 ...
потом таг каг мы строки ещё не учили тебе понадобится грубый способ разбивки числа на цыфры - придумай сам, зная что x mod y возвратит остачу от деления x на y (14 mod 6 = 2) а x div y возвратит целую частицу от деления x на y (14 div 6 = 2)
вот а функцию проверки на парность я не помню, можеш добавить вверху перед бегином вот эти строки, не пробовал но должно сработать
Код:
function parn (val: integer) : boolean;
begin
   parn := (val and 1 = 0);
end;
она возвратит true если val парное и false в обратном случае ( parn (4) = true )
 
Останнє редагування:
Зверху