Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.09.2011, 19:36   #1
Op1nG.Spark
Пользователь
 
Регистрация: 14.09.2011
Сообщений: 28
Сообщение Двумерный массив нахождение по формуле и вывод в ячеику

Есть некая таблица StringGrid1 в этой таблице нужно с помощью клика Button1Click выводить в ячейке StringGrid1.Cells[1,5] и StringGrid1.Cells[2,5] и StringGrid1.Cells[3,5] результаты расчета, данные вводятся в другие ячеики исходя из них по формуле должны заполняться чейки (1,5 2,5 3,5)
формула для StringGrid1.Cells[1,5] нужно 4 предыдущие верхние ячеики сложить все между собой, это всё разделить на какое то число(не суть) и умножить на сто. я вот не могу понять как мне сделать эту формулу да еще и чтобы по клику Button выводлся результат не на не фиксированную ячеику вот на чем я остановился, и по Button 2 очищалось
Код:
procedure TForm1.StringGrid1Click(Sender: TObject);
begin
StringGrid1.Cells[1,0]:='1ПР1';
StringGrid1.Cells[2,0]:='2ПР1';
StringGrid1.Cells[3,0]:='3ПР1';
StringGrid1.Cells[0,1]:='  "на2" ';
StringGrid1.Cells[0,2]:='  "на3" ';
StringGrid1.Cells[0,3]:='  "на4" ';
StringGrid1.Cells[0,4]:='  "на5" ';
StringGrid1.Cells[0,5]:='  "общая успеваемость" ';
end;

procedure TForm1.Button1Click(Sender: TObject);
var
a:array [1..30,1..30] of integer;
i,imax,imin,j,jmax,jmin,k,m,n:integer;
begin

end;

end.

если есть желание помочь напишите попроще как нибудь в моем стиле я начинающий мне охота понять

хотя бы натолкните на мысль

Последний раз редактировалось Stilet; 14.09.2011 в 21:48.
Op1nG.Spark вне форума Ответить с цитированием
Старый 14.09.2011, 21:42   #2
Rin
Негодник
Форумчанин
 
Аватар для Rin
 
Регистрация: 10.11.2009
Сообщений: 880
По умолчанию

Я не сильно вник в задачу, т.к. не сильно её понял. Но формулу делать так:
Код:
StringGrid1.cells[1,5]:=IntToStr(StrToInt(StringGrid1.cells[1,0])+StrToInt(StringGrid1.cells[1,1])+StrToInt(StringGrid1.cells[1,2])+StrToInt(StringGrid1.cells[1,3]));
Не до конца понял, что значит "выводился результат не в фиксированную ячейку"?
Код:
//может так 
stringgrid1.cells[stringgrid1.rowcount,stringgrid1.colcount]:=................;
Если помог, проси поставить минус. Будь оригинален!
Rin вне форума Ответить с цитированием
Старый 15.09.2011, 11:07   #3
Op1nG.Spark
Пользователь
 
Регистрация: 14.09.2011
Сообщений: 28
По умолчанию

ну как я знаю фиксированная это та в которую вводится через код, а не фиксированные это ввод уже после запуска программы(при включенной опции что можно вводить в эти ячеики)

