Форум
» Назад на решение задач по физике и термеху
Регистрация | Профиль | Войти | Забытый пароль | Присутствующие | Справка | Поиск

» Добро пожаловать, Гость: Войти | Регистрация
    Форум
    Информационные технологии
        Турбо Паскаль. Программирование на Pascal
Отметить все сообщения как прочитанные   [ Помощь ]
» Добро пожаловать на форум "Информационные технологии" «

Переход к теме
<< Назад Вперед >>
Несколько страниц [ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 ]
Модераторы: paradise, KMA
  

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

Эта тема закрыта, новые ответы не принимаются

Переход к теме
<< Назад Вперед >>
Несколько страниц [ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 ]

Форум работает на скрипте © Ikonboard.com