Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 27.02.2014
Сообщений: 36

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

22.05.2014, 12:49. Показов 801. Ответов 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
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
22.05.2014, 12:49
Ответы с готовыми решениями:

Связанные списки Сотрудники,должности,отделы
Здравствуйте! Очень нужна помощь знающих. Есть 4 таблицы: Сотрудники,должности,отделы, паспорта. На форме выведено 2 списка и поля....

Составить из двух одномерных таблиц третью, в которой элементы упорядоченны по возрастанию
Вот собственно и задачи: Каждая программа отдельно. Желательно пузырьком. Заранее спасибо!!!

Помогите составить, из 2 нормальной формы Третью НФ
Помогите не могу разобраться, нужно составить из 2 НФ ---&gt; 3 НФ. 2 НФ ...

1
 Аватар для LordCezis
5 / 5 / 3
Регистрация: 13.05.2012
Сообщений: 71
22.05.2014, 21:49
Без комментариев сложновато читать код

Пока понял только то, что у вас есть изначальные 2 таблицы, заданные в виде структур:
TEmp (Персонал) и TDept (Подразделения)

В основном коде вы присваиваете значения в обе таблицы согласно структурам.
Функция FindDeptNum, возвращает значение DNum равное 4 198 406.
Функция MakeList возвращает значение k = 1 638 232 + в ней считается ваш count
Но выводится в основном коде вовсе не значение count, во всяком случае count не из функции MakeList.
Ибо даже после того, как я закомментил эту строку в MakeList, значение, выводимое строкой printf("%i\n", count), - не изменилось.
Вот только по какой-то причине выводится вовсе не нулевое значение, а count= 852 073 273.

В общем не особо пока что понял ваш код
Не понял, где вызывается MakeList, ведь в main нет вызова, в других функциях тоже не заметил использования.
Так же не понял назначение переменной k в MakeList: зачем её вычислять, если она больше нигде не используется?

Есть предчувствие, что count не получает это значение откуда-то из вычислений, а просто обладает им ещё до присвоения значений в таблицы EmpTable и DeptTable,
ведь если написать так:
int main()

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
int main() {
    int DNum, i,j,count=0;  //обнуляем значение count
    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"}};
    //EmpTable; //C++ Builder XE3 ругается на TEmpTable ошибкой неправильного использования
        
    TStr DeptName;
 
    PrintEmp(EmpTable,NE); //вывод таблицы Персонал
    PrintDept(DeptTable,ND); //вывод таблицы Подразделения
    DNum=FindDeptNum(DeptTable,DeptName);
    printf("%i\n", count); //вывод count
    system("pause");
}

то значение count будет равно 0.

Если можете, то напишите комменты к коду. Всем легче будет вам помочь, да и тем, кто только начал с таблицами и структурами общаться, будет легче изучать язык по вашему произведению
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
22.05.2014, 21:49
Помогаю со студенческими работами здесь

Программа пишет ошибку!! Помогите найти ошибку
Program Summa; var i, N, M: integer; begin Writeln ('Введите значение N:'); Read (N); M:=0; For i:=1 To N ...

Данные двух таблиц в третью
Привет всем. Помогите плизззз) у меня БД Турагенство. Имеется таблица Клиент(Ф.И.О., Возраст, Пол, Ном.удост), и таблица...

Получить из двух таблиц третью
Добрый день. Пишу с нуля интернет магазин на PHP Codeigniter. Учусь. На данном этапе работаю над корзиной пользователя. Пользователь на...

Информацию из двух таблиц скопировать в третью
Подскажите пожалуйста как выбрать и скопировать информацию из двух таблиц в третью, причем из таблиц нужно брать информацию из одного...

Выборка из двух таблиц и копирование информации в третью
Суть: есть 3 таблицы, все они хранятся в access, через delphi нужно сделать выборку из двух таблиц и скопировать информацию из полей в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru