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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.03.2014, 21:09   #1
nmr
Пользователь
 
Регистрация: 14.03.2014
Сообщений: 14
По умолчанию неоднородные таблицы

есть программа,которая из 2х заданных таблиц составляет 3ю.
(так выглядит задание: Заданы таблицы СОТРУДНИКИ и ОТДЕЛЫ. Составить программу, определяющую и
распечатывающую таблицу, которая содержит список сотрудников, работающих в заданном
отделе.) в ней есть ошибка, помогите найти, пожалуйста, и подскажите, как эту программу преобразовать в новую: которая
строит новую таблицу, включающую номер, фамилию и зарплату сотрудника, номер отдела,
название отдела и количество сотрудников в отделе.
Код:
#include "stdafx.h"
#include "stdio.h"
#include <string.h>
#include <iostream>
const int NE=5, ND=3;
typedef char TStr[25];
struct TEmp {
	int ENum;
	TStr EName;
	double ESal;
	int DNum;
};
struct TDept{
	int DNum;
	TStr DName;
};
typedef TEmp TEmpTable[NE];
typedef TDept TDeptTable[ND];
int FindDeptNum(TDeptTable D, TStr DeptName);
int MakeList(TEmpTable Emp,TEmpTable EmpList,int DNum);
void PrintDept(TDeptTable Dept, int ND);
void PrintEmp(TEmpTable Emp,int N);
int main() {
	TEmpTable EmpTable={{21,"Smith", 1030.0,102},{12,"Brosnan",630.0,300},
	{35,"Hackman",1234.5,200},{14,"Clooney",678.9,300},
	{51,"Jason", 1011.1,300}};
	TDeptTable DeptTable={{102,"Economic"},{300,"Office"},{200,"Planning"}};
	TEmpTable EmpList;
	TStr DeptName;
	int DNum,LNum;
	puts("Name of department");
	gets(DeptName);
	PrintEmp(EmpTable,NE);
	PrintDept(DeptTable,ND);
	DNum=FindDeptNum(DeptTable,DeptName);
	if (DNum>=0) {
		LNum=MakeList(EmpTable,EmpList,DNum);
		printf("\n\n");
		printf("Department %s\n",DeptName);
		if (LNum>0)
			PrintEmp(EmpList,LNum);
		else
			printf(" No workers\n");
	}
	else
		printf("No department %s\n",DeptName);
	system("pause");
}

	int FindDeptNum(TDeptTable D,TStr DeptName);
	{
		int i,DNum;
		i=0;
		while (i<ND && strcmp(D[i].DName,DeptName))
			i++;
		if (i==ND)
			DNum=-1;
		else
			DNum=D[i].DNum;
		return DNum;
}
int MakeList(TEmpTable Emp,TEmpTable EmpList,int DNum){
	int i,k;
	k=0;
	for (i=0; i<NE;i++)
		if (Emp[i].DNum==DNum) {
			EmpList[k]=Emp[i];
			k=k+1;
		}
		return k;
}
void PrintDept(TDeptTable Dept, int N){
	int i;
	printf("\n");
	printf("***************************\n");
	printf("* N_dep * DName *\n");
	printf("***************************\n");
	for (i=0;i<N;i++)
		printf("* %4i * %15s *\n",Dept[i].DNum,Dept[i].DName);
}
void PrintEmp(TEmpTable Emp,int N){
	int i;
	printf("\n");
	printf("******************************************\n");
	printf("* N_emp * EName * Salary * N_ dep *\n");
	printf("******************************************\n");
	for (i=0;i<N;i++)
		printf("* %4i * %10s * %8.2f * %4i *\n",Emp[i].ENum,Emp[i].EName,Emp[i].ESal,
		Emp[i].DNum);
}


Заранее спасибо
nmr вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Макрос: заполнение таблицы данными из другой таблицы с автоматическим добавлением строк yevgeniy.demidov Microsoft Office Excel 6 06.09.2012 15:27
Внесение в поле таблицы сумму значений из другой таблицы по условию Сурка SQL, базы данных 2 25.12.2011 17:47
Access ограничить значение поля таблицы значениями полей другой таблицы Сергей089 Microsoft Office Access 10 08.12.2010 02:22
Данные из двух полей исх. таблицы в одно поле сводной таблицы Strelec79 Microsoft Office Excel 2 02.08.2009 13:59