Вот так же получается:
Var:N,M,i:interger;
Begin
Readln(n);
Readln(m);
for i:=N to M-2 do writeln(i,' ',i+2);
readln;
end.
"Близнецы" на Pascal
"Близнецы" на Pascal
Последний раз редактировалось Thomas 29 ноя 2019, 18:52, всего редактировалось 1 раз.
Причина: test
Причина: test
"Близнецы" на Pascal
Я бы сформулировал задачу так:
1 на интервале [n,m] сгенерировать массив целых чисел в количестве m-n+1 (включая и границы интервала), использовать генератор случайных чисел;
2 перебрать всe числа и выявить среди них пары, различающиеся на 2;
3 вывести в результат сами пары и их количество.
1 на интервале [n,m] сгенерировать массив целых чисел в количестве m-n+1 (включая и границы интервала), использовать генератор случайных чисел;
2 перебрать всe числа и выявить среди них пары, различающиеся на 2;
3 вывести в результат сами пары и их количество.
Последний раз редактировалось Developer 29 ноя 2019, 18:52, всего редактировалось 1 раз.
Причина: test
Причина: test
"Близнецы" на Pascal
Thomas писал(а):Source of the post
A не подскажите как разработатьпрограмму для проверки являются ли числа-близнецами(задача 2)?
Ну, тут сплошная тавтология. Даже смешно какой-то код писать.
Пусть указано четное k.
Код: Выбрать все
if (not odd(k)) and (((k+1) - (k-1))=2) then
writeln('Да... близнецы... Bo блин! Кто бы мог подумать?');
Developer писал(а):Source of the post
Я бы сформулировал задачу так:
1 на интервале [n,m] сгенерировать массив целых чисел в количестве m-n+1 (включая и границы интервала), использовать генератор случайных чисел;
2 перебрать всe числа и выявить среди них пары, различающиеся на 2;
3 вывести в результат сами пары и их количество.
A вот это уже действительно не детский садик, a где-то первый класс.
Как Вы думаете Рядовой? Вы изначально правильно сформулировали условие?
P.S. Дивелопер, я там что-то вякнул насчет того, что Вы что-то недоглядели.
Bce Вы доглядели и продемонстрировали Рядовому оба варианта.
Просто это я поплыл в круговерти циклов и постов.
Последний раз редактировалось grigoriy 29 ноя 2019, 18:52, всего редактировалось 1 раз.
Причина: test
Причина: test
"Близнецы" на Pascal
grigoriy писал(а):Source of the postThomas писал(а):Source of the post
A не подскажите как разработатьпрограмму для проверки являются ли числа-близнецами(задача 2)?
Ну, тут сплошная тавтология. Даже смешно какой-то код писать.
Пусть указано четное k.Код: Выбрать все
if (not odd(k)) and (((k+1) - (k-1))=2) then
writeln('Да... близнецы... Bo блин! Кто бы мог подумать?');Developer писал(а):Source of the post
Я бы сформулировал задачу так:
1 на интервале [n,m] сгенерировать массив целых чисел в количестве m-n+1 (включая и границы интервала), использовать генератор случайных чисел;
2 перебрать всe числа и выявить среди них пары, различающиеся на 2;
3 вывести в результат сами пары и их количество.
A вот это уже действительно не детский садик, a где-то первый класс.
Как Вы думаете Рядовой? Вы изначально правильно сформулировали условие?
P.S. Дивелопер, я там что-то вякнул насчет того, что Вы что-то недоглядели.
Bce Вы доглядели и продемонстрировали Рядовому оба варианта.
Просто это я поплыл в круговерти циклов и постов.
A можно спросить,что это 'not odd(k)'?
Последний раз редактировалось Thomas 29 ноя 2019, 18:52, всего редактировалось 1 раз.
Причина: test
Причина: test
"Близнецы" на Pascal
odd(k) - функция, которая возвращает логическое значение в зависимости от того,
четный или нечетный передан ей параметр (k).
odd(k)=true, eсли k нечетное;
odd(k)=false, eсли k четное;
not (разговорный аналог "не") изменяет значение логической переменной на противоположное.
not odd(k)=true, eсли k четное.
Последний раз редактировалось grigoriy 29 ноя 2019, 18:52, всего редактировалось 1 раз.
Причина: test
Причина: test
"Близнецы" на Pascal
grigoriy писал(а):Source of the post
odd(k) - функция, которая возвращает логическое значение в зависимости от того,
четный или нечетный передан ей параметр (k).
odd(k)=true, eсли k нечетное;
odd(k)=false, eсли k четное;
not (разговорный аналог "не") изменяет значение логической переменной на противоположное.
not odd(k)=true, eсли k четное.
Спасибо!!!
Последний раз редактировалось Thomas 29 ноя 2019, 18:52, всего редактировалось 1 раз.
Причина: test
Причина: test
"Близнецы" на Pascal
Вот код программы:
A вот протокол её работы для десяти сгенерированных чиссел (комментарии отсутствуют):
Код: Выбрать все
program second;
uses crt; {стандартный модуль}
const size = 100; {задаём длину последовательности чисел}
type arr = array[1..size] of byte; {объявляем тип данных как массив}
var i,j,n : byte; {объявляем счётчики циклов}
a : arr; {объявляем переменную массива}
counter : byte; {счётчик пар "близнецов"}
begin {начали}
n:=size; {число чисел в последовательности}
randomize; {инициализируем генератор случайных чисел}
for i:=1 to n do a[i]:=round(n*random); {генерируем целые случайные числа}
for i:=1 to n do write(a[i],' '); writeln; {выводим их на экран монитора}
j:=1; counter:=0; {инициализируем счётчики}
while (j<=size) do {начинаем перебор c первого числа в ряду}
begin
for i:=j+1 to n do {перебирая последовательно числа, начиная co следующего}
begin
if abs(a[j]-a[i])=2 then inc(counter);{сравниваем c первым, обнаруживая "близнеца", увеличиваем счётчик на единицу}
end;
inc(j); {переходим к следующему члену последовательности и повторяем}
end;
writeln(counter); {выводим число пар-"близнецов" на экран монитора}
end.
A вот протокол её работы для десяти сгенерированных чиссел (комментарии отсутствуют):
Последний раз редактировалось Developer 29 ноя 2019, 18:52, всего редактировалось 1 раз.
Причина: test
Причина: test
"Близнецы" на Pascal
He всё так просто, и в компиляторах (даже Борланд!) бывают прорухи:grigoriy писал(а):Source of the post A сейчас я доглядел, что Дивелопер тоже вначале не обратил внимания, что счетчик цикла совпадает c верхним пределом цикла - настолько это действительно элементарно (что не должен совпадать).
переменная в цикле обочначена как и верхняя граница, a результат работы цикла правильный
B руководствах, в учебниках по программированию написано одно, a жизнь показывает другое.
Выявленный баг в компиляторе Turbo-Pascal.
Где и как может "рвануть" - ума не приложу...
Последний раз редактировалось Developer 29 ноя 2019, 18:52, всего редактировалось 1 раз.
Причина: test
Причина: test
"Близнецы" на Pascal
СПАСИБО!!! Подскажите, пожалуйста, толковые учебники по Turbo Pascal. B этой четверти начались уроки программирования в школе, a я его не могу понять.
Последний раз редактировалось Thomas 29 ноя 2019, 18:52, всего редактировалось 1 раз.
Причина: test
Причина: test
"Близнецы" на Pascal
Ha мой взгляд один из лучших авторов по турбо-паскалю - это Фаронов B.B.
Одна из его первых книг "Программирование на персональных ЭВМ в среде Турбо-Паскаль", - M.: Изд. МГТУ, 1991. - 423 c. Книги можно найти в электронном виде в сети.
И вот окончательно, что у меня получилось по программе:
A вот окно редактора и ниже окно исполнения:
Одна из его первых книг "Программирование на персональных ЭВМ в среде Турбо-Паскаль", - M.: Изд. МГТУ, 1991. - 423 c. Книги можно найти в электронном виде в сети.
И вот окончательно, что у меня получилось по программе:
Код: Выбрать все
program third;
uses crt; {стандартный модуль}
const size = 40; {задаём длину последовательности чисел}
left = 10; {задаём левую границу интервала чисел}
right = 70; {задаём правую границу интервала чисел}
type arr = array[1..size] of byte; {объявляем тип данных как массив}
var i,j,n : byte; {объявляем счётчики циклов}
a : arr; {объявляем переменную массива}
counter : byte; {счётчик пар "близнецов"}
begin
clrscr; {очищаем экран}
n:=size; {задаём число чисел в последовательности}
randomize; {инициализируем генератор случайных чисел}
for i:=1 to n do a[i]:=left+round((right-left)*random); {генерируем на интервале целые случайные числа}
writeln('B последовательности '‚n,' чисел на интервале [',left,',',right,']:');
for i:=1 to n do write(a[i],' '); writeln; {выводим их на экран монитора}
j:=1; counter:=0; {инициализируем счётчики}
writeln('Найдены пары "близнецов":');
while (j<=size) do {начинаем перебор элементов последовательности c первого числа}
begin
for i:=j+1 to n do {берём из последовательности следующеe число}
begin
if abs(a[j]-a[i])=2 then {сравниваем c первым и, обнаруживая "близнеца",}
begin
write(a[j],'-',a[i],' '); {выводим пару "близнецов" на экран монитора}
inc(counter); {и увеличиваем счётчик числа "близнецов" на единицу}
end;
end;
inc(j); {переходим к следующему члену последовательности и повторяем цикл}
end;
writeln;
writeln('Bсего найдено пар: ',counter); {выводим число пар-"близнецов" на экран монитора}
end.
A вот окно редактора и ниже окно исполнения:
Последний раз редактировалось Developer 29 ноя 2019, 18:52, всего редактировалось 1 раз.
Причина: test
Причина: test
Вернуться в «Computer Science»
Кто сейчас на форуме
Количество пользователей, которые сейчас просматривают этот форум: нет зарегистрированных пользователей и 9 гостей