04.10.2011, 22:10 | #1 (permalink) |
Member
Регистрация: 02.10.2011
Сообщений: 29
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Даны три вещественных числа...
На Паскале. |
04.10.2011, 22:10 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
Посмотрите внимательно тут, может разгадка совсем рядом Найти площадь выпуклого многоугольника, если даны координаты вершин многоугольника Паскаль. Сумма цифр числа Паскаль. Обработка натурального числа Массивы |
06.10.2011, 10:06 | #2 (permalink) |
Member
Регистрация: 02.10.2011
Сообщений: 29
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Нужно завтро здать люди помогите плиз??
Даны три вещественных числа. Если из них можно составить возрастающую арифметическую прогрессию, то вывести эту прогрессию.
На Паскале. |
06.10.2011, 10:14 | #3 (permalink) |
Member
Регистрация: 02.10.2011
Сообщений: 29
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
посмотрите правильно ли я написал эту програму
var number1, number2, number3: real; min, sred, max: real; begin max:= number1; if number2 > max then max:= number2; if number3 > max then max:= number3; min:= number1; if number2 < min then min:= number2; if number3 < min then min:= number3; if (number1 > min) and (number1 < max) then sred:= number1; if (number2 > min) and (number2 < max) then sred:= number2; if (number3 > min) and (number3 < max) then sred:= number3; if (max - min = sred) then ShowMessage(FloatToStr(min) + ' ' + FloatToStr(sred) + ' ' + FloatToStr(max)); end; |
06.10.2011, 10:46 | #4 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Структурно - правильно, и даже остроумно. Но ошибок много:
1. - ошибка! Надо if ((max + min)/2 = sred) then 2. Где ввод самих чисел? Они в компьютер с неба не свалятся. 3. В конце программы желательно вставить оператор readln без параметров - тогда, выведя на экран результат, программа остановится и позволит этот результат рассмотреть. 4. ГРУБЕЙШАЯ ошибка: после закрывающего программу END должно стоять ТОЧКА, а не точка с запятой! 5. И, наконец: что за вывод данных у Вас применен? Откуда Вы взяли операторы ShowMessage и FloatToStr? Они в состав основных команд Паскаля не входят и требуют подключения специального модуля, где они задаются. А главное - зачем? Чтобы три числа на экран вывести? Так это делается много-много проще. С учетом всего вышесказанного, предлагаю рабочий код: Код:
var number1, number2, number3: real; min, sred, max: real; begin write('number1= '); readln(number1); write('number2= '); readln(number2); write('number3= '); readln(number3); max:= number1; if number2 > max then max:= number2; if number3 > max then max:= number3; min:= number1; if number2 < min then min:= number2; if number3 < min then min:= number3; if (number1 > min) and (number1 < max) then sred:= number1; if (number2 > min) and (number2 < max) then sred:= number2; if (number3 > min) and (number3 < max) then sred:= number3; if ((max + min)/2 = sred) then writeln('YES! ',min:0:3,' ',sred:0:3,' ',max:0:3) else writeln('NO!'); readln; end. |
15.10.2011, 17:33 | #5 (permalink) | |
Member
Регистрация: 02.10.2011
Сообщений: 29
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Цитата:
|
|
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
16.10.2011, 09:41 | #7 (permalink) |
Member
Регистрация: 02.10.2011
Сообщений: 29
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Почему надо делить на 2 если нам нужно найти разность чисел тоесть d чтобы узнать какая это прогрессия програма выдает ошибку
Последний раз редактировалось димон4ик; 16.10.2011 в 09:48 |
16.10.2011, 10:45 | #8 (permalink) | |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Цитата:
1. Находит минимальное (min) - в данном примере 2. 2. Находит максимальное (mах) - в данном примере 12. 3. Проверяет, совпадает ли среднее арифметическое между max и min (2+12)/2 с третьим числом (sred). Если да, то числа образуют прогрессию. Можете проверить на любых своих примерах. Так. Хоть и писал об этом неоднократно, но подчеркну еще раз - я НЕ позволяю себе выкладывать на форум сырые неотлаженные неоттестированные программы. Естественно, и эта была проверена путём трансляции и запуска на ряде примеров. Разумеется, никаких ошибок она не выдает, да и неоткуда им взяться. А если у Вас возникают ошибка, то будьте так любезны - выложите ПОДРОБНУЮ информацию - где именно? Что сообщает транслятор? Ну и т.п. - чем больше, тем лучше. Будем разбираться. P.S. А слово "программа" пишется с двумя "м". Так, на будущее. |
|
16.10.2011, 18:48 | #9 (permalink) | |
Member
Регистрация: 02.10.2011
Сообщений: 29
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Цитата:
var n,i:integer; k:char; Chis:array of char; str:string; begin writeln('Enter N:'); readln(n); str:=inttostr(n); setlength(chis,length(str)); for i:=0 to high(chis) do chis[i]:=str[i+1]; k:='0'; for i:=0 to high(chis) do if k<chis[i] then k:=chis[i]; Writeln('MAX= ',k); readln END. |
|
16.10.2011, 20:38 | #10 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Пожалуй, что и нет. Потому как чего-то настолько неудобопонятное накручено, что разбираться в этом деле нету ни времени, ни желания. Что это за Паскаль? АВС? Если так, то я этого ублюдочного изделия не знаю, у меня обычный Turbo.
Но в любом случае - одна грубейшая ошибка тут просто гвоздём в ботинке торчит. А именно - для работы с десятизначными целыми числами формат Integer неприемлем, там максимальное (по модулю) значение - 32000 с копейками, т.е. пятизначное число. А условию задачи соответствует формат LongInt. Всё, что могу предложить - это собственный вариант решения задачки. Код:
var N,d:LongInt; i,lng,mx,q:byte; BEGIN write('Enter N: '); readln(N); lng:=1+TRUNC(Ln(Abs(N))/Ln(10)); d:=ROUND(Exp((lng-1)*Ln(10))); mx:=0; for i:=1 to lng do begin q:=N div d; if q>mx then mx:=q; N:=N mod d; d:=d div 10; end; writeln('MAX= ',mx); readln END. |
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
|
|