Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Помогите найти ошибку: из таблиц СОТРУДНИКИ и ОТДЕЛЫ составить третью - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Подскажите легкий GUI для C++ http://www.cyberforum.ru/cpp-beginners/thread1184612.html
Привет, уже второй день ищу легкую библиотеку для GUI, но ни как не могу найти что нибудь нормальное. Qt не подходит так как он большой для маленькой программы. WinApi надоел уже=) Может кто-то...
C++ Определить суммы заданных элементов массива. Кто поможет, буду благодарен Нужно решение 12. Задан массив D. Определить следующие суммы: D + D + D; D +D +D; D + D + D. http://www.cyberforum.ru/cpp-beginners/thread1184604.html
Стек C++
Разработать программу, реализующую алгоритм стека (20 элементов). Задача решается в двух вариантах: статическом (на основе массива структур) и динамическом. В качестве элемента стека выбрать...
C++ Треугольник задан величинами своих углов и радиусом вписанной окружности. Найти стороны треугольника
Удалите эту тему, пожалуйста, такая уже есть, я сначала просто не нашёл её. Заранее спасибо.
C++ Почему не работает MIN ? http://www.cyberforum.ru/cpp-beginners/thread1184593.html
#include<iostream> using namespace std; int main(){ setlocale(0,""); int i, massiv;
C++ Как написать такой код в си++? Здравствуйте! Как написать такой код в си++? program ch; var a,b,c:integer; begin read(a,b,c); if a < b then a:=b; if a > c then write(a) подробнее

Показать сообщение отдельно
Насютка
0 / 0 / 0
Регистрация: 27.02.2014
Сообщений: 36

Помогите найти ошибку: из таблиц СОТРУДНИКИ и ОТДЕЛЫ составить третью - C++

22.05.2014, 12:49. Просмотров 233. Ответов 1
Метки (Все метки)

ПОДСКАЖИТЕ, пожалуйста, почему количество сотрудников(count) считает неправильно?
(задание: Заданы две таблицы: СОТРУДНИКИ и ОТДЕЛЫ. Составить программу, которая
строит новую таблицу, включающую номер, фамилию и зарплату сотрудника, номер отдела,
название отдела и количество сотрудников в отделе. Строки результирующей таблицы
строятся как всевозможные сцепления строк исходных таблиц.)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
#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);
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru