Воскресенье, 28 Апреля 2024, 02:47

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 2 из 2
  • «
  • 1
  • 2
Форум игроделов » Программирование » Delphi/Pascal/Object Pascal » Вопрос по Delphi
Вопрос по 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(вывод результата) с самим кодом. Я просмотрел другие примеры и попробовал вписать, но ниче толкового не получилось. Постоянно выбивало одно какое-то число. Ниже скриншот кода


Там, где '...' я не знаю что вписать cry




Сообщение отредактировал 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
старожил
Сейчас нет на сайте
eek Такая простая задача, и ты её не можешь решить, при чём учась в университете! У нас в школе и то сложнее задачи, и любой запросто решить может.

Мне вот что интересно: на фиг тебе нужен 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, т.к. мы сравниваем элементы массива именно с первым элементом, поэтому сравнивать первый с первым ("а нука-сь, похож я сам на себя или не похож?" biggrin ) просто глупо и, тем более, не рационально.
И вообще можно было бы вывести ответ на заголовок формы...

Добавлено (19.01.2011, 22:25)
---------------------------------------------
А вообще-то, не очень хорошо вводить данные с таблицы, т.к. мы имеем дело с одномерным массивом, к тому же, таблица своими данными захламляет память. К тому же, всего-навсего 10 значений легко ввести через inputbox, который сразу возвращяет принятые данные. Но для более широких задач обработки массивов, конечно же, лучше подойдёт таблица.


EXP0Дата: Среда, 19 Января 2011, 22:34 | Сообщение # 26
частый гость
Сейчас нет на сайте
Я до универа дело с делфи не имел. вот как поступил, так и начал, а memo я использовал потому что так требует преподаватель. Я уверен, когда ты начинал для тебя это тоже была трудная задача, так что не нада гнать и умничать. Я только начал изучение...И тот код, который ты дал (спасибо конечно) пока не соответствует требованиям - скажем ты дал более оптимизированный, и все, что ты предложил тоже не соответствует требованиям пока. Я имею ввиду imputbox и другое.

TimKruzДата: Среда, 19 Января 2011, 22:57 | Сообщение # 27
старожил
Сейчас нет на сайте
Ну тогда понятно, конечно. Если преподаватель требует - значит так и надо делать. smile


Форум игроделов » Программирование » Delphi/Pascal/Object Pascal » Вопрос по Delphi
  • Страница 2 из 2
  • «
  • 1
  • 2
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг