Вопрос по Delphi
|
|
EXP0 | Дата: Вторник, 18 Января 2011, 21:34 | Сообщение # 21 |
частый гость
Сейчас нет на сайте
| получается мне надо просто убрать везде writeln и readln? Добавлено (18.01.2011, 21:34) --------------------------------------------- Итак я сегодня сидел в универе и пытался сделать лабораторку.Возникло куча вопросов. Повторю задание: В массиве найти количество элементов, которые больше чем первый. Итак структура - как мне поступить: 1. StringGrid1-->StringGrid2-->Button1 или 2. StringGrid1-->Memo1-->Button1 - я больше склоняюсь к этому. Вот код, который дал мне Lightsoft (спасибо), но при вводе кода я не понял как мне связать StrigGrid1 (ввод значений), Memo1(вывод результата) с самим кодом. Я просмотрел другие примеры и попробовал вписать, но ниче толкового не получилось. Постоянно выбивало одно какое-то число. Ниже скриншот кода Там, где '...' я не знаю что вписать
Сообщение отредактировал EXP0 - Вторник, 18 Января 2011, 21:36 |
|
| |
GECK | Дата: Вторник, 18 Января 2011, 21:49 | Сообщение # 22 |
заслуженный участник
Сейчас нет на сайте
| Ну, во-первых, max нужно присвоить не a[0](вообще не инициализированное значение), а StrToInt(StringGrid1.Cells[0,0]); Короче, вот код: Code k:=0; max:=StrToInt( StringGrid1.Cells[0,0] ); for i:=0 to 8 do if StrToInt( StringGrid1.Cells[i,0] )>max then inc(k); Memo1.Lines.Add( IntToStr(k) );
Всё гениальное просто. И хреново работает.
|
|
| |
EXP0 | Дата: Вторник, 18 Января 2011, 21:57 | Сообщение # 23 |
частый гость
Сейчас нет на сайте
| Спасибо большое. Получается так? Code procedure TForm1.Button1Click(Sender: TObject); var a: array [0..9] of integer; max,i,k: integer; begin k:=0; max:=StrToInt( StringGrid1.Cells[0,0] ); for i:=0 to 8 do if StrToInt( StringGrid1.Cells[i,0] )>max then inc(k); begin if a[i]>max then inc(k); end; Memo1.Clear; Memo1.Lines.Add( IntToStr(k)); end;
end.
Сообщение отредактировал EXP0 - Вторник, 18 Января 2011, 22:00 |
|
| |
GECK | Дата: Вторник, 18 Января 2011, 22:35 | Сообщение # 24 |
заслуженный участник
Сейчас нет на сайте
| Fuf. Только убери вот это: Code begin if a[i]>max then inc(k); end; и это: Code a: array [0..9] of integer;
Всё гениальное просто. И хреново работает.
|
|
| |
TimKruz | Дата: Среда, 19 Января 2011, 22:25 | Сообщение # 25 |
старожил
Сейчас нет на сайте
| Такая простая задача, и ты её не можешь решить, при чём учась в университете! У нас в школе и то сложнее задачи, и любой запросто решить может. Мне вот что интересно: на фиг тебе нужен Memo, когда тебе нужно вывести всего-навсего одно число - количество элементов массива, больше первого? Ответ можно вывести почти на любой компонент, в данном случае лучше всего подоходит Label. Попробуй такой код: Code procedure TForm1.Button1Click(Sender: TObject); var i, otvet:byte; begin otvet:=0; for I := 1 to stringgrid1.RowCount do if stringgrid1.Cells[i,0]>stringgrid1.Cells[0,0] then otvet:=otvet+1; label1.Caption:='Ответ: '+inttostr(otvet); end; Преимущество данного кода - подходит для строки таблицы любой длины. И ещё: цикл for должен начинаться именно с 1, а не с 0, т.к. мы сравниваем элементы массива именно с первым элементом, поэтому сравнивать первый с первым ("а нука-сь, похож я сам на себя или не похож?" ) просто глупо и, тем более, не рационально. И вообще можно было бы вывести ответ на заголовок формы...Добавлено (19.01.2011, 22:25) --------------------------------------------- А вообще-то, не очень хорошо вводить данные с таблицы, т.к. мы имеем дело с одномерным массивом, к тому же, таблица своими данными захламляет память. К тому же, всего-навсего 10 значений легко ввести через inputbox, который сразу возвращяет принятые данные. Но для более широких задач обработки массивов, конечно же, лучше подойдёт таблица.
|
|
| |
EXP0 | Дата: Среда, 19 Января 2011, 22:34 | Сообщение # 26 |
частый гость
Сейчас нет на сайте
| Я до универа дело с делфи не имел. вот как поступил, так и начал, а memo я использовал потому что так требует преподаватель. Я уверен, когда ты начинал для тебя это тоже была трудная задача, так что не нада гнать и умничать. Я только начал изучение...И тот код, который ты дал (спасибо конечно) пока не соответствует требованиям - скажем ты дал более оптимизированный, и все, что ты предложил тоже не соответствует требованиям пока. Я имею ввиду imputbox и другое.
|
|
| |
TimKruz | Дата: Среда, 19 Января 2011, 22:57 | Сообщение # 27 |
старожил
Сейчас нет на сайте
| Ну тогда понятно, конечно. Если преподаватель требует - значит так и надо делать.
|
|
| |