Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Помощь студентам


Ответ
 
Опции темы Опции просмотра
Старый 14.05.2011, 15:57   #1 (permalink)
Gerald
Member
 
Регистрация: 26.03.2011
Сообщений: 25
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
Question Многомерный массив или записи?

Язык: Delphi
Дана информация о студентах: курс, группа, оценки. Мне нужно будет выяснять средний балл каждой группы. Т.е. группы 1.1, 1.2, ..., 2.2, 2.3, ...
Что меньше будет занимать памяти и что луше использовать для этого - многомерный массив или записи? Интересны также ваши предложения...
Gerald вне форума   Ответить с цитированием

Старый 14.05.2011, 15:57
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Возможно, данная тема уже решена ранее

Массив в VBA
Массив
Массив в с++
Двумерный массив

Старый 14.05.2011, 18:05   #2 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Gerald Посмотреть сообщение
Язык: Delphi
Дана информация о студентах: курс, группа, оценки. Мне нужно будет выяснять средний балл каждой группы. Т.е. группы 1.1, 1.2, ..., 2.2, 2.3, ...
Что меньше будет занимать памяти и что луше использовать для этого - многомерный массив или записи? Интересны также ваши предложения...
Дело вкуса, конечно, и если все данные (курс, группа, оценки) - сугубо числовые, то можно и массив. Но я бы в любом случае использовал записи.
Vladimir_S вне форума   Ответить с цитированием
Старый 14.05.2011, 18:10   #3 (permalink)
Gerald
Member
 
Регистрация: 26.03.2011
Сообщений: 25
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

А памяти они занимают одинаково?
Gerald вне форума   Ответить с цитированием
Старый 14.05.2011, 18:25   #4 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Gerald Посмотреть сообщение
А памяти они занимают одинаково?
А пёс их знает... Как-то с современными компьютерами подобные вопросы для такого рода задачек теряют актуальность.
Vladimir_S вне форума   Ответить с цитированием
Старый 14.05.2011, 18:56   #5 (permalink)
Gerald
Member
 
Регистрация: 26.03.2011
Сообщений: 25
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Ясно, спасибо за ваше мнение. Вот только у меня появилась проблема. Где то ошибся в коде - не могли бы вы посмотреть:
Код:
procedure GPAgr(var count:integer);
var
  i,j:integer;
  sum:real;
begin
  reset(f);
  for i := 1 to high(GPAgroup) do
    for j := 1 to high(GPAgroup[0]) do
    begin
      count:=0;
      sum:=0;
      while not(eof(f)) do
      begin
        read(f,s);
        if (i=s.Kurs) and (j=s.Group) then //Вот тут что-то нетак!!!
        begin
          sum:=sum+GPAstud(s);
          inc(count);
        end;
      end;
      if existGR(i,j)=true then GPAgroup[i,j]:=sum/count;
    end;
  Closefile(f);
end;
s.Kurs и s.Group имеют тип byte.
Так как код написал уже с массивом а особой роли как вы говорите это не играет, решил все так и оставить как есть.
Проверял по счетчику count в первом операторе if не находит совпадения - не могу понять почему... а именно в переменной j чтото нетак - подставлял число вместо нее - все ок... Помогите пожалуйста.
Gerald вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Старый 14.05.2011, 19:21   #6 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Возможно, здесь:
Цитата:
Сообщение от Gerald Посмотреть сообщение
for j := 1 to high(GPAgroup[0]) do
Что есть вообще
high(GPAgroup)?
Vladimir_S вне форума   Ответить с цитированием
Старый 14.05.2011, 19:26   #7 (permalink)
Gerald
Member
 
Регистрация: 26.03.2011
Сообщений: 25
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

GPAgroup - это многомерный массив.
high(GPAgroup)- это должен быть индекс максимальной строки
а high(GPAgroup[0]) - по идее максимальный столбец. Или это неправильно?
Gerald вне форума   Ответить с цитированием
Старый 14.05.2011, 19:33   #8 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Извините, но вообще-то я Делфи плохо знаю. Лучше бы кто из спецов посмотрел.
Vladimir_S вне форума   Ответить с цитированием
Старый 14.05.2011, 19:37   #9 (permalink)
Gerald
Member
 
Регистрация: 26.03.2011
Сообщений: 25
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Кажется теперь я понимаю почему вы советовали записи. С ними меньше проблем, должно быть... Попробую я через записи...
Gerald вне форума   Ответить с цитированием
Старый 16.05.2011, 09:33   #10 (permalink)
AlexZir
support
 
Аватар для AlexZir
 
Регистрация: 19.08.2007
Адрес: Зея
Сообщений: 15,797
Записей в дневнике: 71
Сказал(а) спасибо: 166
Поблагодарили 203 раз(а) в 86 сообщениях
Репутация: 75760
По умолчанию

Покажите как вы определили этот массив. Максимальное значение индекса вообще-то это MaxValue, но вам, наверное, виднее

high(GPAgroup) - это не индекс максимальной строки (кстати, как это понять?), а вообще непонятно что!

GPAgroup - что это за компонента? На какой палитре инструментов находится?
__________________
Убить всех человеков!
AlexZir вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 06:03.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.