Учитель по информатике сказал что задачки простые, но для меня они темный лес. Может сможете мне помочь. Заранее благодарна . 1. Найти количество цифр кратных старшей цифре числа 2. В массиве 7*7 расставить строки в порядке возрастания количество четных чисел в их
Unconnected
21.06.2010 15:56
Первая:
var i,n,res:integer;
begin writeln('Vvedite chislo'); readln(n);res:=0; while (n>9) do n:=n div 10; for i:=1 to 9 do if (i mod n=0) then inc(res); writeln(res); readln; end.
Dushka
21.06.2010 16:08
Спасибо большое тебе Unconnected, осталась еще одна и я спасена
Ozzя
21.06.2010 16:08
Цитата
Учитель по информатике сказал что задачки простые, но для меня они темный лес. Может сможете мне помочь. Заранее благодарна .
Принципиально - не БУДУ. Ровно до тех пор, пока не исправите ошибки. Касающиеся не программирования "что Вы!?". А чиста русккаго языку. Надеюсь, Вы Свой язык уважаете?
Dushka
21.06.2010 16:15
Запятые, перед "что" и перед "сможете".
Unconnected
21.06.2010 16:16
№2:
const m=7; var mas:array [1..m,1..m] of byte; i,j:byte;
function getodd(st:byte):byte; var i:byte; begin result:=0; for i:=1 to m do if not(odd(mas[st,i])) then inc(result); end;
Procedure swap(p1,p2:byte); var i,buf:byte; begin for i:=1 to m do begin buf:=mas[p1,i]; mas[p1,i]:=mas[p2,i]; mas[p2,i]:=buf; end; end;
Procedure output; var i,j:byte; begin for i:=1 to m do begin for j:=1 to m do write(mas[i,j],' '); writeln; end; writeln; end;
begin randomize; for i:=1 to m do for j:=1 to m do mas[i,j]:=random(50); output; for i:=1 to m-1 do for j:=m-1 downto i do if getodd(j)>getodd(j+1) then swap(j,j+1); output; end.
Ozzя, да вроде не так всё запущено, бывает и хуже Я, кстати, рад, что хоть кому-то в школе задачки дают..)
Ozzя
21.06.2010 16:18
Цитата
Запятые, перед "что" и перед "сможете".
Молодец. Еще тире после "они". Жду Вашего варианта решения проблемы.
Dushka
21.06.2010 16:19
ААААААааааааааааааааааааа, расцеловала бы, большое спасибо за помощь.
Ozzя
21.06.2010 16:20
Цитата
Ozzя, да вроде не так всё запущено, бывает и хуже
Знаю.
Dushka Добрый дедушка Unconnected таки Вам помог. Не забудьте оному + поставить в рейтинг. ;)
Dushka
21.06.2010 16:29
Не могу поставить, не нажимается. Почему?
Ozzя
21.06.2010 16:36
Цитата
Не могу поставить, не нажимается. Почему?
Постов - маловато будет. Я поставлю за Вас, ежели не возражаете.
Гость
21.06.2010 16:37
Спасибо и вам Возражении не имею!
Dushka
12.06.2011 18:50
Я снова вернулась , попросили обосновать задачки, а я ни бе ни ме ни кукареку , не могли бы вы еще пояснить алгоритм этих задачек, как-нибудь доступным языком все объяснить?
Krjuger
12.06.2011 22:55
Хех еще 9 дней и был бы ровно год с того момента как вам ответили.Вы более конкретно скажите что не можете описать словами?уж вывод на экран вы должны понимать как производиться в процедуре output.Если в кратце,то функция getodd считает количество НЕчетных чисел в строке и выводит в качестве результата.Функция swap меняет местами 2 строки. А дальше остновная программа.В цикле проверяем,если количество нечетных в текущей строке больше чем в следующей,то меняем местами.
Dushka
14.06.2011 12:09
Саму суть задач мне бы разжевать
Krjuger
14.06.2011 14:30
Ну смотри у тебя есть массив 7х7 в нем в произвольном порядке записаны числа ты смотриш сколько у тебя в каждой строке четный чисел.Например в первой строке 1, во второй 4, в третьей 2, и тд.Ну и потом надо переставить строки так,чтобы вот эти самые числа были в порядке возрастания,тобиш в каждой следующей строке было как минимум не меньше,чем в предыдущей,тобиш первая строка останется на месте, а вторая и третья поменяются местами.Для примера,который я привел.
Dushka
15.06.2011 19:18
Так, во вторую задачу вроде как вклинилась, а можно еще первую?
IUnknown
15.06.2011 21:19
Ну, первую, для начала, надо правильно решить, прежде чем объяснять... Ибо то, что сейчас в посте №2 - оно, конечно, решает какую-то задачу, только не заданную в условии. Не верю я, что требовалось найти, сколько всего есть цифр, кратных старшей цифре числа. Наверняка задание стояло так: найти количество цифр числа, кратных его старшей цифре... Скажем, в 47854 их будет 3, а в 7889 - одна, если саму старшую цифру считать. Кстати, вот еще подвох: а считать ли?
Возможно, если бы это задание было решено верно - то продолжения бы не последовало...
Unconnected
15.06.2011 22:52
Ну, если задание и правда такое, то вот, лучше поздно)
Это неправильное решение. Введи 5735, и удивись, а с чего бы это 5-ка встречается 3 раза? Открою тайну: Ord(#13) - Ord('0') = -35, хотим остаток от деления на 5 - получаем что? Ага, он самый, 0...
А насчет двух ReadLn подряд - ну сколько же можно говорить? После цикла прочитай из буфера #10 еще одним Read-ом, и не надо будет магические несколько ReadLn-ов добавлять для ожидания...
Unconnected
15.06.2011 23:16
Огоо, вот это бы я долго ловил..) Добавил в тот пост поправку.
Если у тебя PascalABC - то просто убери последний ReadLn, программа закончится сразу же после обработки введенного числа...
Dushka
17.06.2011 0:28
не помогло
IUnknown
17.06.2011 0:38
Цитата
не помогло
Значит, выкини свой старый компилятор и возьми на сайте новый. Я СНАЧАЛА проверяю, ПОТОМ советую.
Dushka
17.06.2011 1:13
запустила в делфи, заработало, спасибо, а можно теперь объяснить?
Lapp
17.06.2011 7:42
Цитата(Unconnected @ 16.06.2011 16:19)
var oldest,c:char; oldestv,r:byte; begin r:=1; read(oldest); oldestv:=ord(oldest)-ord('0'); ...
Ой, не по нутру мне это.. Препод, может, эту писанину и примет (я б - ни за что!)), но по большому счету - так нельзя.. А если я поставлю пробел перед вводом числа?.. или, если начну его с нуля? или введу в шестнадцатиричной форме, $25 или 0x25? И потом - кто сказал, что число положительное??.. или - что оно целое??? в условии этого нет.. В конце концов, нужно уметь хотя бы остановить программу по ошибке ввода, когда препод попробует "пошутить" и введет буковку - твоя прога прилееееежно все просчитает и выдаст чушь .
Уж либо ты пользуешь стандартный числовой ввод, либо сам обрабатываешь все подобные ситуации. А последнее, мне кажется, в данном контексте - просто абсурд )). Мне кажется, лучше вернуться к первому варианту ввода, но добавить обработку отрицательных и извиниться перед дамой, что ниасилил дробные (в надежде, что она уточнит условие, и они не понадобятся)).
Unconnected
17.06.2011 13:25
Цитата
$25 или 0x25
Не знаю, мне кажется не подразумевались в условии такие выкидоны) А поддержку отрицательных можно сделать незначительной доработкой(и буквы тоже ею отрезать, одним условием). Ну вообще ни разу тут не видел try-except в подобных задачках)
Lapp
17.06.2011 13:40
Цитата(Unconnected @ 17.06.2011 10:25)
Не знаю, мне кажется не подразумевались в условии такие выкидоны)
Какие это выкидоны? Пробел перед числом - выкидон? Минус - выкидон?.. Всегда, когда дашь человеку полный анализ всех аспектов - обязательно зацепится за самую незначительную деталь и начнет возражать вместо спасиба..
Цитата
А поддержку отрицательных можно сделать незначительной доработкой(и буквы тоже ею отрезать, одним условием).
А кто сказал, что нельзя?
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.