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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.07.2010, 13:21   #11
Vago
Форумчанин
 
Регистрация: 15.01.2010
Сообщений: 948
По умолчанию

Ну и, вспомнив золотое правило "Ежели неприятность может случиться - она случится обязательно!", хорошо бы обработать и ситуацию, когда все эл-ты массива a[] - нулевые. Или "це вже занадто!" ?
Vago вне форума Ответить с цитированием
Старый 25.07.2010, 15:43   #12
KatrinSher
 
Регистрация: 23.07.2010
Сообщений: 5
По умолчанию

Какая развернулась дискуссия)))... Нет, я не мазохистка. Дело в том, что я совершенно не разбираюсь в составлении блок-схем, а уж тем более написании программ. Блок-схему, предложенную товарищем Kakawkin, еще не использовала. Это задание задали сделать к осенней сессии по предмету Информатика. Простейшие блок-схемы, связанные с функциями, я составила, но, к сожалению, массивы в школе мы не проходили...Если кто-то сможет помочь, а еще лучше - объяснить... ну, это будет просто восхитительно!)))
KatrinSher вне форума Ответить с цитированием
Старый 25.07.2010, 16:14   #13
kakawkin
Форумчанин
 
Регистрация: 21.09.2009
Сообщений: 431
По умолчанию

Цитата:
Сообщение от Vago Посмотреть сообщение
Неверно.

a = {0, 2, 3}
b = ?

2. Блок-схема. Тоже неверно.

Что обозначают выходы "Да" и "Нет" из ромба i = 2 to n ? Я так понимаю, "Да" - повторять цикл, а "Нет" - выйти из него? Тогда почему по "Нет" мы попадаем на проверку a[i]<>0 , а по "Да" - обходим её?
непонял тя ничерта. Вот тоже самое решение растолковоно токо:
a:array[1..4] of integer;
a[1]=1;
a[2]=0;
a[3]=4;
a[4]=3;
b:=a[1];
for i:=2 to 4 do if a[i]<>0 then b:=b*a[i];

За место for i:=2 to 4 do if a[i]<>0 then b:=b*a[i] можно написать просто четыре строки if a[i]<>0 then b:=b*a[i] изменив указатель сравнения

b:=a[1];
if a[2]<>0 then b:=b*a[2] a[2]<>0 неподлежит условию т.к. a[2] имеет нулевое значение
if a[3]<>0 then b:=b*a[3] a[3]<>0 подлежит условию т.к. a[3] имеет значение 4 и поэтому умножаем b:=a[1]*a[3] =1*4 =4;
if a[4]<>0 then b:=b*a[4] a[4]<>0 неподлежит условию т.к. a[2] имеет значение 3 поэтмоу умножаем b:=a[4]*b =4*3 =12

И того получился ответ 12.
Массив a состоит из элементов 1,0,3,4 = 1*3*4 =12

b=1;
kakawkin вне форума Ответить с цитированием
Старый 25.07.2010, 16:19   #14
kakawkin
Форумчанин
 
Регистрация: 21.09.2009
Сообщений: 431
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
+1
и вообще, непонятно, зачем эти трюки с b:=a[1] ?!
Ну классика же - если нужно получить произведение чисел, то начальная иницилизация переменной должна быть ЕДИНИЦА!
Код:
 b := 1;
 for i:=1 to n do
  if a[i]<>0 then b := b * a[i];
и это на простейших задачах! А что же будет, если подобным образом программировать сложные проекты?! Результат будет зависеть не только от фаз луны, но и от высоты телеграфных столбов?!
а в чем разница то вообще ???

либо
b := 1;
for i:=1 to n do
if a[i]<>0 then b := b * a[i];
или же
b := a[1];
for i:=2 to n do
if a[i]<>0 then b := b * a[i];

В твоем варианте b=1 и массив будет перебираться с первой позиции
В моем варианте b=a[1] но массив будет перебираться со второй позиции

И чей лудше ? Да ни чей. Просто смотря кого где учили, или сам как учил

P.S. У мну есть друг который пишет программы вот по такому виду:
Код:
var a:integer;
begin
for i:=1 to 2 do
if a<>0 then
begin
showmessage('123123');
exit
else
showmessage('312312');
ext;
end;
end.
а я очень привык писать:
Код:
var a:integer;
begin
 for i:=1 to 2 do
  if a<>0 then
   begin
    showmessage('123123');
    exit
   else
    showmessage('312312');
    ext;
 end;
end.
и кто из нас круче ?
kakawkin вне форума Ответить с цитированием
Старый 25.07.2010, 16:24   #15
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

kakawkin,

Вам же Vago сразу указал пример массива a = {0, 2, 3}
для которого Ваша программа не будет работать!
Чему будет равен ответ?!!! НУЛЮ?! И это правильное решение задачи?!
Код:
a[1]=0;
a[1]=2;
a[3]=3;
p.s. А у Вас всё ещё хуже, чем я думал... Вы мало того, что пишете ошибочный код, так ещё и не пытаетесь/не можете понять, почему он ошибочный.

p.p.s. я уже не говорю про ситуацию, которую простой вариант с циклом не решает - смотри пост Vago #12 - это если ВСЕ элементы массива равны нулю, тогда ответом должно быть - сообщение о невозможности подсчитать произведение.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 25.07.2010, 16:51   #16
Grag
А может и не...
Участник клуба
 
Аватар для Grag
 
Регистрация: 27.03.2010
Сообщений: 1,269
По умолчанию

Цитата:
Сообщение от KatrinSher Посмотреть сообщение
Блок-схему, предложенную товарищем Kakawkin, еще не использовала.
И уж лучше не используй, ибо все изображено вопреки стандартам...
Перемешивай дело с бездельем и не сойдешь с ума...
Grag вне форума Ответить с цитированием
Старый 25.07.2010, 17:45   #17
Vago
Форумчанин
 
Регистрация: 15.01.2010
Сообщений: 948
По умолчанию

Цитата:
Сообщение от KatrinSher Посмотреть сообщение
Нет, я не мазохистка.
Тем не менее, небольшая воспитательная порка не помешала бы Уж слишком задача простая, даже для вчерашней школьницы...
...
Как я понимаю, преподаватель ждёт от Вас чего-то в этом духе:
bs_KatrinSher.jpg
Пропорции блоков должны соответствовать ГОСТу. Кто-то за этим следит, кто-то не очень... Блоки ввода-вывода тоже используют кто - какие, посмотрИте у подруг.

Если преподаватель не окончательно Вами затуркан, вопросы будут:
1. Если цикл "until" заменить на цикл "while", что изменится?
2. (то, о чём я уже говорил) Предусмотрите ситуацию, когда в массиве все элементы - нулевые.

Удачи!
Vago вне форума Ответить с цитированием
Старый 25.07.2010, 18:17   #18
KatrinSher
 
Регистрация: 23.07.2010
Сообщений: 5
По умолчанию

Хм, спасибо... Ну, не вчерашняя школьница, а уже как три года ею не являюсь)))... В общем благодарю Вас!
KatrinSher вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите составить блок-схему. Fil2010 Помощь студентам 1 21.06.2010 15:03
Помогите составить блок схему Света2125 Помощь студентам 7 29.10.2009 17:07
Помогите пожалуйста решить две задачи по паскалю и составить и составить блок схему! ...Оленька... Паскаль, Turbo Pascal, PascalABC.NET 2 20.01.2009 09:37
помогите составить блок схему zaq2000 Паскаль, Turbo Pascal, PascalABC.NET 5 04.12.2008 12:41
помогите составить блок схему ДЖО Помощь студентам 1 29.10.2008 02:20