19:08

C++

Здравтсвуйте, извиняюсь, что беспокою по мелочам (наверное), хотя для меня это кошмар просто. Нам задали задачи, но по функциям и массивам, но до двух я не могу никак додуматься.
1. Вводится последовательность целых чисел, 0 – конец последовательности. Определить минимальное простое число последовательности (функцией оформить проверку числа: результатом функции будет 1 – число простое, 0 - нет).
2. В матрице Y(m,m) найти максимальный элемент max1, находящийся на периметре матрицы, и максимальный элемент max2 вне периметра матрицы.
читать дальше
Подскажите, что сможете, пожалуйста. Это остались последние задания в этом семестре, а сделать не получается. Заранее брагодарна.

@темы: Вопрос, C++

Комментарии
26.05.2012 в 19:31

http://programmersclub.ru/2/ - Немного про функции.

К №1: По первой задаче: я вроде поняла что такое простые числа - это те, которые делятся только на 1 и на само себя. Но придумать как это написать в коде программы не смогла.
А значит проверять, будут ли делиться на все числа, меньшие самого себя и большие 1. Если делятся - False. В цикле вестимо.

К №2: Если есть матрица, предположим Y[i][j] (если не путаю синтаксис, но логика должна быть понятна), то будет четыре обхода для периметра: Y[0][j], Y[m-1][j], Y[j][0], Y[j][m-1] - где 0 <= i, j < m.

Для "внутри" соответственно: Y[i][j] где 0 < i, j < m-1, вложенными циклами (Один по i, другой по j).
26.05.2012 в 19:53

Православные красные звёзды над Кремлём канонично горят ©
1. Если длина последовательности не указана, проще всего не заморачиваться с хранением данных и обрабатывать каждое число по мере поступления. Читаете число N, если N = 0 завершаете программу. В цикле от 2 до N-1 находите остаток от деления N на текущее значение счётчика, если он равен нулю - значит N нацело поделилось и оно не простое, переходите к вводу следующего числа. Если дошли до конца и ни на что не поделилось нацело - запоминаете его в переменной для хранения результата. Последующие найденные простые числа сравнваете с уже найденным, перезапоминаете, если новое меньше.

2. Столбцы это те же строки, только сверху вниз, а не справа налево. Периметр это первый столбец (0,0)..(0,m), последний столбец (m.0)..(m,m), первая строка (0,0)..(m,0) и последняя строка (0,m)..(m,m). Для удобства нарисуйте себе на бумаге массивчик 3x3 и попробуйте написать работающий код для m=3. Меняется только одна координата, но нужно просмотреть 4 диапазона, поэтому будет 4 цикла подряд. Углы по два раза посчитаются, но это не проблема при таких условиях.
Внутри периметра - это ячейки с номерами от (1,1) до (m-1,m-1), обходятся двойным циклом без особых проблем.

Если у Вас проблемы с алгоритмикой, пишите в умыло, могу Вас поднатаскать.
26.05.2012 в 20:02

Those wings... I want them too.
№1: На самом деле, при проверке числа n на простоту надо проверять не все меньшие его числа, а только до n/2 - на все остальные оно, очевидно, делиться не будет.
№2.1: Если матрица квадратная (m,m) то можно обойтись и одним циклом: на каждой итерации выбирать максимальное из приведённых Yust@s значений Y[0][j], Y[m-1][j], Y[j][0], Y[j][m-1] и сравнивать с максимумом предыдущей итерации
12.06.2012 в 11:34

ах, спасибо огромное, я теперь разобралась!))