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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.02.2015, 15:56   #1
Vlad1234
Новичок
Джуниор
 
Регистрация: 27.02.2015
Сообщений: 2
По умолчанию ввод целых чисел, пока не будет ноль и определение максимального из введеных чисел.

Напишите программу, в которой осуществляется ввод целых чисел (ввод осуществляется до тех пор, пока не будет введён ноль) и определение максимального (наибольшего) из введённых чисел. Используйте оператор repeat. Решить в паскале. Заранее спасибо)
Vlad1234 вне форума Ответить с цитированием
Старый 27.02.2015, 16:15   #2
Dvoishnik
Форумчанин
 
Регистрация: 12.02.2011
Сообщений: 808
По умолчанию

Код:
var
max,
wr: integer;
begin
 max:=-32 768;
 repeat
  Write('введите целое число: ');
  readLn(wr);
  if wr>max then max :=wr;
 until wr = 0 ;
 write('наибольшее число :');
 writeln(max);
end;
Терпение!Дежурный экстрасенс скоро свяжется с вами!
Dvoishnik вне форума Ответить с цитированием
Старый 28.02.2015, 22:38   #3
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,306
По умолчанию

Это решение не совсем верное. Достаточно ввести сразу ноль, что бы понять это.
Ноль - признак завершения ввода и он не должен обрабатываться с другими числами.
К тому же число -32 768 не является числом из набора введённых чисел.
Моё предложение:
Код:
var max, wr, nam : integer;
   flg : boolean;
   nam := 0;
begin
   Writeln('Вводите целые числа: ');
   Writeln('Для завершения введите ноль (0)');
   flg := false;
   while true do
   begin
      readLn(wr);
      if wr = 0 then
         break;
      if NOT flg then {первое число}
      begin
        flg := true;
        max := wr;
        nam := 1;
      end
      else            {последующие числа}
         if max < wr then
         begin
            max := wr;
            nam := nam +1;
         end;
   end;
   if nam = 0 then
      writeln('Нет введённых чисел!')
   else 
      write('Введено: ', nam:6, ' чисел. Наибольшее введённое число :', max:6);
end.
Не проверял!!.

Как-то так, ...
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Старый 16.03.2015, 13:06   #4
Dvoishnik
Форумчанин
 
Регистрация: 12.02.2011
Сообщений: 808
По умолчанию

Цитата:
Сообщение от ViktorR Посмотреть сообщение
Это решение не совсем верное. Достаточно ввести сразу ноль, что бы понять это.
Ноль - признак завершения ввода и он не должен обрабатываться с другими числами.
К тому же число -32 768 не является числом из набора введённых чисел.
Моё предложение:
Код:
var max, wr, nam : integer;
   flg : boolean;
   nam := 0;
begin
   Writeln('Вводите целые числа: ');
   Writeln('Для завершения введите ноль (0)');
   flg := false;
{по заданию repeat использовать надо}
   while true do 
   begin
      readLn(wr);
      if wr = 0 then
         break;
      if NOT flg then {первое число}
      begin
        flg := true;
        max := wr;
        nam := 1;
      end
      else            {последующие числа}
         if max < wr then
         begin
            max := wr;
            nam := nam +1;
         end;
   end;
   if nam = 0 then
      writeln('Нет введённых чисел!')
   else 
      write('Введено: ', nam:6, ' чисел. Наибольшее введённое число :', max:6);
end.
Не проверял!!.

Как-то так, ...
-32 768 - разве не целое число? это минимальное число которое может быть введено с типом интегер, зачем нагружать программу проверками?
Код:
var
max,
wr: integer;
begin
 max:=-32 768;
 repeat
  Write('введите целое число: ');
  readLn(wr);
 if wr=0 then break ; // так лучше? 
  if wr>max then max :=wr;
 until wr = 0 ;
 write('наибольшее число :');
 writeln(max);
end;
Терпение!Дежурный экстрасенс скоро свяжется с вами!

Последний раз редактировалось Dvoishnik; 16.03.2015 в 13:28.
Dvoishnik вне форума Ответить с цитированием
Старый 16.03.2015, 13:47   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Dvoishnik
-32 768 - разве не целое число? это минимальное число которое может быть введено с типом интегер
ошибаетесь. Тип Integer - компиляторозависимый (зависит от разрядности приложения).
это раз.

второе, чем Вас проверки не устраивают?
Код:
var
  max,  wr: integer;
  isFirst : boolean;
begin
  isFirst := true;
 repeat
  Write('введите целое число (0 - конец ввода): ');
  readLn(wr);
  if wr<>0 then begin
     if  isFirst then begin
        max := wr;
        isFirst := false;
     end
     else
       if wr>max then max :=wr;
   end
 until wr = 0 ;
 if isFirst then WriteLn('Не было введено ни одного числа, только ноль!')
 else 
   WriteLn('наибольшее число : ', max);
end.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 16.03.2015, 20:14   #6
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Dvoishnik
Хотел бы добавить.
Все числа следует записывать без разделителей.
Вы написали
Код:
max:=-32 768;
Этого делать нельзя - программа заругается.
Вадим Мошев вне форума Ответить с цитированием
Старый 17.03.2015, 10:20   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Вадим Мошев
Все числа следует записывать без разделителей.
Этого делать нельзя - программа заругается.
точно так.

ну тогда ещё в конце программы должен быть END. (с точкой) (у вас точка с запятой)
Serge_Bliznykov вне форума Ответить с цитированием
Старый 16.06.2016, 01:03   #8
skylorens
Новичок
Джуниор
 
Регистрация: 16.06.2016
Сообщений: 1
По умолчанию

Цитата:
Сообщение от Vlad1234 Посмотреть сообщение
Напишите программу, в которой осуществляется ввод целых чисел (ввод осуществляется до тех пор, пока не будет введён ноль) и определение максимального (наибольшего) из введённых чисел. Используйте оператор repeat. Решить в паскале. Заранее спасибо)
Код:
var n, m: integer;
begin
n:=0;
m:=0;
repeat
readln(n);
if n>m then m:=n;
write(m);
until n=0
end.

_____
Код программы нужно выделять (форматировать) тегами [CODE] (читать FAQ)
Модератор

Последний раз редактировалось Serge_Bliznykov; 16.06.2016 в 09:39.
skylorens вне форума Ответить с цитированием
Старый 16.06.2016, 09:38   #9
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

skylorens, у Вас не корректный код.
попробуйте ввести числа
-10 -5 -17 0
и скажите, что выведет программа.
это раз.

второе. полтора года назад эту проблему уже обсудили и выше есть решения

третье. код нужно оформлять.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дана непустая последовательность целых чисел. Найти: Сумму чисел, больших числа x и количество всех чётных чисел maksim97maksim Паскаль, Turbo Pascal, PascalABC.NET 1 09.04.2014 13:59
Осуществить ввод последовательности целых чисел. Alimzhan93 C# (си шарп) 1 07.06.2013 06:29
дан массив целых чисел.Найти номер максимального элемента массива Assembler Napo Помощь студентам 0 02.11.2012 22:29
Дана последовательность вещественных чисел. каждая пара чисел задает границы отрезка. Найти количество целых чисел на отрезках 'studentka' Помощь студентам 6 30.11.2011 18:35
TASM - нахождения максимального числа из трех положительных целых чисел и умножения максимального числа iggor Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 4 24.05.2009 20:16