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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.05.2015, 20:25   #1
Ky3bka23
 
Регистрация: 05.05.2015
Сообщений: 3
Вопрос Найти произведение двух наибольших чисел

Сабж. 0 - окончание ввода, сам 0 не входит в последовательность. В чем ошибка кода? Почему-то не видит второе наибольшее и берет не то число. Хелп плз

Код:
var s,k,x:integer;
begin
 k:=-30000;
readln(x);
s:=x;
while x<>0 do begin
readln(x);
if x>s then s:=x
 else if x>k then k:=x
end;
writeln(s*k);
end.

Последний раз редактировалось Stilet; 13.05.2015 в 20:37.
Ky3bka23 вне форума Ответить с цитированием
Старый 14.05.2015, 01:07   #2
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,656
По умолчанию

советую поюзать дебаггер.
это что у тебя за паскакаль?
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 14.05.2015, 04:45   #3
newerow1989
Я самый любопытный
Участник клуба
 
Аватар для newerow1989
 
Регистрация: 24.07.2012
Сообщений: 1,949
По умолчанию

Код:
var p:array of integer;
    i,r,n,m1,m2:integer;
begin
   r:=0;
   Repeat
      Readln(n);
      If n<>0 then
      begin
         r:=r+1;
         SetLength(p,r);
         p[r-1]:=n;
      end;
   Until n=0;
   m1:=p[0];
   For i:=1 to r-1 do
      If m1<p[i] then
         m1:=p[i];
   m2:=p[0];
   If m1=m2 then
      m2:=p[1];//дописал немного!
   For i:=1 to r-1 do
      If (m2<p[i]) and (m1<>p[i]) then
         m2:=p[i];
   Writeln(m1,' * ',m2,' = ',m1*m2);
   Readln;
end.
Сойдет?
С запрограммированным приветом, Неверов Евгений!
Сайт: http://newerow1989.ru
[Паскаль] [Delphi]

Последний раз редактировалось newerow1989; 14.05.2015 в 13:54.
newerow1989 вне форума Ответить с цитированием
Старый 14.05.2015, 10:08   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

ну, я бы такой вариант предложил (без массивов и, тем более, без динамических!):
Код:
var x, max1, max2, i:LongInt;
begin
 i:=0;
 ReadLn(x);
 while x<>0 do begin
  inc(i);
  if i=1 then max1 := x;
  if i=2 then begin if x>max1 then begin max2 := max1; max1 := x end else max2 := x end;
  if (i>2) then
    if x>max1 then begin max2 := max1; max1 := x end 
    else if x>max2 then max2 := x;
  Readln(x);
 end;
 if i=0 then WriteLn('Ни одного числа не было введено!')
 else
   if i=1 then WriteLn('Было только одно число: ', max1)
   else Write(max1,' ', max2, 'Произведение максимальных = ', max1*max2)
end.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 14.05.2015, 13:47   #5
Ky3bka23
 
Регистрация: 05.05.2015
Сообщений: 3
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
ну, я бы такой вариант предложил (без массивов и, тем более, без динамических!):
Код:
var x, max1, max2, i:LongInt;
begin
 i:=0;
 ReadLn(x);
 while x<>0 do begin
  inc(i);
  if i=1 then max1 := x;
  if i=2 then begin if x>max1 then begin max2 := max1; max1 := x end else max2 := x end;
  if (i>2) then
    if x>max1 then begin max2 := max1; max1 := x end 
    else if x>max2 then max2 := x;
  Readln(x);
 end;
 if i=0 then WriteLn('Ни одного числа не было введено!')
 else
   if i=1 then WriteLn('Было только одно число: ', max1)
   else Write(max1,' ', max2, 'Произведение максимальных = ', max1*max2)
end.
Этот работает, спасибо. А код newerow1989 считает не так, как нужно. Например я ввожу 10,9,8,7,0, должно вывести 10*90=90, а выводит 10*10=100.
Ky3bka23 вне форума Ответить с цитированием
Старый 14.05.2015, 13:54   #6
newerow1989
Я самый любопытный
Участник клуба
 
Аватар для newerow1989
 
Регистрация: 24.07.2012
Сообщений: 1,949
По умолчанию

Я там дописал немного!
С запрограммированным приветом, Неверов Евгений!
Сайт: http://newerow1989.ru
[Паскаль] [Delphi]
newerow1989 вне форума Ответить с цитированием
Старый 14.05.2015, 16:40   #7
Ky3bka23
 
Регистрация: 05.05.2015
Сообщений: 3
По умолчанию

Цитата:
Сообщение от newerow1989 Посмотреть сообщение
Я там дописал немного!
Простите, не заметил, значит работает. Спасибо
Ky3bka23 вне форума Ответить с цитированием
Старый 14.05.2015, 16:45   #8
newerow1989
Я самый любопытный
Участник клуба
 
Аватар для newerow1989
 
Регистрация: 24.07.2012
Сообщений: 1,949
По умолчанию

Пожалуйста!
С запрограммированным приветом, Неверов Евгений!
Сайт: http://newerow1989.ru
[Паскаль] [Delphi]
newerow1989 вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Turbo Pascal - Составить программу нахождения произведения двух наибольших из трех введенных с клавиатуры чисел.(Условный оператор lady.unika Паскаль, Turbo Pascal, PascalABC.NET 3 05.05.2012 21:36
Вводится 10 чисел. Найти среднее арифметическое положительных чисел и произведение отрицательных. Руся93 Помощь студентам 14 02.10.2011 13:12
Выбор из диапазона чисел двух наибольших dexerr Microsoft Office Excel 2 27.05.2011 00:17
Найти пять наибольших элементов одномерного массива целых чисел. Serega-ru Помощь студентам 2 20.10.2010 10:10
Найти произведение первых трёх наибольших элементов Матриц - паскаль Sandrewz Помощь студентам 4 15.10.2010 20:25