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

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

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

Author24 — интернет-сервис помощи студентам
Помогите пожалуйста) мне нужно сложить содержимое строчки StringGrida была идея присваивать переменную каждой ячейки и просто сложить между собой, но это будет слишком большой код. Я расчитываю средний бал по оценкам в группах их 13, в каждой группе по 25 человек, если я буду складывать в строчках моим методам, то это будет просто ГИГАНСКИЙ код, может есть способ проще? Сложить содержимое строчки StringGrida?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.06.2014, 10:31
Ответы с готовыми решениями:

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

Расчет среднего балла студентов
Безумно нужна помощь в написании программы. Тема интересная, про студентов =) Есть поля базы...

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

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

57
260 / 192 / 60
Регистрация: 12.05.2013
Сообщений: 857
20.06.2014, 18:50 21
Author24 — интернет-сервис помощи студентам
Когда нажимаете "ответить" снизу есть "дополнительные опции" и там есть кнопка "управление вложениями".
Радикал не нужен.

Добавлено через 4 минуты
Вы уверены что Ваше условие выполняется?
Проверьте себя
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
if ((ComboBox1->ItemIndex==9)||(ComboBox1->ItemIndex==10)||(ComboBox1->ItemIndex==11))
{
ShowMessage("Условие выполняется!");
 for(int i = 1; i <StringGrid1->RowCount; ++i)
  {
    int sum = 0;
     for(int j = 1; j<StringGrid1->ColCount;j++)
       {
        sum += StrToIntDef(StringGrid1->Cells[j][1], 0);
        Edit1->Text=IntToStr(sum);
       }
   }
}
Эта строка покажет сообщение с текстом написанным в скобках, если условие выполняется.
C++
1
ShowMessage("Условие выполняется!");
проверьте
1
1 / 1 / 0
Регистрация: 18.06.2014
Сообщений: 29
20.06.2014, 19:29  [ТС] 22
Условие выполняется сообщение выскакивает, яперенаправила в Edit1 sum и он мне выдал 0(

Добавлено через 8 минут
sum += StrToIntDef(StringGrid1->Cells[j][1], 0);
я на самом деле не очень понимаю эту строчку, обьясните пожалуйста, если не сложно
1
260 / 192 / 60
Регистрация: 12.05.2013
Сообщений: 857
20.06.2014, 20:50 23
Попробуйте так
C++
1
sum += StrToInt(StringGrid1->Cells[j][1], 0);
StrToIntDef(StringGrid1->Cells[j][1], 0); это называется приведение типов.
То есть наша переменная sum целочисленная, а значения в StringGrid строковые.
Чтоб привести строковые числовые значение к целочисленному используется функция StrToInt (Строку привести к Целочисленному).

Добавлено через 1 минуту
и почему Вы стесняетесь экспериментировать, если Edit равен был нулю это уже результат вынесите вашу sum за for и посмотрите чему она будет равна.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
if ((ComboBox1->ItemIndex==9)||(ComboBox1->ItemIndex==10)||(ComboBox1->ItemIndex==11))
{
ShowMessage("Условие выполняется!");
int sum = 0;
 for(int i = 1; i <StringGrid1->RowCount; ++i)
  {
     for(int j = 1; j<StringGrid1->ColCount;j++)
       {
        sum += StrToIntDef(StringGrid1->Cells[j][1], 0);
        Edit1->Text=IntToStr(sum);
       }
   }
}
1
1 / 1 / 0
Регистрация: 18.06.2014
Сообщений: 29
21.06.2014, 00:24  [ТС] 24
спасибо) я тоже обрадывалась) StrToInt птица знакомая мне было интересно что делает Def, просто я попробывала ее удалить и вылетела ошибка) спасибо большое еще раз, что помогаете буду пробовать и пытаться, просто циклы мне нравятся, но я в них не до конца разбираюсь, часто все работает, но происходит зацикливание( нужно больше практики) я попробую как вы посоветовали и отпишусь от результата

Добавлено через 19 минут
К сожалению опять 0(я поискала не могу найти, часто встречала, объясните неразумной +=, что означает?

Добавлено через 11 минут
Сделала так, чисто ради эксперимента, все равно получается 0, начинаю подозревать, что проблема в считывании информации со StringGrida
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
if ((ComboBox1->ItemIndex==9)||(ComboBox1->ItemIndex==10)||(ComboBox1->ItemIndex==11))
{
ShowMessage("Óñëîâèå âûïîëíÿåòñÿ!");
int sum = 0;
 for(int i = 1; i <StringGrid1->RowCount; ++i)
  {
     for(int j = 1; j<StringGrid1->ColCount;j++)
       {
        sum == StrToInt((Form4->StringGrid1->Cells[1][1])+(Form4->StringGrid1->Cells[2][1]));
        Edit1->Text=IntToStr(sum);
       }
   }
}
Добавлено через 3 минуты
Файл этот я загружаю через OpenDialog, может он просто дает просмотреть, но не дает использовать значения, для загрузки использую вот такой вот код, он не мой взяла у одногрупника, он тоже где-то его сам нашел
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
if(OpenDialog1->Execute())
{
TStringList *pStrings = new TStringList;
pStrings->LoadFromFile(OpenDialog1->FileName);
StringGrid1->RowCount = pStrings->Count;
StringGrid1->ColCount=6;
for(int i=0; i < pStrings->Count; i++)
{
StringGrid1->Rows[i]->Delimiter = ';';
StringGrid1->Rows[i]->DelimitedText = pStrings->Strings[i];
int i1=i;
}
delete pStrings;
}
Добавлено через 1 минуту
сейчас попробовала просто с руки заполнить первую строчку и сложить 2 ячейки все равно 0(

Добавлено через 2 часа 4 минуты
Попробывала сделать новый проект кинула StringGrid кнопку и Edit все работает( не понимаю тогда, что ему не нравится(
0
4043 / 2332 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
21.06.2014, 00:34 25
Цитата Сообщение от Sinsingumi Посмотреть сообщение
не понимаю тогда, что ему не нравится(
Цитата Сообщение от Sinsingumi Посмотреть сообщение
sum == StrToInt((Form4->StringGrid1->Cells[1][1])+(Form4->StringGrid1->Cells[2][1]));
== - операция сравнения, а не присваивания. StrToInt следует применять к одному текстовому представлению числа за раз. "5" + "5" даст нам не 10, а 55.
0
1 / 1 / 0
Регистрация: 18.06.2014
Сообщений: 29
21.06.2014, 00:47  [ТС] 26
Все разобралась! Спасибо огроменное! Я просто тупица не указывала форму с какого СтрингГрида считывать он не оттуда брал вот и рисовал 0))) только теперь у меня следующий вопрос, правильно ли я поставила условие.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
if ((ComboBox1->ItemIndex==9)||(ComboBox1->ItemIndex==10)||(ComboBox1->ItemIndex==11))
{
ShowMessage("??????? ???????????!");
 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/5.0;
 
        if (k=5.0)
        {Edit1->Text="1200";}
        if ((k=>3.9)&&(k<=5.0))
        {Edit1->Text="800";}
        if ((k=>2.9)&&(k<=4))
        {Edit1->Text="0";}//Edit1->Text=FloatToStr(k);
 
   }}
Добавлено через 2 минуты
Цитата Сообщение от BRcr Посмотреть сообщение
Сообщение от Sinsingumi
не понимаю тогда, что ему не нравится(
Сообщение от Sinsingumi
sum == StrToInt((Form4->StringGrid1->Cells[1][1])+(Form4->StringGrid1->Cells[2][1]));
== - операция сравнения, а не присваивания. StrToInt следует применять к одному текстовому представлению числа за раз. "5" + "5" даст нам не 10, а 55.
спасибо! я не знала, нам в колледже говорили что == используется просто при условии, и слушай теперь там кого-нибудь после этого, сижу теперь самообучением занимаюсь от этого пользы больше будет)
0
260 / 192 / 60
Регистрация: 12.05.2013
Сообщений: 857
21.06.2014, 00:51 27
Цитата Сообщение от Sinsingumi Посмотреть сообщение
if (k=5.0)
это исправить на if (k==5.0)
0
1 / 1 / 0
Регистрация: 18.06.2014
Сообщений: 29
21.06.2014, 07:33  [ТС] 28
Ошибка в синтаксе ругается ладно, еще на учебе поковыряюсь

Добавлено через 3 минуты
Все получилось))) работает!) ура спасибо большое) теперь только надо все это дело в цикл и в Стрингрид и будет мне счастье)
0
1 / 1 / 0
Регистрация: 18.06.2014
Сообщений: 29
21.06.2014, 08:53  [ТС] 29
И снова нужна ваша помощь( замучила наверное

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
for (int i=1; i<Form4->StringGrid1->RowCount;i++)
        {
        for (int j=1; j<Form6->StringGrid1->RowCount;j++)
                {
                if((ComboBox1->ItemIndex==8)||(ComboBox1->ItemIndex==9)||(ComboBox1->ItemIndex==10)||(ComboBox1->ItemIndex==11))
                        {
                        if (Form4->StringGrid1->Cells[0][i]==Form6->StringGrid1->Cells[0][j])
                                {
                                int n;
 
                                n=StringGrid1->RowCount-1;
                                StringGrid1->Cells[0][n]=Form4->StringGrid1->Cells[0][i];
                                StringGrid1->Cells[3][n]="600";
                                StringGrid1->RowCount++; }
 
                             else { int n;
                                n=StringGrid1->RowCount-1;
                                StringGrid1->Cells[0][n]=Form4->StringGrid1->Cells[0][i];
                                StringGrid1->Cells[3][n]="0";
                                StringGrid1->RowCount++;}
                } }
        }
и получается почему-то вот так: простите опять пришлось в архив скриншот( и так по всем фамилиям вроде бы правильно все считает, но я видимо где-то зациклила и он делает так(
Вложения
Тип файла: 7z Безымянный.7z (108.4 Кб, 4 просмотров)
0
61 / 50 / 12
Регистрация: 25.01.2010
Сообщений: 255
21.06.2014, 09:33 30
Цитата Сообщение от Sinsingumi Посмотреть сообщение
Form6
в 3-ей строке так и должно быть?
0
1 / 1 / 0
Регистрация: 18.06.2014
Сообщений: 29
21.06.2014, 10:21  [ТС] 31
Цитата Сообщение от samsebe Посмотреть сообщение
в 3-ей строке так и должно быть?
да, так и должно я беру информацию с двух разных форм 6 и 4
0
260 / 192 / 60
Регистрация: 12.05.2013
Сообщений: 857
21.06.2014, 10:30 32
Sinsingumi, опишите конкретно что не так у Вас происходит?
0
61 / 50 / 12
Регистрация: 25.01.2010
Сообщений: 255
21.06.2014, 11:50 33
Sinsingumi, выложили бы весь проект, легче было бы разобраться
0
1 / 1 / 0
Регистрация: 18.06.2014
Сообщений: 29
21.06.2014, 12:13  [ТС] 34
так что происходит он одну фамилию сравнивает несколько раз, я там скриншот выложила. Ну например он делает так:
Варфоломеев 600(это правильно он получает стипендию)
а потом еще несколько раз повторяется фамилия но уже с 0
Варфоломеев 0
Варфоломеев 0
Варфоломеев 0
Варфоломеев 0
Варфоломеев 0

В проекте реализован нормально пока только 3 курс, я боюсь, что просто путаница у вас получится(
Насчет этого я там скрин в архиве загрузила

Добавлено через 1 минуту
Я думаю что он каждую запись из одного Грида сравнивает со всеми записями из другого, а мне нужно что-бы он сравнивал попарно.
Ну к примеру думала как. Абрамова в одной форме есть на другой нет значит вывод, но с 0, Варфоломеев есть и в одной и в другой форме, значит вывод, но с 600
0
61 / 50 / 12
Регистрация: 25.01.2010
Сообщений: 255
21.06.2014, 12:29 35
недостаточно информации
0
260 / 192 / 60
Регистрация: 12.05.2013
Сообщений: 857
21.06.2014, 12:58 36
samsebe, изучайте. на второй странице был
https://www.cyberforum.ru/post6344065.html
0
61 / 50 / 12
Регистрация: 25.01.2010
Сообщений: 255
21.06.2014, 13:14 37
demon_7, предлагаете по этому коду восстановить проект?
0
1 / 1 / 0
Регистрация: 18.06.2014
Сообщений: 29
21.06.2014, 14:09  [ТС] 38
Вот мой проект, нормально более или менее отлажен только 3 курс, за остальные пока не бралась т.к. демонстрировать работоспособность программы буду именно по 3 курсу, есть баги при запуске их причины я не знаю, но просто тыкаю дальше на запуск и все работает
Вложения
Тип файла: 7z Работка.7z (388.6 Кб, 4 просмотров)
0
1 / 1 / 0
Регистрация: 18.06.2014
Сообщений: 29
21.06.2014, 21:38  [ТС] 39
Простите что надоедаю, но просто сама не могу найти ошибку( сегодня даже одногрупника привлекла мы не знали что делать уже чудили писали код, что если есть повторяющиеся строки, как это у меня и получается, чтобы прога их удаляла, но даже так не получилось(
0
260 / 192 / 60
Регистрация: 12.05.2013
Сообщений: 857
21.06.2014, 22:35 40
напишите заново весь проект :3
0
21.06.2014, 22:35
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.06.2014, 22:35
Помогаю со студенческими работами здесь

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru