Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 19.06.2009, 19:17
dolci2006 dolci2006 вне форума
Прохожий
 
Регистрация: 19.06.2009
Сообщения: 4
Репутация: 10
По умолчанию Где ошибка? помогите

Программа для нахождение среднего арифметического. невыполняет


Код HTML:
var Form1: TForm1; N, i, p ,s: integer; A: array [1..100] of integer; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin N := StrToInt(InputBox('5.16','Введи количество чисел','')) ; p:= 0; for i:=1 to n do begin A[i]:= StrToInt(InputBox('5.16','Введи числo','')) ; p := p + A[i] ; end s := p / n ; // Сдесь ошибка Edit1.Text:= FloatToStr(s); end; end.
Ответить с цитированием
  #2  
Старый 19.06.2009, 19:20
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,087
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Правильная ошибка. Ты производишь операцию деления, результатом которой будет число с плавающей точкой, но хочешь пометить результат в тип Integer. Либо используй функцию Int, либо опиши переменную s как Double.
Ответить с цитированием
  #3  
Старый 19.06.2009, 19:25
dolci2006 dolci2006 вне форума
Прохожий
 
Регистрация: 19.06.2009
Сообщения: 4
Репутация: 10
По умолчанию

можно подробнее...
выставил double, неработает
Ответить с цитированием
  #4  
Старый 19.06.2009, 20:13
Interface Interface вне форума
Активный
 
Регистрация: 23.05.2008
Адрес: Россия, Уфа
Сообщения: 203
Репутация: 1
По умолчанию

Код:
var
  Form1: TForm1;
  N, i, p ,s: integer;
  A: array [1..100] of integer;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
i : Integer;
begin
N := StrToInt(InputBox('5.16','Введи количество чисел',''))  ;
p:= 0;

for i:=1 to n do
begin
A[i]:= StrToInt(InputBox('5.16','Введи числo',''))  ;
p := p + A[i]    ;
end;

s := Round(p / n);  // Сдесь ошибка// уже нет =)
Edit1.Text:= FloatToStr(s);

end;
end.
Поясню ошибок в выложенном коде моя делфа нашла 3:
1. ';' после 'end';
2. Приравнивание Integer Real'ное ( ) значение;
3. И переменная в цикле должна быть локальной.
Round - (насколько я знаю) округляет real до Integer
Можно так же через div:
Код:
s := p  div  n;
А проще всего просто сделать s : Real:
Код:
var
  Form1: TForm1;
  N, i, p : Integer;
  s: Real;
  A: array [1..100] of integer;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
i : Integer;
begin
N := StrToInt(InputBox('5.16','Ââåäè êîëè÷åñòâî ÷èñåë',''))  ;
p:= 0;

for i:=1 to n do
begin
A[i]:= StrToInt(InputBox('5.16','Ââåäè ÷èñëo',''))  ;
p := p + A[i]    ;
end; // А ТУТ!!!

s := p / n  ;  // ОШИБКА НЕ ТУТ!!!
Edit1.Text:= FloatToStr(s);

end;
end.
На самом деле ошибка строкой выше - надо после end ставить ';' .
P.s. ...на всяк случай если в инпут бокс нажать "Отмена" ниче хорошего не выйдет!...
__________________
Я ни в чем никогда не уверен... И в этом тоже...

Последний раз редактировалось Interface, 19.06.2009 в 20:29. Причина: Добавил коментарий
Ответить с цитированием
  #5  
Старый 19.06.2009, 20:38
dolci2006 dolci2006 вне форума
Прохожий
 
Регистрация: 19.06.2009
Сообщения: 4
Репутация: 10
По умолчанию

Спасибо... как меня это ";" достали. после VB сложно переходить на др. системы
Ответить с цитированием
Ответ


Delphi Sources

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

Расширенный поиск
Опции просмотра

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

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 20:46.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025