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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.04.2015, 15:53   #1
trust_no1
Новичок
Джуниор
 
Регистрация: 12.04.2015
Сообщений: 1
По умолчанию Oшибка с созданием массива из значений StringGrid(Задача о рюкзаке.Метод днамического программирования.C++ BUILDER)

Уважаемые программисты, помогите, пожалуйста, новичку разобраться!
У меня есть StringGrid, пользователь вбивает туда данные, данные из первого столбца записываются в массив v[i] , из второго в p[i]. Массивы типа int. Проблема в том, что компонент StringGrid содержит двумерные массивы, я пытаюсь превратить в одномерный, ничего не получается
Код:
{      // array v , array p

       int i;
        for(i=0; i<100; i++) {
        try{
       v[i] = StrToInt(StringGrid1->Cells[0][i]);
       p[i] = StrToInt(StringGrid1->Cells[1][i]);
       }
           catch ( ... ){
              v[i] = 0;
              p[i] = 0;
     }
     }
Ошибка: EconvertError:..."is not a valid integer value"

Весь код задачи
Код:
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
#include "Unit2.h"
#include <algorithm>
#include <iostream>
#include <functional>
using namespace std;

//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
#define MAXWEIGHT 100

int a[MAXWEIGHT];
int last_added[MAXWEIGHT];      // computing added subject
int i, j;
int aux;
int v[100];     // weight
int p[100];     // price
int n=0;        // quantity
int W;          // knapsackWeight
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
        Form1->Memo2->Clear();
        Form1->Memo4->Clear();
        Form1->Memo3->Clear();
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)
{
        AnsiString buffer,st;


        {       // put Knapsack Weight

                st = Edit3->Text;
                W = StrToInt(st);
        }
               {      // array v , array p

       int i;
        for(i=0; i<100; i++) {
        try{
       v[i] = StrToInt(StringGrid1->Cells[0][i]);
       p[i] = StrToInt(StringGrid1->Cells[1][i]);
       }
           catch ( ... ){
              v[i] = 0;
              p[i] = 0;
     }
     }
}
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button2Click(TObject *Sender)
{

	for (i = 0; i <= W; ++i)
        {
		a[i] = 0;
		last_added[i] = -1;
	}

	a[0] = 0;

	for (i = 1; i <= W; ++i)        // dynamic programming
		for (j = 0; j < n; ++j)
			if ((v[j] <= i) && (a[i] < a[i - v[j]] + p[j])) {
				a[i] = a[i - v[j]] + p[j];
				last_added[i] = j;
			}

	aux = W;

	while ((aux > 0) && (last_added[aux] != -1))    // 
        {
	        Form1->Memo2->Lines->Add(last_added[aux] + 1);  // subjects numbers
                Form1->Memo3->Lines->Add(p[last_added[aux]]);   // value for each number
                Form1->Memo4->Lines->Add(v[last_added[aux]]);   // weight for each number

		aux -= v[last_added[aux]];
	}
        Form1->Edit4->Text=(aux - v[last_added[aux]]); // free place
        Edit5->Text=(a[W]);     // total value
}
//---------------------------------------------------------------------------

void __fastcall TForm1::N1Click(TObject *Sender)
{
        Form2->Show();
}
//---------------------------------------------------------------------------

void __fastcall TForm1::N2Click(TObject *Sender)
{
        Form1->Close();
}
Изображения
Тип файла: png интерфейс.png (13.0 Кб, 70 просмотров)
trust_no1 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача о рюкзаке Bugrimov Общие вопросы C/C++ 4 19.04.2014 05:10
Задача о рюкзаке. Lucid Visual C++ 2 08.11.2011 20:04
Задача о Рюкзаке. Lucid Помощь студентам 0 07.11.2011 09:34
Задача о рюкзаке VadEr Помощь студентам 6 16.09.2011 20:44
Вычисление массива значений функции(С++Builder ) mathe Помощь студентам 0 27.04.2009 08:57