KMA
Долгожитель
|
Ну и зачем мучаться и переводить файлы в текстовый???? Ты же можешь действовать по принципу: Заведем динамический массив типом которого является processor, а далее копировать все в этот массив (воспользуйся циклом, пока не встретиться нуль). А позже сравниваем эту цену с предлагаемой пользователю. Там же и сравним частоту процессора(похоже как на поиск максимального значения в массиве, только здесь два критерия). После выведем цену наилучшего. В текстовый файл советую переводить при помощи процедурки str; Если есть вопросы по кодингу, то задавай.
|
Всего сообщений: 940 | Присоединился: декабрь 2005 | Отправлено: 27 дек. 2005 15:07 | IP
|
|
Diamond666
Удален
|
помогите пожалуйста !!! Дана целочисленная матрица: Определить : 1. Сумму элементов в тех строках, которые содержат хотя бы один отрицательный элемент (оформить в виде функции) 2. Номера строк т столбцов все седловых точек матрицы(в виде процедуры)
|
Всего сообщений: N/A | Присоединился: N/A | Отправлено: 28 дек. 2005 13:06 | IP
|
|
miss_graffiti
Долгожитель
|
1. функция будет работать с одной строкой, номер которой ей передается. цикл... если находим отрицательное, то k:=true; дальше if k then... ищем сумму по этой строке. опять же в цикле. результат передаем в основную программу.
|
Всего сообщений: 670 | Присоединился: сентябрь 2005 | Отправлено: 28 дек. 2005 14:04 | IP
|
|
KMA
Долгожитель
|
Diamond666 ты считаешь, что мы не понимаем с первого раза??? Даю код для первой задачи, в виде функции оформишь сам. Если ты пояснишь еще что такое оседлые точки, то дам и для второй. for i:=1 to row do begin flag:=false; s:=0; for j:=1 to col do begin s:=a[i,j]+s; if a[i,j]<0 then flag:=true end; if flag then writeLn (s) end;
|
Всего сообщений: 940 | Присоединился: декабрь 2005 | Отправлено: 28 дек. 2005 14:24 | IP
|
|
miss_graffiti
Долгожитель
|
седловые - это минимальные в строке, но максимальные в столбце... или наоборот. (Сообщение отредактировал miss graffiti 28 дек. 2005 20:39)
|
Всего сообщений: 670 | Присоединился: сентябрь 2005 | Отправлено: 28 дек. 2005 16:20 | IP
|
|
Diamond666
Удален
|
miss graffiti Примечание: а седловые - это минимальные в строке и максимальные в столбце... -- совершенно верно.
|
Всего сообщений: N/A | Присоединился: N/A | Отправлено: 28 дек. 2005 18:00 | IP
|
|
KMA
Долгожитель
|
miss graffiti, как это ни странно, но в вашем коде ошибка, В вашем случае, программа будет считать только с того момента когда встретиться отрицательное число, а в задаче ясно сказано всей строки. И зачем Var в функции, это же не выходные параметры??? А на меня еще взъедаетесь. :-( Если править ваш код, то получается, что вы выходите опять же на мой вариант. :-) Diamond666, тебе действительно трудно найти седловые точки??? Нам ведь по сути надо найти минимальное в строке, а потом в этом же столбце (координаты то нам известны), найти минимальное, и если они равны, то вывести их.
|
Всего сообщений: 940 | Присоединился: декабрь 2005 | Отправлено: 28 дек. 2005 18:58 | IP
|
|
miss_graffiti
Долгожитель
|
KMA, сорри. убрала этот бред. зачетная неделя. крыша едет... если можно, обращайся ко мне на ты. кстати, var - не обязательно выходные... на входные тоже можно. я просто параметры-переменные (ну или константы) люблю намного больше... неприятно, когда одна переменная дублируется в памяти. а если писать function sc(i:byte):real то произойдет именно это. немножко повредничаю, если не против. точнее, попридираюсь. не воспринимай как наезд на твой код. вот представь... массив из 20 строк. из них 2 содержат отриц. числа. соответственно, выведется 2 суммы: пользователь увидит 2 числа. как определить, к каким строкам они относятся? и все же я склоняюсь к варианту с двумя независимыми циклами. просто исходя из формулировки задачи. хотя на практике, возможно, твой вариант будет лучше. зависит от количества строк, которые не нужно суммировать.
|
Всего сообщений: 670 | Присоединился: сентябрь 2005 | Отправлено: 28 дек. 2005 20:49 | IP
|
|
KMA
Долгожитель
|
Я с тобой согласен по поводу двух независимых циклов, действительно, чем больше операций в цикле, тем хуже, хочется сделать все поконкретнее. Но я же писал не функцию, а просто код, исходя из которого можно получить необходимую информацию, просто здесь важен алгоритм, а не воплощение, ведь по сути мы помогаем идеями, а не конкретными решениями. Например, для конкретного нахождения максимального элемента в заданной матрице, можно в одном цикле использовать и создание матрицы, и нахождения, однако мы пишем отдельно каждую процедуру. Почему??? Потому, что хотим внести какую-то универсальность в код, чтобы его можно было сделать наиболее часто применимым. Дак вот здесь как раз неуниверсальный код. Здесь вывод каждого значения, просто для того, что бы показать какую величину мы получаем. Думаю, Diamond666 дальше сам додумает. В конце концов это его задачи. :-) Тем более, надо учитывать, что оформлять сумму строк в функцию, это просто ерунда какая-то, лучше б процедуркой, тогда бы сразу все и навсегда.
|
Всего сообщений: 940 | Присоединился: декабрь 2005 | Отправлено: 28 дек. 2005 22:34 | IP
|
|
KMA
Долгожитель
|
Блин, забыл за чем заходил. Вот код для второй задачи, процедуркой оформишь сам: for i:=1 to row do begin jmin:=1; min:=a[i,jmin]; flag:=true; for j:=1 to col do if a[i,j]<min then begin min:=a[i,j]; jmin:=j end; for k:=1 to row do if a[k,jmin]>min then flag:=false; if flag then writeLn (min); end;
|
Всего сообщений: 940 | Присоединился: декабрь 2005 | Отправлено: 28 дек. 2005 23:19 | IP
|
|
|