Вопрос № 63610: Здравствуйте, как мне считать в масив числа, если они разделяются пробелами, дефизами и двоеточами? Мне нужно считать только числа в массив.
..Вопрос № 63673: Здравствуйте, уважаемые эксперты!!!
Не поможите ли Вы мне вот стакой задачкой?
В двузначном числе на каждом шаге разрешается заменить любую цифру этого числа на остаток от деления на 10 сумму его цифр. По 2 заданным числам можно ли получить о...Вопрос № 63702: Помогите решить задачу. При решениии выдается сообщение 'type mismatch'. Текст задачи:
Составьте программу, проверяющую является ли последовательность из 10 чисел вводимых с клавиатуры :
1)арифметической;
2)геометрической.
Когда я реш...
Вопрос № 63.610
Здравствуйте, как мне считать в масив числа, если они разделяются пробелами, дефизами и двоеточами? Мне нужно считать только числа в массив.
Отправлен: 21.11.2006, 21:55
Вопрос задал: ataman (статус: 2-ой класс)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 2)
Отвечает: Verena
Здравствуйте, ataman!
Для этого обычно используют множества:
Const razd: set of char = [' ','-',':']
Можно задавать множество не как константу, а как тип, и присваивать значение переменной программно.
Считываете строку из файла или с экрана в string и выделяете числа:
s1=''; k:=0;
for i:=1 to length(str) do
begin
if str[i] in razd then {проверяем, есть ли i-й символ в множестве разделителей}
begin
inc (k);
val (s1, a[k], cod); {переводим строку в число и записываем в массив}
s1='';
continue;
end;
s1:=s1+str[i];
end;
--------- Эта история - не для истории, понимаешь?
Ответ отправила: Verena (статус: 3-ий класс)
Ответ отправлен: 22.11.2006, 00:42
Вопрос № 63.673
Здравствуйте, уважаемые эксперты!!!
Не поможите ли Вы мне вот стакой задачкой?
В двузначном числе на каждом шаге разрешается заменить любую цифру этого числа на остаток от деления на 10 сумму его цифр. По 2 заданным числам можно ли получить одно число из другого и за какое наименьшее количество шагов.
Например, из числа 47 на 1 шаге можно получить 17 либо 41 и т. д.
Заранее спасибо. Денис
Отвечает: Сухомлин Кирилл Владимирович
Здравствуйте, Гусев Денис!
Вам поможет динамическое программирование/рекурсия.
Надо перебирать числа, до которых мы можем добраться таким образом. По-хорошему, это надо делать через стек/очередь, сохраняя в них числа, до которых мы уже добрались. Но я вам приведу пример с рекурсией.
Назовем расстоянием между числами - кол-во ходов, за кторое можно добраться указанными в условии преобразованиями от одного до другого. В массив мы будем сохранять расстояния от числа n1.
Код с комментариями в приложении.
PS: При преобразовании чисел у вас может получиться остаток от деления = 0. И если записать нуль в старший разряд, то получится уже не двухзначное число. Как решить эту проблему, я оставляю подумать вам.
Помогите решить задачу. При решениии выдается сообщение 'type mismatch'. Текст задачи:
Составьте программу, проверяющую является ли последовательность из 10 чисел вводимых с клавиатуры :
1)арифметической;
2)геометрической.
Когда я решал то разбил на 2 части. В первой проверял арифметическую прогрессию.Листинг:
program labrab4B;
const n=10;
var
A:array[1..10] of real;
s1,s2,i:byte;
begin
for i:=1 to 10 do
begin
writeln('BBegute 10 chisel');
readln(A[i]);
s1:=0;
for i:=1 to 10 do s1:=s1+a[i];
for i:=1 to n do s2:=(a[1]+a[n])*n/2;
writeln(s2);
if s1=s2 then
writeln('arifmeticheskay progressia')
else
writeln('ne arifmeticheskay progresia');
end.
Пожайлуста помогите.Прислать на kutcherkain@yandex.ru
Отправлен: 22.11.2006, 12:37
Вопрос задал: Das_Kain (статус: Посетитель)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 4)
Отвечает: Verena
Здравствуйте, Das_Kain!
Эта ошибка говорит о несочетаемости типов real и byte, причём по вашей задаче, даже если задать массив byte, то переменная s2 должна быть real, т.к. в неё присваиваеися значение, полученное делением. И ещё в первом цикле пропущен end, но это уже другая ошибка.
--------- Эта история - не для истории, понимаешь?
Ответ отправила: Verena (статус: 3-ий класс)
Ответ отправлен: 22.11.2006, 14:32 Оценка за ответ: 3
Отвечает: Юрий Викторович
Здравствуйте, Das_Kain!
for i:=1 to 10 do s1:=s1+a[i]; S1 - byte ему нельзя присваивать значение типа REAl
перед s1:=0 нужен end для предыдущего цикла.
Зачем введена константа n?
Ответ отправил: Юрий Викторович (статус: 1-ый класс)
Ответ отправлен: 22.11.2006, 18:04