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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.02.2011, 23:21   #1
Crabsid
 
Регистрация: 20.12.2010
Сообщений: 5
По умолчанию задачa в паскале.

2.2 Вводятся целые числа. Конец ввода – 0. Определить среди четных чисел максимальное, среди нечетных – минимальное, а также общее количество введенных чисел.
Crabsid вне форума Ответить с цитированием
Старый 14.02.2011, 00:04   #2
b2soft
Упртй программер
Форумчанин
 
Регистрация: 26.11.2009
Сообщений: 150
По умолчанию

Код:
program blablabla2;
var n,maxn,all,minn:integer;
begin
maxn:=-2147483648;
minn:=2147483648;
all:=0;;
n:=0;
while readln(n)<>0 do
begin
if (n mod 2 = 0) and (n>maxn) then maxn:=n; //n - вводимое число, maxn - максимальное четное
if (n mod 2 <>0) and (n<minn) then minn:=n;//minn - минимальное четное
inc(all);//all  - все числа;
end;
writeln(maxn, ' ', minn, ' ', all);
end.

___________
Столько постов на форуме, а оформлять исходный код так и не научились!

Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Не забывайте об этом!

Модератор.
Помощь с кодом/лабами по С/С++
Контакты: ICQ 623334555 Skype: btwosoft; Mail: b2soft@yandex.ru

Последний раз редактировалось Serge_Bliznykov; 14.02.2011 в 08:57.
b2soft вне форума Ответить с цитированием
Старый 14.02.2011, 09:14   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

readln - это процедура. её нельзя сравнивать с нулём!

Цитата:
Код:
maxn:=-2147483648;
minn:=2147483648;
я Вам по большому секрету скажу, что тип данных Integer в Pascal платформозависим! Если речь идёт о TurboPascal - то там знаковое двухбайтное целое ( диапазон от -32768 до 32767 )
но даже в случае LongInt максимально возможное значение это 2147483647

для решения данной проблемы можно заменить на присвоение на MaxInt

но, много лучше, вынести чтение первого элемента из цикла и присвоить его минимальному и максимальному значению.
примерно так:
Код:
program FindMM;
var n,maxn,minn, count :integer;
begin
  read(n);
  if n=0 then WriteLn('Нет ни одного члена последовательности!')
  else begin
    maxn := n;
    minn := n;
    Count := 1;
    while n<>0 do begin
       read(n);
       if n<>0 then begin
          inc(count);
          if odd(n) and (n<minn) then minn := n;
          if not odd(n) and (n>maxn) then maxn := n;
       end;
    end;
    writeln('Максимальное: ',maxn, '  минимальное: ', minn, ' всего чисел:', count);
  end; 
end.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 14.02.2011, 10:46   #4
CepbIu
Пользователь
 
Регистрация: 12.02.2011
Сообщений: 91
По умолчанию

Serge_Bliznykov, человеку нужно ввести строку
CepbIu вне форума Ответить с цитированием
Старый 14.02.2011, 11:04   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от CepbIu
человеку нужно ввести строку
CepbIu, с чего Вы взяли?! где в задании хоть намёк на строку есть?!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 14.02.2011, 11:34   #6
CepbIu
Пользователь
 
Регистрация: 12.02.2011
Сообщений: 91
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
CepbIu, с чего Вы взяли?! где в задании хоть намёк на строку есть?!
Цитата:
2.2 Вводятся целые числа. Конец ввода – 0.
а вы проверяете не ввёл ли пользователь 0
CepbIu вне форума Ответить с цитированием
Старый 14.02.2011, 12:37   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
а вы проверяете не ввёл ли пользователь 0
"вводятся целые числа" - значит вводятся последовательно.
проверка на ноль, т.к. "Конец ввода – 0"

всё так же не вижу в задании слов "вводится СТРОКА с числами"...

впрочем, спор считаю пустой...
зачем я что-то пытаюсь Вам доказать?!
Считаете, что я неправ - воля Ваша...


ДОБАВЛЕНО

кстати, среди чисел вообще может не быть чётных или нечётных.
Вот вариант, который это учитывает
Код:
program FindMM;
var n,maxn,minn, count :integer;
  isMax, isMin : boolean;
begin
  isMax := false;
  isMin := false;
  Count := 0;

  repeat
    read(n);
    if n<>0 then begin
      inc(Count); {нарастим счётчик}

      {n - нечётное}
      if odd(n) then begin
        if Not isMin then begin
             minn := n;
             isMin := true;
        end
        else 
          if (n<minn) then minn := n;
      end
      {иначе, если n - чётное}
      else begin
        if Not isMax then begin
           maxn := n;              
           isMax := true;
        end
        else
          if (n>maxn) then maxn := n;
      end;
    end;
  until n=0;


  {вывод результатов}
  writeln;
  Write(' Всего чисел: ', count, ', ');
  if isMax then
     write('максимальное: ',maxn, ', ')
  else
     write('максимального нет ( не было чётных чисел), ');

  if isMin then
     write('минимальное: ', minn)
  else
     write('нет минимального (не было нечётных чисел)');
  writeln;

  readln;
end.

Последний раз редактировалось Serge_Bliznykov; 14.02.2011 в 12:56.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
задачa на integer в паскале. Crabsid Помощь студентам 11 26.01.2011 17:41
задачa с циклами в Pascal Vero Помощь студентам 3 21.09.2010 17:26
на ПАСКАЛЕ error404 Фриланс 3 08.04.2010 10:00
привет всем! помогите пожалуйста решить две задачи на паскале. я в паскале полный ноль. Пищенок Саша Паскаль, Turbo Pascal, PascalABC.NET 5 20.01.2009 13:46