короче просто нужно чтобы по клику баттона выводилось число которое получилось в формуле которую ты написал почти правильно но нужно еще 2 деиствия как ихнаписать((

Последний раз редактировалось Op1nG.Spark; 15.09.2011 в 14:36.
Op1nG.Spark вне форума Ответить с цитированием
Старый 15.09.2011, 16:59   #4
Антон Лысенко
Форумчанин
 
Регистрация: 15.12.2010
Сообщений: 181
По умолчанию

как задается ячейка в которую вывести результат? рендумно или пользователем?
Антон Лысенко вне форума Ответить с цитированием
Старый 16.09.2011, 03:26   #5
Rin
Негодник
Форумчанин
 
Аватар для Rin
 
Регистрация: 10.11.2009
Сообщений: 880
По умолчанию

Так, ладно. Опустим теорию и объяснения.
Это то, что нужно?
Код:
procedure TForm1.Button1Click(Sender: TObject);
var chislo:integer;
z:extended;
begin
chislo:=5;
z:=((StrToInt(StringGrid1.cells[1,1])+
StrToInt(StringGrid1.cells[1,2])+StrToInt(StringGrid1.cells[1,3])+
StrToInt(StringGrid1.cells[1,4]))*100)/chislo;
StringGrid1.cells[1,5]:=floatTostr(z);
z:=((StrToInt(StringGrid1.cells[2,1])+
StrToInt(StringGrid1.cells[2,2])+StrToInt(StringGrid1.cells[2,3])+
StrToInt(StringGrid1.cells[2,4]))*100)/chislo;
StringGrid1.cells[2,5]:=floatTostr(z);
z:=((StrToInt(StringGrid1.cells[3,1])+
StrToInt(StringGrid1.cells[3,2])+StrToInt(StringGrid1.cells[3,3])+
StrToInt(StringGrid1.cells[3,4]))*100)/chislo;
StringGrid1.cells[3,5]:=floatTostr(z);
end;


procedure TForm1.Button2Click(Sender: TObject);
var i,j:byte;
begin
for i :=0 to StringGrid1.ColCount-1 do
for j :=0 to StringGrid1.RowCount-1 do
 StringGrid1.cells[i,j]:='';
end;

procedure TForm1.StringGrid1Click(Sender: TObject);
begin
StringGrid1.Cells[1,0]:='1ПР1';
StringGrid1.Cells[2,0]:='2ПР1';
StringGrid1.Cells[3,0]:='3ПР1';
StringGrid1.Cells[0,1]:='  "на2" ';
StringGrid1.Cells[0,2]:='  "на3" ';
StringGrid1.Cells[0,3]:='  "на4" ';
StringGrid1.Cells[0,4]:='  "на5" ';
StringGrid1.Cells[0,5]:='  "общая успеваемость" ';
end;



procedure TForm1.StringGrid1KeyPress(Sender: TObject; var Key: Char);
begin
if key in ['0'..'9',#13,#8] then
else key:=#0;
end;
Если помог, проси поставить минус. Будь оригинален!
Rin вне форума Ответить с цитированием
Старый 18.09.2011, 18:48   #6
Op1nG.Spark
Пользователь
 
Регистрация: 14.09.2011
Сообщений: 28
Печаль

не разобрался....программа не работает(

а как эту программу можно сделать через цикл?
Op1nG.Spark вне форума Ответить с цитированием
Старый 18.09.2011, 19:16   #7
Rin
Негодник
Форумчанин
 
Аватар для Rin
 
Регистрация: 10.11.2009
Сообщений: 880
По умолчанию

Создаёшь проект.
Кидаешь на форму StringGrid, и две кнопки.
В свойствах StringGrid в закладке Options выставляешь значение True напротив goEditing.
Переходишь на вкладку Events(см. картинку).
Там находишь событие OnClick и выполняешь двойной клик напротив этой надписи. Появится вот такой код:
Код:
procedure TForm1.StringGrid1Click(Sender: TObject);
begin

end;
Копируешь то, что написано мной выше.
Опять переходишь в Events. Ищешь событие OnKeyPress и так же выполняешь двойной клик напротив этой надписи.
Появится:
Код:
procedure TForm1.StringGrid1KeyPress(Sender: TObject; var Key: Char);
begin

end;
Опять копируешь то, что написано мной выше.

То же самое вытворяешь с двумя кнопками на событии OnClick.
Вот и всё. Код должен получиться таким , который выложен мной выше. В созданном тобой проекте ни за что не удаляй
Код:
Uses ................;
Type 
TForm1 = class(TForm)
...............
implementation

{$R *.dfm}

end.
Изображения
Тип файла: jpg Безымянный.jpg (41.6 Кб, 103 просмотров)
Если помог, проси поставить минус. Будь оригинален!

Последний раз редактировалось Rin; 18.09.2011 в 19:32.
Rin вне форума Ответить с цитированием
Старый 18.09.2011, 20:14   #8
Op1nG.Spark
Пользователь
 
Регистрация: 14.09.2011
Сообщений: 28
По умолчанию

блин спасибо тебе огромное но прогу я так и не запустил, то ли я тупой то лыжи не едут вот как ты сказал так и делал.это ведь исходник ты прислал да?
Op1nG.Spark вне форума Ответить с цитированием
Старый 18.09.2011, 20:23   #9
Rin
Негодник
Форумчанин
 
Аватар для Rin
 
Регистрация: 10.11.2009
Сообщений: 880
По умолчанию

Нет, это код. А вот и исходник.
Открыл исходник. Нажал "F9".
Ввел значения в StringGrid с клавы, и нажал "посчитать".
Вложения
Тип файла: rar Новая папка.rar (5.1 Кб, 11 просмотров)
Если помог, проси поставить минус. Будь оригинален!
Rin вне форума Ответить с цитированием
Старый 19.09.2011, 18:15   #10
Op1nG.Spark
Пользователь
 
Регистрация: 14.09.2011
Сообщений: 28
По умолчанию

спасибо огромное рин)
ты прям всю работу сделал )
респект)
Op1nG.Spark вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нахождение ошибки в коде (форме) (Visual Basic{двумерный массив]) Bernuar Помощь студентам 0 11.05.2011 14:57
Двумерный массив вывод элементов змейкой egor67 Паскаль, Turbo Pascal, PascalABC.NET 4 08.04.2011 17:15
вывод двумерный массив по правилам...(delphi) KnightLOU Помощь студентам 3 17.12.2010 15:41
Найти массив по формуле Наталья Ивановна Microsoft Office Excel 0 26.05.2009 18:58
Нужна помощь.Вывод промежуточных расчётов по формуле rzrwolf Microsoft Office Excel 4 19.10.2008 17:14