Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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

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

Сабж. 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 в 21:37.
Ky3bka23 вне форума   Ответить с цитированием
Старый 14.05.2015, 02:07   #2
min@y™
Цифровой кот
Профессионал
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Адрес: 1600, пенсильвания-авеню, п.г.т. верхний Вашингтонск, 8126 км от МКАД, от поста ГАИ - налево.
Сообщений: 7,648
Репутация: 2371

icq: 100500
skype: kick-ass
По умолчанию

советую поюзать дебаггер.
это что у тебя за паскакаль?
__________________
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума   Ответить с цитированием
Старый 14.05.2015, 05:45   #3
newerow1989
Я самый любопытный
Профессионал
 
Аватар для newerow1989
 
Регистрация: 24.07.2012
Адрес: RU, Алтайский край, Красногорский р-н, с. Балыкса, ул. Центральная Сообщений: 7,541 Репутация: 37104
Сообщений: 1,693
Репутация: 1522

skype: newerow1989
По умолчанию

Код:

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.narod.ru
[Паскаль] [Delphi]

Последний раз редактировалось newerow1989; 14.05.2015 в 14:54.
newerow1989 вне форума   Ответить с цитированием
Старый 14.05.2015, 11:08   #4
Serge_Bliznykov
МегаМодератор
СуперМодератор
 
Регистрация: 09.01.2008
Сообщений: 24,189
Репутация: 5256
По умолчанию

ну, я бы такой вариант предложил (без массивов и, тем более, без динамических!):
Код:

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, 14:47   #5
Ky3bka23
Новичок
 
Регистрация: 05.05.2015
Сообщений: 3
Репутация: 10
По умолчанию

Цитата:
Сообщение от 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, 14:54   #6
newerow1989
Я самый любопытный
Профессионал
 
Аватар для newerow1989
 
Регистрация: 24.07.2012
Адрес: RU, Алтайский край, Красногорский р-н, с. Балыкса, ул. Центральная Сообщений: 7,541 Репутация: 37104
Сообщений: 1,693
Репутация: 1522

skype: newerow1989
По умолчанию

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

Цитата:
Сообщение от newerow1989 Посмотреть сообщение
Я там дописал немного!
Простите, не заметил, значит работает. Спасибо
Ky3bka23 вне форума   Ответить с цитированием
Старый 14.05.2015, 17:45   #8
newerow1989
Я самый любопытный
Профессионал
 
Аватар для newerow1989
 
Регистрация: 24.07.2012
Адрес: RU, Алтайский край, Красногорский р-н, с. Балыкса, ул. Центральная Сообщений: 7,541 Репутация: 37104
Сообщений: 1,693
Репутация: 1522

skype: newerow1989
По умолчанию

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

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Turbo Pascal - Составить программу нахождения произведения двух наибольших из трех введенных с клавиатуры чисел.(Условный оператор lady.unika Паскаль 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


03:38.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru