14.02.2009, 07:26 | #82 (permalink) |
Member
Регистрация: 24.12.2008
Сообщений: 419
Записей в дневнике: 4
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 1311
|
Вот ссылка на сайт, где очень много полезной информации для тех, кто создает сайты:
http://htmlbook.ru/ |
02.03.2009, 17:05 | #83 (permalink) |
Member
Регистрация: 24.12.2008
Сообщений: 419
Записей в дневнике: 4
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 1311
|
У меня возникло несколько вопросов по следующей задаче: подсчитать сумму произведений последовательных пар элементов в целочисленном массиве из 30 элементов:
Program P1_93; const n=30; Var a:array[1..n] of integer; Sum_P,i:integer; BEGIN For i:=1 to n do readln(a[i]); Sum_P:=0; For i:=1 to n div 2 do begin Sum_P:=Sum_P+a[2*i]*a[2*i-1]; end; writeln('Sum_P=',Sum_P); END. Такое решение было предложено в задачнике. Для чего нужно вот это? И почему они написали так? Если это условие изменить, то Паскаль пишет:выход за границы диапазона изменения индекса 1..30. |
02.03.2009, 17:28 | #84 (permalink) | |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Цитата:
И сразу увидите, что такой цикл разбивает массив на пАры, (2, 1), (4, 3) и т.д., перемножает числа в пАрах и полученные произведения складывает, что и требуется по условию задачи. Вы не написали, как меняли условие, подозреваю, что просто пытались убрать целочисленное деление, но тогда уже при i = 16 программа попытается перемножить a[32] и a[31], что недопустимо. |
|
02.03.2009, 17:34 | #85 (permalink) |
Member
Регистрация: 24.12.2008
Сообщений: 419
Записей в дневнике: 4
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 1311
|
Попробую это осознать и запомнить))) Может, когда-нибудь пригодится
|
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
02.03.2009, 17:45 | #86 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Тогда еще пара замечаний. Рассмотрим фрагмент:
... Sum_P:=0; For i:=1 to n div 2 do begin Sum_P:=Sum_P+a[2*i]*a[2*i-1]; end; ... 1. Вот что там действительно лишнее, так это операторные скобки begin и end, поскольку тело цикла состоит всего из одного оператора. 2. Конечно, можно и без целочисленного деления. Скажем, так: Sum_P:=0; i:=0; REPEAT i:=i+2; Sum_P:=Sum_P+a[i]*a[i-1]; UNTIL i=n; Но вариант из книжки красивее. |
03.03.2009, 22:12 | #87 (permalink) |
Member
Регистрация: 24.12.2008
Сообщений: 419
Записей в дневнике: 4
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 1311
|
Сегодня на курсах по информатике мы решили следующую задачу:
http://www.tehnari.ru/picture.php?al...&pictureid=460 Решение: Program C_4; Var a:array[1..99] of integer; c:char; st,n,i,min:integer; BEGIN For i:=1 to 99 do a[i]:=0; readln(n); For i:=1 to n do begin Repeat read(c) Until c=' '; Repeat read(c) Until c=' '; readln(st); a[st]:=a[st]+1; end; min:=n; For i:=1 to 99 do If (a[i]>0)and(a[i]<min) then min:=a[i]; For i:=1 to 99 do If a[i]=min then writeln(i); END. Ход решения преподаватель нам объяснил, но мне интересно, работает ли эта программа. Когда я стала вводить что-то вроде:Иванов ИИ 60, она выдала ошибку ввода в 8-й строке((( |
03.03.2009, 22:21 | #88 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Естественно. Начинать надо с ввода количества учеников (n), потом нажать Enter, а уж потом вводить построчно список.
Да, а после ввода инициала надо ставить точку. |
03.03.2009, 22:48 | #90 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Маша, это, конечно, прекрасно, только вот... Всё же рискну дать один совет - попробуйте научиться ЧИТАТЬ программы. Так, строчку за строчкой, осмысливая что там и зачем. Поверьте, это действительно нужно. Вам.
|
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
|
|