Форум программистов
 
О проблемах с регистрацией пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль.

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

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


Ответ
 
Опции темы
Старый 09.12.2008, 21:17   #1
conqueror
Пользователь
 
Регистрация: 15.01.2008
Сообщений: 31
Восклицание Задачи со сложной структурой данных [C++ Builder]

Помогите решить задачу

По результатам обследования предприятий выяснить процентное выполнение плана по персоналу. Для каждого предприятия известно: наименование предприятия, фактическая численность персонала (промышленного и непромышленного) и плановая численность всего персонала. Число предприятий не более 30. Результаты распечатать в виде таблицы:

Указания: Заполнить исходную таблицу и сортировать ее по уменьшению значений второго столбца. После этого в цикле, пока не откажется поль-зователь
• запрашивать нижнюю границу процента выполнения плана по персона-лу,
• копировать из исходной в рабочую таблицу строки с процентом выпол-нения плана по персоналу, большим заданного,
• выявлять предприятие с наименьшей долей непромышленного персо-нала и запоминать его наименование,
• выдавать сведения о предприятиях.


Какие-то наработки уже есть:
Код:
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop
#include "math.h"
#include "stdio.h"
#include "string.h"
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------



void __fastcall TForm1::FormCreate(TObject *Sender)
{
StringGrid1->Cells[0][0]="¹";
StringGrid1->Cells[0][1]="ï/ï";
StringGrid1->Cells[1][0]="Íàèìåíîâàíèå";
StringGrid1->Cells[1][1]="Ïðåäïðèÿòèÿ";
StringGrid1->Cells[2][0]="Âñåãî";
StringGrid1->Cells[2][1]="ïåðñîíàëà ïî ïëàíó";
StringGrid1->Cells[3][0]="Ôàêòè÷åñêè Ïåðñîíàëà";
StringGrid1->Cells[3][1]="Ïðîìûøëåííûé ";

StringGrid1->Cells[4][1]="Íåïðîìûøëåíûé ïåðñîíàëà";
  StringGrid1->Cells[5][0]="Äîëÿ";
  StringGrid1->Cells[5][1]="Íåïðîìûøëåíîãî ïåðñîíàëà";
StringGrid1->Cells[6][0]="Âûïîëíåíèå";
StringGrid1->Cells[6][1]="ïëàíà ïî ïåðñîíàëó";


StringGrid1->ColCount=7;
StringGrid1->RowCount=3;
}
struct TAB
{
char name[20];
int vsego;
int prom;
int nprom;
};
//---------------------------------------------------------------------------

void __fastcall TForm1::N3Click(TObject *Sender)
{
FILE*f; int i,n; TAB x;
if (SaveDialog1->Execute())
{
f=fopen (SaveDialog1->FileName.c_str(),"wb");
if(f==NULL)
{
 ShowMessage("Error open file");
exit(0);
}
n=StringGrid1->RowCount;
for(i=2; i<n; i++)
{
strcpy(x.name, StringGrid1->Cells[1][i].c_str());
x.vsego=StrToInt(StringGrid1->Cells[2][i]);
x.prom=StrToInt(StringGrid1->Cells[3][i]);
x.nprom=StrToInt(StringGrid1->Cells[4][i]);
fwrite(&x,sizeof(x),1,f);
}
fclose(f);
}
}




//---------------------------------------------------------------------------

void __fastcall TForm1::N4Click(TObject *Sender)
{
FILE*f; int i,n; TAB x;
if(OpenDialog1->Execute())
{
f=fopen(OpenDialog1->FileName.c_str(),"rb");
if (f==NULL)
{
ShowMessage("Error to file");
exit(0);
}
i=2;
while(fread(&x,sizeof(x),1,f))
{
StringGrid1->Cells[0][i]=i-1;
StringGrid1->Cells[1][i]=x.name;
StringGrid1->Cells[2][i]=x.vsego;
StringGrid1->Cells[3][i]=x.prom;
StringGrid1->Cells[4][i]=x.nprom;
i++;
}
fclose(f); }
}

//---------------------------------------------------------------------------




void __fastcall TForm1::N5Click(TObject *Sender)
{
float vsego,nprom,prom,dolya,plan;
int n,i;
n=StringGrid1->RowCount;
for(i=2;i<n;i++)
{
nprom=StrToFloat(StringGrid1->Cells[4][i]);
//plan=StrToFloat(StringGrid1->Cells[5][i]);
vsego=StrToFloat(StringGrid1->Cells[2][i]);
prom=StrToFloat(StringGrid1->Cells[3][i]);
dolya=nprom/vsego*100;
StringGrid1->Cells[5][i]=FloatToStrF(dolya,ffFixed,5,2);
plan=(nprom+prom)/vsego*100;
StringGrid1->Cells[6][i]=FloatToStrF(plan,ffFixed,5,2);


}



}

Последний раз редактировалось conqueror; 09.12.2008 в 21:20.
conqueror вне форума Ответить с цитированием
Старый 12.12.2008, 07:55   #2
conqueror
Пользователь
 
Регистрация: 15.01.2008
Сообщений: 31
По умолчанию

Кто-нибудь может помочь?
conqueror вне форума Ответить с цитированием
Старый 21.12.2008, 10:00   #3
conqueror
Пользователь
 
Регистрация: 15.01.2008
Сообщений: 31
По умолчанию

ВВерх! ВВерх!
conqueror вне форума Ответить с цитированием
Старый 24.12.2008, 09:16   #4
conqueror
Пользователь
 
Регистрация: 15.01.2008
Сообщений: 31
По умолчанию

За 2 недели ни одного ответа.
conqueror вне форума Ответить с цитированием
Ответ
Купить рекламу на форуме от 7000 рублей в месяц



Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Решение достаточно сложной задачи... El_Bint0 Помощь студентам 6 11.02.2015 09:15
4 Задачи по С++ Builder Gram Помощь студентам 1 02.12.2008 18:24
Проблемы с динамической структурой данных Mailz Общие вопросы C/C++ 1 20.05.2008 23:18


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS
Скидки на курсы GeekBrains 40%, выбирайте программу для себя