Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Математика


Ответ
 
Опции темы Опции просмотра
Старый 14.02.2009, 00:39   #81 (permalink)
Sk1F
Member
 
Регистрация: 16.11.2008
Сообщений: 555
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 165
По умолчанию

везёт) а мне самому приходилось разбираться с кодами
Sk1F вне форума   Ответить с цитированием
Старый 14.02.2009, 07:26   #82 (permalink)
ummasha
Member
 
Аватар для ummasha
 
Регистрация: 24.12.2008
Сообщений: 419
Записей в дневнике: 4
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 1311
По умолчанию

Вот ссылка на сайт, где очень много полезной информации для тех, кто создает сайты:
http://htmlbook.ru/
ummasha вне форума   Ответить с цитированием
Старый 02.03.2009, 17:05   #83 (permalink)
ummasha
Member
 
Аватар для ummasha
 
Регистрация: 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.
ummasha вне форума   Ответить с цитированием
Старый 02.03.2009, 17:28   #84 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от ummasha Посмотреть сообщение
У меня возникло несколько вопросов по следующей задаче: подсчитать сумму произведений последовательных пар элементов в целочисленном массиве из 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.
Маша, а Вы попробуйте мысленно начать подставлять значения i = 1, 2, 3, и т.д. до 15.
И сразу увидите, что такой цикл разбивает массив на пАры, (2, 1), (4, 3) и т.д., перемножает числа в пАрах и полученные произведения складывает, что и требуется по условию задачи. Вы не написали, как меняли условие, подозреваю, что просто пытались убрать целочисленное деление, но тогда уже при i = 16 программа попытается перемножить a[32] и a[31], что недопустимо.
Vladimir_S вне форума   Ответить с цитированием
Старый 02.03.2009, 17:34   #85 (permalink)
ummasha
Member
 
Аватар для ummasha
 
Регистрация: 24.12.2008
Сообщений: 419
Записей в дневнике: 4
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 1311
По умолчанию

Попробую это осознать и запомнить))) Может, когда-нибудь пригодится
ummasha вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Старый 02.03.2009, 17:45   #86 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от ummasha Посмотреть сообщение
Попробую это осознать и запомнить))) Может, когда-нибудь пригодится
Тогда еще пара замечаний. Рассмотрим фрагмент:

...
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;

Но вариант из книжки красивее.
Vladimir_S вне форума   Ответить с цитированием
Старый 03.03.2009, 22:12   #87 (permalink)
ummasha
Member
 
Аватар для ummasha
 
Регистрация: 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-й строке(((
ummasha вне форума   Ответить с цитированием
Старый 03.03.2009, 22:21   #88 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Естественно. Начинать надо с ввода количества учеников (n), потом нажать Enter, а уж потом вводить построчно список.
Да, а после ввода инициала надо ставить точку.
Vladimir_S вне форума   Ответить с цитированием
Старый 03.03.2009, 22:41   #89 (permalink)
ummasha
Member
 
Аватар для ummasha
 
Регистрация: 24.12.2008
Сообщений: 419
Записей в дневнике: 4
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 1311
По умолчанию

Vladimir_S, сделала так, как вы сказали, и все получилось Спасибо
ummasha вне форума   Ответить с цитированием
Старый 03.03.2009, 22:48   #90 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от ummasha Посмотреть сообщение
Vladimir_S, сделала так, как вы сказали, и все получилось Спасибо
Маша, это, конечно, прекрасно, только вот... Всё же рискну дать один совет - попробуйте научиться ЧИТАТЬ программы. Так, строчку за строчкой, осмысливая что там и зачем. Поверьте, это действительно нужно. Вам.
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 01:23.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.