Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.10.2011, 12:00   #1
Наира
Новичок
Джуниор
 
Регистрация: 23.10.2011
Сообщений: 2
По умолчанию Привет Всем! Задачки на паскаль

Задача 1. Построить наибольшей длины линейный массив из различных двузначных чисел, в записи которых встречаются цифры:1,3,5,7,9. Расположить элементы массива по главной диагонали экрана монитора в порядке возрастания.
Входной файл пуст. В выходном файле - одна строка из элементов искомого массива, разделитель чисел-пробел.

Задача2. Вывести на экран монитора массив чисел и сумму элементов, окаймляющих данный массив чисел
1 2 3 4 ... n
n+1 n+2 n+3 n+4 ... 2n
2n+1 2n+2 2n+3 2n+4 ... 3n
........ ......... ........ ........ ...
(n-1)n+1|(n-1)n+2|(n-1)n+3|(n-1)n+4 ...n*n
во входном файле - число n. В выходом файле записана строка из n*n+1 числа, элементы массива и искомая сумма. Разделитель числа-пробел
Наира вне форума Ответить с цитированием
Старый 23.10.2011, 12:11   #2
Leshii
Форумчанин
 
Регистрация: 26.07.2011
Сообщений: 376
По умолчанию

Ну так в чём проблема? где свои наработки?
Люблю на ты.Я человек простой
Leshii вне форума Ответить с цитированием
Старый 23.10.2011, 12:18   #3
Наира
Новичок
Джуниор
 
Регистрация: 23.10.2011
Сообщений: 2
По умолчанию

Не могу решить
Наира вне форума Ответить с цитированием
Старый 24.10.2011, 13:41   #4
Vanta11a
Lawful Evil
Участник клуба
 
Аватар для Vanta11a
 
Регистрация: 13.05.2008
Сообщений: 1,208
По умолчанию

Цитата:
Сообщение от Наира Посмотреть сообщение
Не могу решить
Правильно читать
Цитата:
Сообщение от Наира Посмотреть сообщение
Мне лень думать, давайте вы быстренько на халяву решите, и тогда я не буду орать, что вы тупые ленивые заевшиеся гики

Наработки где?

Цитата:
Задача 1. Построить наибольшей длины линейный массив из различных двузначных чисел, в записи которых встречаются цифры:1,3,5,7,9. Расположить элементы массива по главной диагонали экрана монитора в порядке возрастания.
Входной файл пуст. В выходном файле - одна строка из элементов искомого массива, разделитель чисел-пробел.
Итак, поехали. Первое, что нам нужно - получить все двузначные числа, в которых есть 1,3,5,7,9.
Объявляем множество
Код:
 type nechet = set of integer;
var nech:necet;
nech := [1,3,5,7,9]
Далее перебираем все числа от 10 до 99
Код:
for i:=10 to 99 do
и проверяем на наличие заданных цифр
Код:
if ((i mod 10) or (i div 10)) in nech
Есть совпадение - выводим на экран
Код:
setpos(x,y);
write(i);
x:=x+1;
y:=y+1;
и пишем в файл
Код:
write(file,i,' ')
Алгоритм - бесплатен. Поиск багов - бесплатен. Реализация алгоритма - за отдельную плату.
На форуме помогают советами и объясняют, а не пишут на халяву программы, лабы, курсачи и т.д. (c)

Последний раз редактировалось Vanta11a; 24.10.2011 в 13:49.
Vanta11a вне форума Ответить с цитированием
Старый 24.10.2011, 15:15   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Vanta11a в вашем примере есть ряд неточностей... и косячок - нужно через OR проверять условия попадания, а не делать OR числам, а потом проверять, входит ли полученное число в нужное множество:
Код:
uses crt;
var
 i : integer;
 nech :set of byte;

begin
 nech := [1,3,5,7,9];
 for i:=10 to 99 do
   if ((i mod 10) in nech)
       or ((i div 10) in nech) then
но, если посмотреть, что нужны все НЕЧЁТНЫЕ цифры в записи числа, то можно и проще поступить:
Код:
var
 i : integer;
begin
 for i:=10 to 99 do
   if odd(i mod 10) or odd(i div 10) then .....
но вопрос в другом - а что такое "главная диагональ экрана монитора"?! ведь понятие главная диагональ определена только для квадратной матрицы!
Ну, допустим, в данном контексте так будут называться элементы, расположенные по диагонали, которая начинается в левом верхнем углу и заканчивается в правом нижнем. Однако тут сразу же возникает вопрос - а сколько элементов можно разместить? Если речь идёт о текстовом окне вывода, то у нас 25 строк. Нужных двухзначных чисел получается ровно 70 штук (я подсчитал). Получается, что числа нужно выводить по три штуки в строке?...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 24.10.2011, 15:24   #6
Vanta11a
Lawful Evil
Участник клуба
 
Аватар для Vanta11a
 
Регистрация: 13.05.2008
Сообщений: 1,208
По умолчанию

Serge_Bliznykov, а мне за исправный код не платили, да и писал на коленке со смартфона.
Ну и неточности не критичны, если разбираться будет - может хоть чему-то научится.

Цитата:
но вопрос в другом - а что такое "главная диагональ экрана монитора"?! ведь понятие главная диагональ определена только для квадратной матрицы!
Я посчитал, что это направление от лево-верх до право-низ. Проверку на выход за границы надо, конечно, но не хочется писать.
Цитата:
Ну, допустим, в данном контексте так будут называться элементы, расположенные по диагонали, которая начинается в левом верхнем углу и заканчивается в правом нижнем. Однако тут сразу же возникает вопрос - а сколько элементов можно разместить? Если речь идёт о текстовом окне вывода, то у нас 25 строк. Нужных двухзначных чисел получается ровно 70 штук (я подсчитал). Получается, что числа нужно выводить по три штуки в строке?...
Может именно такой косяк "запланирован" преподом чтобы отправить на доработку или проверить знания написанного?
Алгоритм - бесплатен. Поиск багов - бесплатен. Реализация алгоритма - за отдельную плату.
На форуме помогают советами и объясняют, а не пишут на халяву программы, лабы, курсачи и т.д. (c)
Vanta11a вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Всем привет. |Dexter| Общие вопросы C/C++ 1 28.05.2011 23:23
Привет всем! ~Санёк~ Помощь студентам 2 07.03.2009 16:23