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

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

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

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

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

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

(задание: Заданы две таблицы: СОТРУДНИКИ и ОТДЕЛЫ. Составить программу, которая
строит новую таблицу, включающую номер, фамилию и зарплату сотрудника, номер отдела,
название отдела и количество сотрудников в отделе. Строки результирующей таблицы
строятся как всевозможные сцепления строк исходных таблиц.)

ПОДСКАЖИТЕ, пожалуйста, почему количество сотрудников(count) считает неправильно?
Код:
#define _CRT_SECURE_NO_WARNINGS
#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;
	TStr DeptName;
	int DNum, i,j,count;
	PrintEmp(EmpTable,NE);
	PrintDept(DeptTable,ND);
	DNum=FindDeptNum(DeptTable,DeptName);
	printf("%d\n", count);
	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, TDeptTable Dept, int ND, TDeptTable D, TStr DeptName){
	int j,i,k, count;
	
		count=0;
		for (i=0; i<ND; i++){
			for (j=0; j<NE; j++){
				if (Dept[i].DNum == Emp[j].DNum)
					count++;
				printf("%i\n", count);
			}
			}
	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, count;
	printf("\n");
	printf("***************************\n");
	printf("* N_dep * DName * count *\n");
	printf("***************************\n");
	for (i=0;i<N;i++)
		printf("* %4i * %15s *%d *\n",Dept[i].DNum,Dept[i].DName,count );
}
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 тыс руб за месяц



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