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

Вычислить сумму элементов StringGrid

21.04.2020, 15:48. Показов 1415. Ответов 6

Студворк — интернет-сервис помощи студентам
Нужно вычислить сумму элементов однострочного массива StringGrid, расположенных после последнего элемента, равного нулю. Не понимаю, что сделал не так. Вроде должно работать, а нет)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
void __fastcall TForm1::Button2Click(TObject *Sender)
{
int i, j, s=0;
bool e=false;
Label3->Show();
for (i=0; i<n; i++) {
 
if (e==false) {
       for (i=0; i<n; i++) {
 
 
 
       if (StrToInt(StringGrid1->Cells[i][0])==0) {
           e=true;
           for (j=i+1;j<n;j++) {
           if (StrToInt(StringGrid1->Cells[j][0])==0) {
             e=false;
           }
           else e=true;
           }
 
       }
}
 
}
   else s+=StrToInt(StringGrid1->Cells[i][0]);
 
}
           Label3->Caption=s;
}
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
21.04.2020, 15:48
Ответы с готовыми решениями:

StringGrid, вычислить сумму элементов и среднее арифметическое
При введении 5 цифр, программа должна вычислить сумму элементов и арифметическое среднее. Исправьте код плиз... ...

Нужно вычислить сумму конкретных ячеек StringGrid для проверки условия
Мне нужно сделать кнопку на проверку условия введенных данных. Вот что я сделал: void __fastcall TForm1::Button3Click(TObject *Sender)...

Вычислить сумму сумму элементов, попадающих в заданный интервал
Вычислить сумму сумму элементов, попадающих в заданный интервал. Границы интервала передавать в функцию в качестве параметров, полученную...

6
Модератор
 Аватар для D1973
9916 / 6453 / 2455
Регистрация: 21.01.2014
Сообщений: 27,389
Записей в блоге: 3
21.04.2020, 15:57
Цитата Сообщение от EugeneLaCoste Посмотреть сообщение
Не понимаю, что сделал не так
Да, как бы, все не так... В задании как сказано? После последнего элемента, равного нулю... Вот и идите от конца к началу и проверяйте элементы на равенство нулю. Не ноль - прибавили к значению суммы, ноль - закончили и показали сумму на экране...
1
0 / 0 / 0
Регистрация: 20.11.2019
Сообщений: 16
21.04.2020, 16:19  [ТС]
Спасибо, понял в каком направлении думать. Но теперь не выходит так) Понимаю, что где то ошибся, но где, помогите пж. Выводит 0 в любом случае
C++
1
2
3
4
5
6
7
8
9
10
11
12
void __fastcall TForm1::Button2Click(TObject *Sender)
{
int i, s=0;
Label3->Show();
for (i=n-1; i<=0; i--) {
     if(StringGrid1->Cells[i][0]==0){
       break;
     }
     else s+=StrToInt(StringGrid1->Cells[i][0]);
}
           Label3->Caption=s;
}
0
Модератор
 Аватар для D1973
9916 / 6453 / 2455
Регистрация: 21.01.2014
Сообщений: 27,389
Записей в блоге: 3
21.04.2020, 16:39
Я не вижу, где переменная n объявлена и инициализирована...

Добавлено через 1 минуту
Цитата Сообщение от EugeneLaCoste Посмотреть сообщение
StringGrid1->Cells[i][0]==0
Красное - строка! Синее - число! Как Вы их сравниваете?
1
0 / 0 / 0
Регистрация: 20.11.2019
Сообщений: 16
21.04.2020, 16:40  [ТС]
Вне функции кнопки.
Вот весь код

Кликните здесь для просмотра всего текста

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
//---------------------------------------------------------------------------
 
#include <vcl.h>
#pragma hdrstop
 
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
}
//---------------------------------------------------------------------------
int n=4;
void __fastcall TForm1::FormCreate(TObject *Sender)
{
 
randomize(); // Изменение начального адреса для random()
Edit1->Text=IntToStr(n);
StringGrid1->ColCount=n;
for(int i=0; i<n;i++) // Заполнение массива А случайными числами
StringGrid1->Cells[i][0] = IntToStr(random(21)-10);
Label3->Hide(); // Скрыть компоненту
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
n=StrToInt(Edit1->Text);
if(n>10){
ShowMessage("Максимальное количество 10!");
n=10;
Edit1->Text = "10";
}
StringGrid1->ColCount=n;
for(int i=0; i<n;i++)
StringGrid1->Cells[i][0]=IntToStr(random(21)-10);
Label3->Hide();
 
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::Button2Click(TObject *Sender)
{
int i, s=0;
Label3->Show();
for (i=n-1; i<=0; i--) {
     if(StrToInt(StringGrid1->Cells[i][0])==0){
       break;
     }
     else s+=StrToInt(StringGrid1->Cells[i][0]);
}
           Label3->Caption=s;
}
 
//---------------------------------------------------------------------------
0
Модератор
 Аватар для D1973
9916 / 6453 / 2455
Регистрация: 21.01.2014
Сообщений: 27,389
Записей в блоге: 3
21.04.2020, 17:02
Лучший ответ Сообщение было отмечено EugeneLaCoste как решение

Решение

Ошибка очевидная - цикл не выполняется ни разу
for (i=n-1; i<=0; i--)
и вот тут тоже косяк получите:
C++
1
Label3->Caption=s;
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
void __fastcall TForm1::Button1Click(TObject *Sender)
{
   Label1->Visible = true;
   int Summ = 0;
   for(int i = StringGrid1->ColCount - 1; i >= 0; i--)
     {
        int k = StrToInt(StringGrid1->Cells[i][0]);
        if(k == 0) break; else Summ += k;
     }
   Label1->Caption = IntToStr(Summ);
}
1
0 / 0 / 0
Регистрация: 20.11.2019
Сообщений: 16
21.04.2020, 17:10  [ТС]
Благодарю, работает.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
21.04.2020, 17:10
Помогаю со студенческими работами здесь

Вычислить в одномерном массиве вычислить сумму элементов массива...
В одномерном массиве, состоящем из 10 целых элементов, вычислить сумму элементов массива, расположенных между первым и последними...

Вычислить сумму элементов массива, находящихся до минимального и после максимального элементов
Помогите пожалуйста написать программу на языке С++ по заданному условию: Вычислить сумму элементов вещественного массива, находящихся до...

Вычислить сумму чётных элементов и произведение первых 3-х нечетных элементов вектора
составить программу для вычисления Q=S/L, где S- сумма всех чётных элементов вектора X ; L- произведение первых 3-х нечетных элементов...

В одновременном массиве состоящем из N вещественных элементов вычислить сумму отрицательных элементов
В одновременном массиве состоящем из N вещественных элементов вычислить сумму отрицательных элементов

Вычислить среднее арифметическое, сумму элементов и количество элементов заданной последовательности
Ваести значения для Х. Значения Х&gt;0 , поэтому для окончания вычисления ввести число 0. Вычислить сумму всех значении Х и количество Х....


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru