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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.12.2014, 15:56   #1
NYork
Пользователь
 
Регистрация: 17.11.2014
Сообщений: 35
Радость Проверьте блок схему

Рисовал по такому коду,(двумерный массив) жду замечания (если есть)

int fl;// перемненная для флага
for (int j = 0; j < m; j++)
{
bool fl = false; // Флаг наличия отрицательного элемента
int res = 1;
for (int i = 0; i < n; i++)
{
res *= arr[i][j]; // Вычисление произведения
if (arr[i][j] <= 0) // Если в столбике встречается отриц. число, то
{
fl = true; // установить флаг
break; // и завершить вложенный цикл
}
}
if (fl=false)
// Если флаг не установлен, то вывести произведение столбика
cout << " Произведение " << j + 1 << " столбца: " << res << endl;
else
cout << " В " <<j+1<<" Столбце ошибка"<<endl; //иначе вывести результат ошибки
}
Изображения
Тип файла: jpg Масс.jpg (26.6 Кб, 67 просмотров)
NYork вне форума Ответить с цитированием
Старый 27.12.2014, 16:03   #2
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Не правильно. Циклы так не обозначаются.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 27.12.2014, 16:35   #3
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

Можно и так циклы рисовать, другое дело что можно проще и наглядней (ведь именно для наглядности придумали блок-схемы)...

Но а по правильности схемы - если i >= n, то твоя программа не завершает работу же, а начинается новая итерация цикла с j.

Переменная i обнуляется внутри цикла по j, а не перед ним.

Вот это ты в блок-схеме вообще не отобразил:
Код:
if (fl=false)
// Если флаг не установлен, то вывести произведение столбика
cout << " Произведение " << j + 1 << " столбца: " << res << endl;
else
cout << " В " <<j+1<<" Столбце ошибка"<<endl; //иначе вывести результат ошибки
Добавил:
Если хочешь сделать наглядную блок-схему - посмотри примеры блок-схем с циклами

Последний раз редактировалось rrrFer; 27.12.2014 в 16:39.
rrrFer вне форума Ответить с цитированием
Старый 27.12.2014, 16:40   #4
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Цитата:
Можно и так циклы рисовать
Нельзя. Цикл начинается с блока начальных значений итераторов. Затем идёт тело цикла и заканчивается проверкой условия окончания цикла, а не просто ветвлением.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 27.12.2014, 16:44   #5
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

Программа у тебя неправильная вообще.
Врядли она делает то, что ты хочешь. Посмотри на break во внутреннем цикле.

Цитата:
Нельзя. Цикл начинается с блока начальных значений итераторов. Затем идёт тело цикла и заканчивается проверкой условия окончания цикла, а не просто ветвлением.
Можно. Блок-схема - это представление алгоритма. Алгоритм к языку не привязывается. Ну нет в ассемблере например циклов и что теперь? Почему в блок-схеме они обязательно должны использоваться? Блок-схема это свободный от всяких конкретных синтаксических конструкций стандарт. Рисовать их можно как угодно, лишь бы понятно было.

Я уже не говорю о точ что требовать какие-то там "блоки начальных значений итераторов" вообще бессмысленно. Пройди по ссылке выше - в ГОСТ определено 2 вида блоков для циклов и вовсе не обязательно это do ... while как вы тут описали

Последний раз редактировалось rrrFer; 27.12.2014 в 17:11.
rrrFer вне форума Ответить с цитированием
Старый 27.12.2014, 16:52   #6
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Цитата:
Ну нет в ассемблере например циклов и что теперь?
Чё, ветвлений нет в Асме? Ну Вы загнули. И при чём тут язык? В блоке пишется так I = 0 или I = J. Где здесь привязка к языку?
И чё мне ссылки. Я писал на асме ещё тогда, когда Вас и в проекте небыло.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 27.12.2014, 17:04   #7
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

Цитата:
Цитата:
Нельзя. Цикл начинается с блока начальных значений итераторов. Затем идёт тело цикла и заканчивается проверкой условия окончания цикла, а не просто ветвлением.
Цитата:
Ну нет в ассемблере например циклов и что теперь?
Чё, ветвлений нет в Асме? Ну Вы загнули. И при чём тут язык? В блоке пишется так I = 0 или I = J. Где здесь привязка к языку?
И чё мне ссылки. Я писал на асме ещё тогда, когда Вас и в проекте небыло.
Мне глубоко срать на весь твой богатый опыт, сейчас ты пишешь ахинею. Может быть это маразм, а может быть - белочка. Можно обижаться, но ты сам перешел на личности.

И определись уже можно заменить цикл ветвлением или нет. Ты то пишешь что нельзя, то вырываешь из контекста фразу и пишешь что можно ссылаясь на свой богатый опыт.
rrrFer вне форума Ответить с цитированием
Старый 27.12.2014, 17:08   #8
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

Код:
if (fl=false)
тут у тебя присваивание а не сравнение. Программа стопудов работает не так как ты хотел
rrrFer вне форума Ответить с цитированием
Старый 27.12.2014, 17:17   #9
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

На вот свою блок-схему:
Изображения
Тип файла: jpg 1.jpg (30.6 Кб, 127 просмотров)
rrrFer вне форума Ответить с цитированием
Старый 27.12.2014, 17:19   #10
NYork
Пользователь
 
Регистрация: 17.11.2014
Сообщений: 35
По умолчанию

Верно, исправил на (!fl) и все заработало.

И еще, а обязательно ли это показывать -, (j+1)-это я написал, для нумерации столбцов на экране.

if (fl=false)
// Если флаг не установлен, то вывести произведение столбика
cout << " Произведение " << j + 1 << " столбца: " << res << endl;
else
cout << " В " <<j+1<<" Столбце ошибка"<<endl; //иначе вывести результат ошибки
NYork вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проверьте блок схему NYork Помощь студентам 1 19.12.2014 16:05
Проверьте правильно ли я составил блок-схему PetrWS Microsoft Office Excel 1 27.05.2011 19:26
Проверьте блок-схему Stefansson Помощь студентам 2 26.01.2011 20:52
Проверьте блок-схему пожалуйста (С++) Olya90 Помощь студентам 1 04.05.2009 21:34
Помогите!Проверьте плиз блок-схему ykcyc Помощь студентам 1 06.12.2008 17:54