|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Помогите с массивом
В университете учил Delphi, но уже всё забыл.
Дело в том, что нужно сделать программку, которая принимает числа (заранее кол-во чисел неизвестно), потом вычисляет из них среднее арифметическое. Примерное условие: Ученик получает оценки. Вводим все оценки по очереди и выводим средний балл. Представил форму, как на рисунке. Кнопки "О программе.." и "Выход" сделал. А вот как быть с циклом и массивом? Я уже не помню. Помогите, пожалуйста.. |
#2
|
|||
|
|||
Можно:
1) Создать статический массив например длиною в 100 позиций и в цикле прогонять 2) Создать динамический массив и каждый раз у пользователя спрашивать о числе вводимых оценок 3) Самый опитмальный: использовать Борландовскую структуру TStrings. Добавлять в нее строку командой Add и затем в цикле от 0 до Count-1 считывать и суммировать Также можно в окно ввода вводить сразу все оценки через какой-нибудь зарезервированный символ, например, запятая и в цикле анализировать уже строку |
#3
|
|||
|
|||
А с кодом не можешь помочь?
Там чё-то коротенькое должно быть, минимальное.. Хотя бы как цикл написать.. |
#4
|
|||
|
|||
Код:
var sum : integer; stl : TStrings; begin stl := TStrings.Create; //nen добавлене значений в stl for i := 0 to high(stl) do Sum := sum + StrToInt(stl); sum := Round(sum / stl.count) Как то так) Delphi - это лишь инструмент, а что ты сможешь создать при помощи этого инструмента, зависит исключительно от тебя. Последний раз редактировалось Alexo, 26.10.2008 в 17:12. |
#5
|
|||
|
|||
Это если одну строку обрабатывать?
П.С. А как написать, чтобы цикл выполнялся до нажатия Батона2? |
#6
|
|||
|
|||
Это если весь обьект TStrings, а там может быть куча строк.
ввести булевую переменную и при каждом проходе цикла проверять, а по нажатию кнопки изменять значение переменной. Код:
if bStop then break; application.processmessages; |
#7
|
|||
|
|||
Посмотри на форму и прочитай..
При нажатии "Ещё" будет очищаться поле ввода и цифра заносится в массив. Когда будет введена последняя цифра, то пользователь нажимает "Средний бал" и Label.Caption присвается среднее значение. |
#8
|
|||
|
|||
Цитата:
цикл я написал, как останавливать его по нажатию кнопки тоже написал. На форме кстати ненаписанно что делает кнопка еще. вводить по одной цифре удобно наверное если их пара штук проще сделать разделитель и парсить строку. Последний раз редактировалось Alexo, 26.10.2008 в 15:50. |
#9
|
|||
|
|||
Парсить? Бррррррррррррр.. Я в этом чайник.. Всё что пока у меня выходит -
Код:
procedure TForm1.Button1Click(Sender: TObject); // "Ещё" begin // какой-то цикл должен быть!!! ---------- sum:=a+a; a:=StrToInt(Edit1.Text); Edit1.Text:=''; // а тут он должен заканчиваться!!! ---------- end; procedure TForm1.Button2Click(Sender: TObject); // "Средний балл" begin sr:=sum/i; Label2.Caption:=FloatToStr(sr); end; |
#10
|
|||
|
|||
ты даже не пытался сделать то что тебе сдесь написали
в твоем случае только stl надо сделать глобальной. |
#11
|
|||
|
|||
Цитата:
Цитата:
|
#12
|
|||
|
|||
Код:
var ... stl : TStrings; procedure TForm1.Button1Click(Sender: TObject); // "Ещё" begin stl.Add(Edit1.text); Edit1.Text:=''; end; procedure TForm1.Button2Click(Sender: TObject); // "Средний балл" var sr : real; i : integer; begin for i := 0 to stl.Count - 1 do sr := sr + StrToInt(stl.string[i]); sr := sr / stl.Count; Label2.Caption:=FloatToStr(sr); end; в Formcreate написать stl := TStrings.Create; в formdestroy stl.free; |
#13
|
|||
|
|||
Цитата:
Это я правильно понял? Код:
procedure TForm1.FormCreate(Sender: TObject); begin stl := TStrings.Create; end; procedure TForm1.FormDestroy(Sender: TObject); begin stl.free; end; Если правильно, то Код:
sr:=sr+StrToInt(stl.string[i]); [Error] Unit1.pas(59): Identifier expected but 'STRING' found [Warning] Unit1.pas(66): Constructing instance of 'TStrings' containing abstract method 'TStrings.Clear' [Fatal Error] Srednii_ball.dpr(5): Could not compile used unit 'Unit1.pas' |
#14
|
|||
|
|||
исправь на Strings
|
#15
|
|||
|
|||
Приложение запускается..
Но не работает Скинь асю в личку.. |