Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.73/22: Рейтинг темы: голосов - 22, средняя оценка - 4.73
1 / 1 / 0
Регистрация: 18.06.2014
Сообщений: 29

Расчет среднего балла по данным, находящимся в StringGrid

19.06.2014, 10:31. Показов 4710. Ответов 57
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите пожалуйста) мне нужно сложить содержимое строчки StringGrida была идея присваивать переменную каждой ячейки и просто сложить между собой, но это будет слишком большой код. Я расчитываю средний бал по оценкам в группах их 13, в каждой группе по 25 человек, если я буду складывать в строчках моим методам, то это будет просто ГИГАНСКИЙ код, может есть способ проще? Сложить содержимое строчки StringGrida?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
19.06.2014, 10:31
Ответы с готовыми решениями:

Опредение среднего балла по данным из файла
Дан текстовый файл (in.txt) содержащий список учащихся и их оценки по трем предметам: математике, физике, информатике. Формат файла:...

Расчет среднего балла студентов
Безумно нужна помощь в написании программы. Тема интересная, про студентов =) Есть поля базы данных: ФИО студентов Пол Оценки з...

StringGrid подсчет среднего балла
имеется 2 stringgrid'a - Ozenki и SredBall не получается вывести средний бал с первого стингрида в второй (столбик) всегда путался в...

57
1 / 1 / 0
Регистрация: 18.06.2014
Сообщений: 29
21.06.2014, 23:41  [ТС]
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от demon_7 Посмотреть сообщение
напишите заново весь проект :3
как жестоко..я бы с удовольствием, но времени нет, надо работать с тем что есть)
0
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
21.06.2014, 23:51
что у вас сейчас не получается?
0
1 / 1 / 0
Регистрация: 18.06.2014
Сообщений: 29
22.06.2014, 00:57  [ТС]
Не получается с социальной стипендией я скинула проект..я тут проводила один эксперемент, сделала пробник программы маленький с основной функцией начисления академ стипендии. Он почему то пропускает часть условия( не могу понять в чем дело(

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
for(int i = 1; i <Form4->StringGrid1->RowCount; i++)
  {
   int sum = 0;
     for(int j = 1; j<Form4->StringGrid1->ColCount;j++)
       {
        sum += StrToIntDef(Form4->StringGrid1->Cells[j][1], 0);}
        float k;
{
          k=(sum/7.0);
          Edit1->Text=FloatToStr(k);
 
      if ((k==5.0))
        {StringGrid1->Cells[4][1]="1200";}
        if ((k>=3.9)&&(k<=5.0))
        {StringGrid1->Cells[4][1]="800";}
        if ((k>2.9)&&(k<4))
        {StringGrid1->Cells[4][1]="0";}//;
 
   }}
Я проставляю себе в первой строчке все 5 и получается что средний бал тоже равен 5 и он должен вывести стипендию размером 1200, но он пропускает и выводит 800, пробовала ставить тройки выводит 0 как и должно быть. В общем присылаю этот пробник. Тут же насчет социальной пробую и тоже проблемы(в социальной стипендии происходит зацикливание и он одну запись сравнивает со всеми записями из другого Стрингрида и в итоге одна фамилия будет повторятся по несколько раз с 0 и один раз с правильным вариантом ответа.
Вложения
Тип файла: 7z Работка попытка 2.7z (327.3 Кб, 2 просмотров)
0
1 / 1 / 0
Регистрация: 18.06.2014
Сообщений: 29
22.06.2014, 01:01  [ТС]
а, я в пробнике только с 3 курсом тоже работала остальные кнопки курсов не рабочие.
0
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
22.06.2014, 02:01
Цитата Сообщение от Sinsingumi Посмотреть сообщение
в итоге одна фамилия будет повторятся по несколько раз с 0 и один раз с правильным вариантом ответа
Ну, так вы так цикл построили: если фио совпадает, то "600", но и если не совпадает, то "0" и фио все равно добавляется в конец таблицы по числу строк в таблице 6-й формы.
0
1 / 1 / 0
Регистрация: 18.06.2014
Сообщений: 29
22.06.2014, 11:13  [ТС]
Цитата Сообщение от nick42 Посмотреть сообщение
Ну, так вы так цикл построили: если фио совпадает, то "600", но и если не совпадает, то "0" и фио все равно добавляется в конец таблицы по числу строк в таблице 6-й формы.
а как сделать что бы она один раз повторялась??

Добавлено через 2 часа 47 минут
Я просто не понимаю где именно в условии я указала выводить по количеству записей из 6 формы(

Добавлено через 1 минуту
Нужно что-то вроде если совпадают то 600, если не совпадают то 0, но один раз(

Добавлено через 41 секунду
И опять просидела до 2-х ночи, но так и не поняла почему в академической стипендии пропускает часть условия

Добавлено через 26 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
for (int i=1; i<Form4->StringGrid1->RowCount;i++)
        {
        for (int j=1; j<Form6->StringGrid1->RowCount;j++)
 
                        {
 
                       if (Form4->StringGrid1->Cells[0][i]==Form6->StringGrid1->Cells[0][j])
                                {
                                int n;
                               n=StringGrid1->RowCount-1;
                                StringGrid1->Cells[0][n]=Form6->StringGrid1->Cells[0][j];
                                StringGrid1->Cells[3][n]="600";
                                 StringGrid1->RowCount++;  }
                                  if (Form4->StringGrid1->Cells[0][i]!=Form6->StringGrid1->Cells[0][j])
                                {
                                int n; int k=1;
                               n=StringGrid1->RowCount-1;
                                StringGrid1->Cells[0][n]=Form4->StringGrid1->Cells[0][i];
                                StringGrid1->Cells[3][n]="0";
                                 StringGrid1->RowCount++;  }
 
 
                } }
попробовала вот так все равно то же самое(

Добавлено через 3 минуты
Все с академической разобралась выводит как надо)

Добавлено через 11 минут
но почему-то только в пробнике..ладно если что проект заново переделаю, только помогите пожалуйста понять что не так с моими записями в социальной, как сделать чтобы они не повторялись, я и к руководителю практики подходила, она говорит Вик у тебя странные ошибки я ничего не знаю..
0
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
22.06.2014, 11:38
Вик, "странные ошибки" - это почти комплимент... .
Мне трудно из чужой программы, к тому же неверно работающей, извлечь логику. Лучше детским языком напишите, что вы хотите иметь в результате этого двойного цикла; что уже должны содержать таблицы 4-й и 6-й форм?
0
 Аватар для demon_7
260 / 192 / 60
Регистрация: 12.05.2013
Сообщений: 857
22.06.2014, 11:45
Ну мистика в программировании бывает часто, пока ты только обучаешься и преподаватель не особо проявляет желание помогать.
Виктория, если у Вас что то выходит не так, нарисуйте блок схему на листе, прям поэтапно.
Либо код который у Вас проверяйте через каждые 5 написанных Вами строк, чтоб выловить ошибку на раннем этапе.
Плюс можно же проверять себя, чтоб не было "черных ящиков" киньте на форму поле Memo в него выводите все в чем не уверены, потом смотрите на каком шаге что то пошло не так.
0
1 / 1 / 0
Регистрация: 18.06.2014
Сообщений: 29
22.06.2014, 15:06  [ТС]
Цитата Сообщение от nick42 Посмотреть сообщение
Вик, "странные ошибки" - это почти комплимент... .
Мне трудно из чужой программы, к тому же неверно работающей, извлечь логику. Лучше детским языком напишите, что вы хотите иметь в результате этого двойного цикла; что уже должны содержать таблицы 4-й и 6-й форм?
Я понимаю, что все очень коряво..попробую объяснить..
Итак на 4 форме у меня распологается успеваемость студентов 3 курса с фамилиями и оценками, на 6 форме распологается список студентов которые из общего списка 3 курса получают социальную стипендию.
Ну к примеру в успеваемости будут:Абрамова, Варфоломеев, Гришин, но социалку из них троих получает только Варфоломеев. Моя логика в чем я сравниваю эти две таблици, если человек есть и там и там значит он получает социальную стипендию и на форме 7 где я подсчитываю в стрингриде стипендию я хотела выводить его фамилию вместе с 600, если же человек есть например на 4 форме, но его нет на 6, значит, что он просто учится и социалку не получает, а значит я так же вывожу его фамилию, но со значением 0 в столбец под социалку..надеюсь понятно, я не очень хорошо умею объяснять(

Добавлено через 4 минуты
Цитата Сообщение от demon_7 Посмотреть сообщение
Ну мистика в программировании бывает часто, пока ты только обучаешься и преподаватель не особо проявляет желание помогать.
Виктория, если у Вас что то выходит не так, нарисуйте блок схему на листе, прям поэтапно.
Либо код который у Вас проверяйте через каждые 5 написанных Вами строк, чтоб выловить ошибку на раннем этапе.
Плюс можно же проверять себя, чтоб не было "черных ящиков" киньте на форму поле Memo в него выводите все в чем не уверены, потом смотрите на каком шаге что то пошло не так.
Спасибо большое..в обучении у нас в прям магия ничего того что нас заставляют писать мы не проходили..вообще. У нас в группе 23 человека и только наверное 5 из них честно делали курсовой сами, остальным либо кто-то делал по доброте душевной либо за деньги..я сама делала свой курсовой и все все все что мне нужно было я искала сама в интернете а в попытках спросить у препода, она говорила:"Вик, знаешь вопрос конечно интересный ты посмотри в интернете, а потом тогда скажи как делала "

Добавлено через 14 минут
Вроде получилось, я убрала эти форы и вместо них просто счетчики поставила и все заработало)

Добавлено через 19 минут
Нет, похоже не получилось код вот такой вот, без файлов получилось а вот теперь когда пробую не получается
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
{ int j=1; int i=1;
                       if (Form4->StringGrid1->Cells[0][j]==Form6->StringGrid1->Cells[0][j])
                                {
                                int n;
                               n=StringGrid1->RowCount-1;
                               StringGrid1->Cells[3][n]="600";
                                 StringGrid1->RowCount++;
                                 j++;i++;  }
                                  if (Form4->StringGrid1->Cells[0][j]!=Form6->StringGrid1->Cells[0][j])
                                {
                                int n;
                               n=StringGrid1->RowCount-1;
                               StringGrid1->Cells[3][n]="0";
                                 StringGrid1->RowCount++;
                                 j++;i++; }
 
 
                } }
0
 Аватар для demon_7
260 / 192 / 60
Регистрация: 12.05.2013
Сообщений: 857
22.06.2014, 15:49
а собственно что не так?
0
1 / 1 / 0
Регистрация: 18.06.2014
Сообщений: 29
22.06.2014, 15:57  [ТС]
Цитата Сообщение от demon_7 Посмотреть сообщение
а собственно что не так?
он выводит и то не правильно только последнему человеку из списка(
0
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
22.06.2014, 15:58
Может вот так? (если я правильно понял)...
C++
1
2
3
4
5
6
7
8
9
10
11
void __fastcall TForm7::Button1Click(TObject *Sender)
{
  for (int i=1; i<Form4->StringGrid1->RowCount;i++)
  {
    int n=0;
    StringGrid1->Cells[0][i]=Form4->StringGrid1->Cells[0][i];
    for (int j=1; j<Form6->StringGrid1->RowCount;j++)
      if (StringGrid1->Cells[0][i]==Form6->StringGrid1->Cells[0][j]) n++;
    StringGrid1->Cells[3][i] = n>0 ? "600" : "0" ;
  }
}
0
1 / 1 / 0
Регистрация: 18.06.2014
Сообщений: 29
22.06.2014, 16:49  [ТС]
Спасибо сейчас попробую! мы такой записью не пользовались никогда..

Добавлено через 34 секунды
Мне стоит начинать читать книги по программированию..иначе дальше мне будет только хуже

Добавлено через 4 минуты
Все получилось! спасибо огромное! Чтобы я без вас 2-их делала! И последнее надеюсь чем досажду, что посоветуете почитать?? Просто я правда хочу стать хорошим программистом, мне это интересно, высшее образование так же планирую получать по специальности и мне это очень интересно..
0
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
22.06.2014, 16:49
StringGrid1->Cells[3][i] = n>0 ? "600" : "0" ; это то же, что
C++
1
2
  if (n>0) StringGrid1->Cells[3][i] = "600";
 else      StringGrid1->Cells[3][i] = "0";
(просто лень длинно писать)
0
1 / 1 / 0
Регистрация: 18.06.2014
Сообщений: 29
22.06.2014, 16:53  [ТС]
Все поняла спасибо))

Добавлено через 2 минуты
Поняла вы их сравниваете и делаете наращивание на n потом проверяет его и если оно меньше 0 то выводит 0 если больше то 600
0
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
22.06.2014, 17:01
Я бы по другому выразился... - последовательно копируя фио из табл.4 в цикле просматривается табл.6 (на совпадение фио): если встречается - переменная n цикла получает приращение (в начале цикла 0). По окончании цикла проверки в 3-ю ячейку заносится значение, зависящее о величины n.
0
1 / 1 / 0
Регистрация: 18.06.2014
Сообщений: 29
22.06.2014, 17:44  [ТС]
нужно будет запомнить это, наверняка не раз еще придется сравнивать таким образом стрингриды)
0
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
22.06.2014, 18:16
Не обязательно так; есть еще IndexOf...
C++
1
2
3
4
5
6
  for (int i=1; i<Form4->StringGrid1->RowCount;i++)
  {
    StringGrid1->Cells[0][i]=Form4->StringGrid1->Cells[0][i];
    StringGrid1->Cells[3][i] = 0 > Form6->StringGrid1->Cols[0]->IndexOf(
       StringGrid1->Cells[0][i]) ? "0" : "600" ; 
  }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
22.06.2014, 18:16
Помогаю со студенческими работами здесь

Составить программу вычисления среднего балла каждого учащегося, среднего балла в классе в целом
в классе 8 учеников, известны результаты сдачи экзаменов по 3- м предметам. Составить программу вычисления среднего балла каждого...

Составить программу вычисления среднего балла каждого учащегося, среднего балла в группе в целом
В группе 5 учеников , известны результаты сдачи экзаменов по трем предметам.Составьте программу вычисления среднего балла каждого...

Программа для поиска среднего балла каждого учащегося и общего среднего балла
вот программа для поиска среднего балла каждого учащегося и общего среднего балла. при запуске программы выдает внутреннюю ошибку...

Считать данные из файла Список.txt, выполнить расчет среднего балла успеваемости, а затем вывести итоговую оценку
Считать данные из файла Список.txt, выполнить расчет среднего балла успеваемости, а затем вывести итоговую оценку. Округление итоговой...

Построить диаграмму по данным, находящимся на листе Старт


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
58
Ответ Создать тему
Новые блоги и статьи
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20%
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru