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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.04.2012, 15:24   #11
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,431
По умолчанию

Код:
for i := 1 to stringgrid1.RowCount - 1 do
    if stringgrid1.Cells[0, i] <> '' then
      stringgrid2.Cells[1, strtoint(stringgrid1.Cells[0, i]) - 1] := inttostr(strtoint(stringgrid2.Cells[1, strtoint(stringgrid1.Cells[0, i]) - 1]) + 1);
Идем по ячейкам 1 таблицы от 1 ячейки и до последней.
Если в ячейке что-то есть (stringgrid1.Cells[0, i] <> ''), тогда:
1) strtoint(stringgrid1.Cells[0, i]) - получаем числовое представление той цифры, что записана в обрабатываемой ячейке.
2) stringgrid2.Cells[1, strtoint(stringgrid1.Cells[0, i]) - 1] - это расположение данной оценки во второй матрице (просто можно посмотреть, что оценка 2 располагается в 1 строчке 2 таблицы)
3) strtoint(stringgrid2.Cells[1, strtoint(stringgrid1.Cells[0, i]) - 1]) получаем число из 2 таблицы (предыдущее значение кол-ва рассматриваемой оценки)
4) + 1 - увеличиваем на 1
5) inttostr(strtoint(stringgrid2.Cells[1, strtoint(stringgrid1.Cells[0, i]) - 1]) + 1) - преобразовываем обратно в строку
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )

Последний раз редактировалось BDA; 22.04.2012 в 15:26.
BDA вне форума Ответить с цитированием
Старый 22.04.2012, 15:28   #12
mishanama
Пользователь
 
Регистрация: 04.06.2009
Сообщений: 22
По умолчанию

Нолики пишет чтоли? Я не пойму где у тебя значения в массив заносяться? И почему floattostr, когда переменные integer?
То же самое: a:Array[1..4] of Real (замени real на integer);
mishanama вне форума Ответить с цитированием
Старый 22.04.2012, 15:29   #13
Vitia666
Новичок
Джуниор
 
Регистрация: 21.04.2012
Сообщений: 13
По умолчанию

О господи,какой то ужасно сложный ,для меня код,написал ты))
Иногда нолики,иногда ошибку

Последний раз редактировалось Vitia666; 22.04.2012 в 15:32.
Vitia666 вне форума Ответить с цитированием
Старый 22.04.2012, 15:36   #14
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,431
По умолчанию

Ошибки возможны только если вместо допустимых 2, 3, 4 и 5 вводить что-либо другое.

В вашем же коде вообще не происходит обхода 1 таблицы.
Как уже отметил mishanama, нужно использовать не FloattoStr, а InttoStr.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )

Последний раз редактировалось BDA; 22.04.2012 в 15:40.
BDA вне форума Ответить с цитированием
Старый 22.04.2012, 15:39   #15
Vitia666
Новичок
Джуниор
 
Регистрация: 21.04.2012
Сообщений: 13
По умолчанию

Да я в старом коде пытаюсь разобраться)
Твой отлично работает,только я боюсь что не обьясню его по нормальному,да и не повероят мне)
Vitia666 вне форума Ответить с цитированием
Старый 22.04.2012, 15:39   #16
mishanama
Пользователь
 
Регистрация: 04.06.2009
Сообщений: 22
По умолчанию

Ты сделал чего тебе сказано? Ты сравниваеш в условии real и integer.Чего можно ждать. Да и массив a у тебя статический в цикле :
Код:
for i:=1 to n do
begin
//B[i]:=StrToFloat(StringGrid2.Cells[0,i]);
  if a[i]=5 then n5:=n5+1;
  if a[i]=4 then n4:=n4+1;
  if a[i]=3 then n3:=n3+1;
  if a[i]=2 then n2:=n2+1;
  //StringGrid2.Cells[0,100]:=FloatToStr(a[i]);
end;
i может принять значение n-1, и если будет больше 4 - вылетить с ошибкой.
Теперь вопрос КОГДА ошибка вылазит - при запуске или при нажатии кнопки?
mishanama вне форума Ответить с цитированием
Старый 22.04.2012, 15:44   #17
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,431
По умолчанию

Можно сделать так, но это извращенство:
Код:
a:integer;
...
n2:=0;
n3:=0;
n4:=0;
n5:=0;
for i:=1 to n-1 do
if StringGrid1.Cells[0,i]<>'' then
	begin
		a:=strtoint(StringGrid1.Cells[0,i]);
		if a=5 then n5:=n5+1;
		if a=4 then n4:=n4+1;
		if a=3 then n3:=n3+1;
		if a=2 then n2:=n2+1;
	end;
StringGrid2.Cells[0,0]:=inttostr(n2);
StringGrid2.Cells[0,1]:=inttostr(n3);
StringGrid2.Cells[0,2]:=inttostr(n4);
StringGrid2.Cells[0,3]:=inttostr(n5);
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 22.04.2012, 16:13   #18
Vitia666
Новичок
Джуниор
 
Регистрация: 21.04.2012
Сообщений: 13
По умолчанию

Вставил твой код,ого-го прогресс))Теперь только ноолики выдаёт)

Код:
  var
  Form1: TForm1;
N,a,i,k,n5 ,n2, n4, n3:integer;

implementation

{$R *.dfm}


procedure TForm1.Button1Click(Sender: TObject);
begin
N:=StrToInt(Edit1.Text);
StringGrid1.ColCount:=N;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
N:=0;
Edit1.Text:=intToStr(N);
StringGrid1.RowCount:=N;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
n2:=0;
n3:=0;
n4:=0;
n5:=0;
for i:=1 to n-1 do
if StringGrid1.Cells[0,i]<>'' then
	begin
		a:=strtoint(StringGrid1.Cells[0,i]);
		if a=5 then n5:=n5+1;
		if a=4 then n4:=n4+1;
		if a=3 then n3:=n3+1;
		if a=2 then n2:=n2+1;
	end;

stringGrid2.Cells[0,0]:=InttoStr(n2);
stringGrid2.Cells[1,0]:=InttoStr(n3);
stringGrid2.Cells[2,0]:=InttoStr(n4);
stringGrid2.Cells[3,0]:=InttoStr(n5);
end;

end.
Vitia666 вне форума Ответить с цитированием
Старый 22.04.2012, 16:19   #19
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,431
По умолчанию

А нулевой столбец 1 таблицы заполнен оценками???
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 22.04.2012, 16:19   #20
Vitia666
Новичок
Джуниор
 
Регистрация: 21.04.2012
Сообщений: 13
По умолчанию

С этим кодом на кнопку нажимаешь и нолики в стринггрид2
Да заолнен вроде как

Последний раз редактировалось Vitia666; 22.04.2012 в 16:33.
Vitia666 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Беда с windows.h nury Visual C++ 7 16.08.2011 10:15
Беда с указателями Soundkilla Помощь студентам 5 08.03.2011 22:05
беда Морячок Паскаль, Turbo Pascal, PascalABC.NET 3 05.06.2010 15:41