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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.11.2011, 14:28   #1
Nancy90
 
Аватар для Nancy90
 
Регистрация: 21.11.2011
Сообщений: 9
По умолчанию StringGrid, проблема в программе

Задача такая:
В своих заявлениях в университет абитуриенты указали номер школы, школьные оценки по математике, физике и литературе, пол и информацию в школьных олимпиадах по информатике. По заданной последовательности за-явлений определить номер школы, которую окончила отличница, подавшая своё заявление в университет первой из всех победителей олимпиад.

Вот код, который получился, Подскажите как реализовать данное условие по другому? Так как данный код выводит не совсем корректные результаты, хотя и работает...

Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Grids;

type
  TForm1 = class(TForm)
    StringGrid1: TStringGrid;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    procedure StringGrid1Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.StringGrid1Click(Sender: TObject);
begin
StringGrid1.Cells[1, 0] := 'Школа';
 StringGrid1.Cells[2, 0] := 'Мат-ка';
 StringGrid1.Cells[3, 0] := 'Физика';
 StringGrid1.Cells[4, 0] := 'Лит-ра';
 StringGrid1.Cells[5, 0] := 'Пол';
 StringGrid1.Cells[6, 0] := 'Победа в олимпиаде';

end;

procedure TForm1.Button1Click(Sender: TObject);
begin
StringGrid1.RowCount := StringGrid1.RowCount + 1;
end;

procedure TForm1.Button2Click(Sender: TObject);
var
i, School: integer;
begin
for i := 1 to StringGrid1.RowCount-1 do
begin
  if ((StringGrid1.Cells[5, i] = 'Ж') and
      (StrToInt(StringGrid1.Cells[2, i]) = 5) and
      (StrToInt(StringGrid1.Cells[3, i]) = 5) and
      (StrToInt(StringGrid1.Cells[4, i]) = 5) and
      (StringGrid1.Cells[6, i] = 'Да')) then
   School := School + StrToInt(StringGrid1.Cells[1, i]);
end;
ShowMessage('Номер школы' + IntToStr(School))
 end;
procedure TForm1.Button3Click(Sender: TObject);
var
 i: integer;
begin
for i := 1 to StringGrid1.RowCount-1 do
  StringGrid1.Rows[i].Clear;
 StringGrid1.RowCount := 2;

end;

end.
Nancy90 вне форума Ответить с цитированием
Старый 28.11.2011, 14:43   #2
Zer0
Форумчанин
 
Аватар для Zer0
 
Регистрация: 13.12.2007
Сообщений: 788
По умолчанию

Код:
      (StringGrid1.Cells[6, i] = 'Да')) then
   School := School + StrToInt(StringGrid1.Cells[1, i]);
end;
ShowMessage('Номер школы' + IntToStr(School))
немного изменить этот кусочек на такой:

Код:
      (StringGrid1.Cells[6, i] = 'Да')) then begin
       ShowMessage('Номер школы' + StringGrid1.Cells[1, i]);
       break;
   end;
end;
благодарность - сюда (не забываем писать от кого)
Zer0 вне форума Ответить с цитированием
Старый 28.11.2011, 15:20   #3
Nancy90
 
Аватар для Nancy90
 
Регистрация: 21.11.2011
Сообщений: 9
По умолчанию

Ошибку почему то выдает(( а в моем коде он не считывает если допустим 2 девочки подали заявление и обе отличницы, а просто плюсует школы и все...
Nancy90 вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
проблема со stringgrid ElfOfDark Компоненты Delphi 9 24.09.2011 08:45
Хранение данных StringGrid в программе googl Общие вопросы Delphi 7 22.12.2010 00:44
Проблема в STRINGGRID !!! WeRsUs Помощь студентам 4 28.10.2010 21:35
Проблема в программе. anr Общие вопросы Delphi 1 05.02.2010 00:27
проблема в программе cheef Общие вопросы Delphi 2 28.04.2009 13:34