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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.11.2011, 21:15   #1
Lik_m
Новичок
Джуниор
 
Регистрация: 29.11.2011
Сообщений: 3
По умолчанию переделать из дэлфи в си

задача такая :7. Шериф округа Вашингтон принимает участие в переизбрании на следующий срок. Денежные средства на предвыборную кампанию составляют примерно 10000 долларов. Хотя комитет по переизбранию хотел бы провести кампанию во всех пяти избирательных участках округа, ограниченность денежных средств предпи¬сывает действовать по-другому. Приведенная ниже таблица содержит данные о числе избирателей и денежных средствах, необходимых для проведения успешной кампании по каждому избирательному участку. Каждый участок может либо ис¬пользовать все предназначенные деньги, либо вовсе их не использовать. Как сле¬дует распределить денежные средства?

цены участков в коде


выбивает разные результаты,правильный 9200 на дэлфи,что делаю не так?
На делфи :
Код:
 unit Unit1;

 interface

 uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, Grids, StdCtrls, math, XPMan;

 type
 TForm1 = class(TForm)
 StringGrid1: TStringGrid;
 Button2: TButton;
 Button3: TButton;
 Memo1: TMemo;
 XPManifest1: TXPManifest;
 procedure FormCreate(Sender: TObject);
 procedure Button3Click(Sender: TObject);
 procedure Button2Click(Sender: TObject);
 private
 { Private declarations }
 public
 { Public declarations }
 end;

 var
 Form1: TForm1;
 w:array[1..5] of integer = (3100,2600,3500,2800,2400);
 R:array[1..5] of integer = (3500,2500,4000,3000,2000);
 IC:array[1..5] of integer;
 i,j,rez,rezd,lud,ludd:integer;
 bi,bid:array[1..5] of integer;
 implementation

 {$R *.dfm}
 procedure TForm1.FormCreate(Sender: TObject);
 begin
 stringgrid1.Cells[0,0]:='i';
 stringgrid1.Cells[1,0]:='w';
 stringgrid1.Cells[2,0]:='r';
 for i:=1 to 5 do begin
 stringgrid1.Cells[0,i]:=inttostr(i);
 stringgrid1.Cells[1,i]:=inttostr(w[i]);
 stringgrid1.Cells[2,i]:=inttostr(r[i]);
 end;
 end;

 procedure bin(ii:integer);
 begin
 for j:=5 downto 1 do begin
 bi[j]:=ii mod 2;
 ii:=ii div 2;
 end;
 end;

 procedure TForm1.Button3Click(Sender: TObject);
 begin
 memo1.Clear;
 rez:=0;
 rezd:=0;
 ludd:=0;
 fillchar(bid,sizeof(bid),0);
 for i:=1 to 32 do begin
 bin(i);
 rez:=bi[1]*r[1]+bi[2]*r[2]+bi[3]*r[3]+bi[4]*r[4]+bi[5]*r[5];
 lud:=w[1]*bi[1]+w[2]*bi[2]+bi[3]*w[3]+bi[4]*w[4]+bi[5]*w[5];
 if (rez<=10000)and(lud>ludd) then
 begin
 rezd:=rez;
 bid:=bi;
 ludd:=lud;
 end;
 end;
 memo1.Lines.Add(inttostr(ludd));
 for i:=1 to 5 do
 memo1.Lines.Add(inttostr(bid[i]));
 end;

 procedure TForm1.Button2Click(Sender: TObject);
 begin
 application.Terminate;
 end;

 end.
НА си:
Код:
 //---------------------------------------------------------------------------

 #include <vcl.h>
 #pragma hdrstop

 #include "Unit1.h"
 //---------------------------------------------------------------------------
 #pragma package(smart_init)
 #pragma resource "*.dfm"
 TForm1 *Form1;
 int w[5] = {3100,2600,3500,2800,2400};
 int R[5] = {3500,2500,4000,3000,2000};
 int IC[5];
 int bi[5];
 int bid[5]={0,0,0,0,0};
 int ludd=0;

 //---------------------------------------------------------------------------
 __fastcall TForm1::TForm1(TComponent* Owner)
 : TForm(Owner)
 {
 }
 //---------------------------------------------------------------------------

 void __fastcall TForm1::FormCreate(TObject *Sender)
 {
 StringGrid1->Cells[0][0] = 'i';
 StringGrid1->Cells[1][0] = 'w';
 StringGrid1->Cells[2][0] = 'r';
 for (int i=0;i<2;i++)
 {
 StringGrid1->Cells[0][i+1] = IntToStr(i+1);
 StringGrid1->Cells[1][i+1] = IntToStr(w[i]);
 StringGrid1->Cells[2][i+1] = IntToStr(R[i]);
 }
 }
 //---------------------------------------------------------------------------
 void bin(int ii)
 {
 for (int j=5;j>0;j--)
 {
 bi[j] =ii % 2;
 ii = ii / 2;
 }
 }
 void __fastcall TForm1::Button1Click(TObject *Sender)
 {
 Memo1->Clear();
 int rez =0;
 int rezd =0;
 int ludd =0;


 for (int i=0;i<=31;i++)
 {
 bin(i);
 int rez;
 int lud;

 int rezd=0;
 rez=bi[0]*R[0]+bi[1]*R[1]+bi[2]*R[2]+bi[3]*R[3]+bi[4]*R[4];
 lud=w[0]*bi[0]+w[1]*bi[1]+bi[2]*w[2]+bi[3]*w[3]+bi[4]*w[4];
 if (rez<=10000)(lud>ludd);
 {
 rezd = rez;
 for (int i=0;i<5;i++)
 {
 bid[i] = bi[i];
 }
 ludd = lud;
 }

 }
 Memo1->Lines->Add(IntToStr(ludd));
 for (int i=0;i<5;i++)
 {
 Memo1->Lines->Add(IntToStr(bid[i]));
 }
 }
 //---------------------------------------------------------------------------

Последний раз редактировалось Stilet; 29.11.2011 в 21:59.
Lik_m вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
переделать из дэлфи в си Lik_m Помощь студентам 1 29.11.2011 18:10
Дэлфи массивы Sonny01 Помощь студентам 4 14.03.2010 19:33
Antidebug Дэлфи wasili Win Api 5 04.03.2010 11:03
Задача в дэлфи shadow55 Помощь студентам 4 08.01.2010 00:35
Дэлфи массив Sonny01 Помощь студентам 1 04.12.2009 23:35