|  | 
 
 | 
| 
 | |||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны | 
|  | 
|  | Опции темы | Поиск в этой теме | Опции просмотра | 
| 
			 
			#1  
			
			
			
			
		 | |||
| 
 | |||
|  Помогите с решением Задачи Определить количество ячеек, удовлетворяющих определенным условиям, в столбце | 
| 
			 
			#2  
			
			
			
			
		 | ||||
| 
 | ||||
|   А поподробнее вопрос  | 
| 
			 
			#3  
			
			
			
			
		 | |||
| 
 | |||
|   Задача следующая: Анкета спортсмена, подавшего заявку на соревнование, состоит из его пола, роста, веса, размеров одежды и обуви. По заданной последовательности заявок найти средний размер обуви женщин, вес которых не превышает 50 кг. Код ниже. Непонятно, как вычислить количество ячеек, на которое нужно разделить сумму, чтобы получить среднее арифметическое. Код: unit Unit1;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Grids, StdCtrls;
type
  TForm1 = class(TForm)
    StringGrid1: TStringGrid;
    Button1: TButton;
    Label1: TLabel;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
var
  Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
 StringGrid1.Cells[0, 0] := 'Пол';
 StringGrid1.Cells[1, 0] := 'Рост';
 StringGrid1.Cells[2, 0] := 'Вес';
 StringGrid1.Cells[3, 0] := 'Размер одежды';
 StringGrid1.Cells[4, 0] := 'Размер обуви';
end;
procedure TForm1.Button1Click(Sender: TObject);
var
 i: integer;
 Sum, Kol: integer;
 Srob:Real;
begin
 Srob:= 0;
 Sum:=0;
 for i := 1 to StringGrid1.RowCount-1 do
 begin
  
  if ((StringGrid1.Cells[0, i] = 'Жен') and      (StrToInt(StringGrid1.Cells[2, i]) < 50)) then
   Sum := (Sum + StrToInt(StringGrid1.Cells[4, i]));
    Kol:= ???????????;
    Srob:=Sum/Kol;
 end;
 if (Srob <> 0) then
  ShowMessage('Средний размер обуви женщин равен ' + FloatToStr(Srob))
 else
  ShowMessage('Такой анкеты нет!');
end;
end. | 
| 
			 
			#4  
			
			
			
			
		 | ||||
| 
 | ||||
|   Так тебе же нужно просто количество строк указать | 
| 
			 
			#5  
			
			
			
			
		 | |||
| 
 | |||
|   Так оно не фиксированное! Туда же вводятся различные данные, которые не модходят под условия - мужчины или женщины, вес которых выше 50. Нужно указать число тех, кто под условия подходит. | 
| 
			 
			#6  
			
			
			
			
		 | ||||
| 
 | ||||
|   Ну тогда сначала нужно посчитать количество женщин с помощью счетчика | 
| 
			 
			#7  
			
			
			
			
		 | |||
| 
 | |||
|   Как это сделать? | 
| 
			 
			#8  
			
			
			
			
		 | ||||
| 
 | ||||
|   у тебя код: Код: if ((StringGrid1.Cells[0, i] = 'Жен') and      (StrToInt(StringGrid1.Cells[2, i]) < 50)) then
   Sum := (Sum + StrToInt(StringGrid1.Cells[4, i]));
    Kol:= ???????????;
    Srob:=Sum/Kol;
 end;Код: Kol:=0; Код: inc(Kol); //увеличивает Kol на единицу вот это пишешь уже после цикла, а не внутри: Код: Srob:=Sum/Kol; Последний раз редактировалось SerginhoLD, 16.06.2010 в 15:49. | 
| 
			 
			#9  
			
			
			
			
		 | ||||
| 
 | ||||
|   запустим еще один цикл для подсчета Код:  for i := 1 to StringGrid1.RowCount-1 do
 begin
  
  if ((StringGrid1.Cells[0, i] = 'Жен') and      (StrToInt(StringGrid1.Cells[2, i]) < 50)) then
   Sum := (Sum + StrToInt(StringGrid1.Cells[4, i]));
    
   for j := 1 to StringGrid1.RowCount - 1 do
     if StringGrid1.Cells[0,j] = Жен' then Inc(Kol);
    
    Srob:=Sum/Kol;
 end; | 
| 
			 
			#10  
			
			
			
			
		 | |||
| 
 | |||
|   Вопросы поставил чтоб проблему обозначить, поставил все как ты сказал, не выходит каменный цветок  , считает не правильно | 
| 
			 
			#11  
			
			
			
			
		 | ||||
| 
 | ||||
|   короче так: Код: kol:=0; Sum:=0;
for i := 1 to StringGrid1.RowCount-1 do
   if ((StringGrid1.Cells[0, i] = 'Жен') and (StrToInt(StringGrid1.Cells[2, i]) < 50)) then
   begin
      Sum := Sum + StrToInt(StringGrid1.Cells[4, i]);
      inc(Kol);
   end;
Srob:=Sum/Kol;Последний раз редактировалось SerginhoLD, 16.06.2010 в 15:56. | 
| 
			 
			#12  
			
			
			
			
		 | |||
| 
 | |||
|   Kailon, все получилось. Огромное человеческое спасибо!) | 
| 
			 
			#13  
			
			
			
			
		 | ||||
| 
 | ||||
|   Пожалуйста  |