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

Создать структуру с именем Sotrudnik

18.03.2012, 15:29. Показов 3010. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день. Не знаю как сделать задачу. Помогите кто чем может.

Создать структуру с именем Sotrudnik с полями: фамилия, имя, должность, год поступления на работу. Сформировать двусвязный список. Удалить из списка тех сотрудников, кто работает менее 3-х лет. Вывести измененный список.

Структуру создать, создал, а вот как дальше не знаю
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
18.03.2012, 15:29
Ответы с готовыми решениями:

Создать структуру с именем MyStruct
Создать структуру с именем MyStruct, состоящим из двух полей: field1 и field2 -масив с 20 однобайтовых слов. Объявить структурную...

Создать структуру с именем Student с полями
Не знаю даже примерно как нужно сделать, не шарю. Отчет надо сдать (( Создать структуру с именем Student с полями: фамилия, имя, номер...

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

7
0 / 0 / 1
Регистрация: 15.04.2011
Сообщений: 33
18.03.2012, 18:01
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
#include <iostream>
#include <fstream>
 
using namespace std;
 
struct Sotrudnik{
    char name[20] ;
    char surname[20];
    char job[20];
    int year;
 
    Sotrudnik *prevS;
    Sotrudnik *nextS;
};
 
int main(){
    fstream f;
    f.open("in.txt");
    int count;
    f>>count;
    Sotrudnik *top = NULL;
    Sotrudnik *Ab;
    for (int i = 0; i < count; i++){
        Ab = new Sotrudnik;
        f>>Ab->name;
        f>>Ab->surname;
        f>>Ab->job;
        f>>Ab->year;
        if (top) top->nextS = Ab;
        Ab->prevS = top;
        top = Ab;
    }
    top->nextS = NULL;  //следующего не будет
    for (int i = 0; i < count; i++){//пробегаем всех
        if (top->year<2009){
            (top->prevS)->nextS = top->nextS;
        }
        top = top->prevS;
    }
    f.close();
    return 0;
}
как-то вот так
0
0 / 0 / 0
Регистрация: 17.12.2011
Сообщений: 13
18.03.2012, 18:18  [ТС]
А если вручную набирать не известное количество сотрудников?
0
0 / 0 / 1
Регистрация: 15.04.2011
Сообщений: 33
18.03.2012, 18:42
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
#include <iostream>
#include <string>
 
using namespace std;
 
struct Sotrudnik{
    string name ;
    string surname;
    string job;
    int year;
 
    Sotrudnik *prevS;
    Sotrudnik *nextS;
};
 
int main(){
    Sotrudnik *top = NULL;
    Sotrudnik *Ab;
    string t;
    while (cout << endl << "enter name" && cin>>t && t != "exit"){
        Ab = new Sotrudnik;
        (Ab -> name) = t;
        cout << "enter surname"<< endl;
        cin >> Ab -> surname;
        cout << "enter job" << endl;
        cin >> Ab -> job;
        cout << "enter year" << endl;
        cin >> Ab -> year;
        if (top) top -> nextS = Ab;
        Ab -> prevS = top;
        top = Ab;
    }
    top->nextS = NULL; 
 
    while(top->prevS){
        //
        cout << top -> year;
        if (top -> year < 2009){
            (top -> prevS)->nextS = top -> nextS;
        } else cout << top ->name;
        top = top -> prevS;
    }
    return 0;
}
вручную как-то так.

p.s. Да, while "прекрасен"
0
3 / 3 / 0
Регистрация: 08.02.2012
Сообщений: 17
20.03.2012, 11:14
Я понимаю ему самому нужно реализовать двух связный список, а не std использовать???Реализацию списка можешь здесь скачать http://algorithmlib.org/doubly_linked_list там все необходимые функции есть
0
0 / 0 / 0
Регистрация: 17.12.2011
Сообщений: 13
20.03.2012, 20:08  [ТС]
Цитата Сообщение от vanomux Посмотреть сообщение
Я понимаю ему самому нужно реализовать двух связный список, а не std использовать???Реализацию списка можешь здесь скачать http://algorithmlib.org/doubly_linked_list там все необходимые функции есть
Спасибо. Хорошая статейка. Но я уже без нее сделал.
0
0 / 0 / 0
Регистрация: 17.12.2011
Сообщений: 13
01.04.2012, 12:26  [ТС]
Помогите пожалуйста. У меня в программе что то не работает "Удалить из списка тех сотрудников, кто работает менее 3-х лет. Вывести измененный список."
Не знаю в чем ошибка.
Вот код
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
90
91
92
93
94
95
96
97
98
99
100
101
102
103
#include <iostream>
#include <conio.h>
#include <math.h>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
using namespace std;
int main ()
{
            SetConsoleCP (1251);
            SetConsoleOutputCP (1251);
int n,s;
cout<<"Введите год: ";
cin>>s;
cout<<"Введите количество сотрудников: ";
cin>>n;
struct Sotrudnik
{
    char fam[30];
    char im[10];
    char dol[30];
    int god;
 
    Sotrudnik*next;
    Sotrudnik*prev;
};
 
int i,p=0;
Sotrudnik*sot, *head=0, *tail=0, *current=0, *del=0;
sot=new Sotrudnik[n];
 
for(i=0;i<n;i++)
{
    if(i==0)
    {
        head=new Sotrudnik;
        tail=head;
        head->prev=0;
    }
    else
    {
        tail->next=new Sotrudnik;
        tail->next->prev=tail;
        tail=tail->next;
    }
    cout<<"Введите Фамилию  "<<'\n';
    cin>>tail->fam;
    cout<<"Введите имя \n";
    cin>>tail->im;
    cout<<"Введите должность \n";
    cin>>tail->dol;
    cout<<"Введите год поступления на работу \n";
    cin>>tail->god;
    tail->next=0;
}
 
cout<<"Введённый список \n";
current=head;
while(current!=0)
{cout<<current->fam<<"\t"<<current->im<<"\t"<<current->dol<<"\t"<<current->god<<'\n';
current=current->next;
}
current=head;
while(tail!=0)
{
if((s-current->god)<3)
{
    del=current;
    current=del->prev;
    current->next=del->next;
    delete del;
    current=current->next;
    p=1;
 
}
else
current=current->next;
}
if(p==0)
{
cout<<"В данном списке нет таких!\n";
current=head;
while(current!=0)
{cout<<current->fam<<"\t"<<current->im<<"\t"<<current->dol<<"\t"<<current->god<<'\n';
current=current->next;
}
}
else
{
cout<<"Список без удаления!\n";
current=head;
while(current!=0)
{cout<<current->fam<<"\t"<<current->im<<"\t"<<current->dol<<"\t"<<current->god<<'\n';
current=current->next;
}
}
delete [] sot;  
 
 
getch();
return 0;
}
0
 Аватар для 1071
0 / 0 / 2
Регистрация: 11.03.2014
Сообщений: 8
11.03.2014, 19:28
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
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
#include <conio.h>
#include <Windows.h>
#include <iostream>
 
using namespace std;
//Создать структуру с именем Sotrudnik с полями: 
//фамилия, имя, должность, год поступления на работу.
//Сформировать двусвязный список. Удалить из списка тех сотрудников,
//кто работает менее 3-х лет. Вывести измененный список.
int main()
{   //setlocale(LC_ALL,"Russian");
struct Sotrudnik
{
    char Famil[20];
    char Imya[20];
    char Dolznost[20];
    int god;
 
        Sotrudnik * next, * prev;
        
};
Sotrudnik *head=0;//адрес головы списка
Sotrudnik *tail=0;//адрес хвоста списка     
//head->prev=0;
Sotrudnik *current,*tmp, *tyear;// tyear-работающий меньше 3 лет.
    /*setlocale(LC_ALL,"Russian");
    SetConsoleCP(1251);
SetConsoleOutputCP(1251);   */
char c;
int k;
cout<<"vvesti gaHHble? y/n";
 c=getche();     
 //формирование списка с клавиатуры
 while (c=='y' || c=='Y')  
 {                
if (head) //если не первый элемент списка
 { tail->next=new Sotrudnik;  /* создаем новый элемент и объяв-ляем его следующим для последнего элемента */
 
   tail->next->prev=tail; /* для вновь созданного элемента объявляем текущий последний элемент списка предыдущим */
   tail=tail->next;  /* созданный элемент списка объявляем по-следним */
  current=tail;
  }
else  //если создаем первый элемент списка
  { head=new Sotrudnik; /* созданный элемент объявляем головой списка */
    tail=head;   //он же пока и последний
    head->prev=0;  //у первого элемента нет предыдущего эле-мента
   current=head;
  }
               
 cout<<"\nvvedite gaHHble:\n";
  cout<<"famil:";
  cin>>current->Famil;  
  cout<<"imya:";
  cin>>current->Imya;
  cout<<"dolznost:";
  cin>>current->Dolznost;
  cout<<"god noctyplen:";
  cin>>current->god;
  current->next=0;
  cout<<"vvesti eLLLe gahhble? y/n \n";
  tail->next=0; /* у последнего элемента списка адрес не следующего элемента */
  c=getche();
 
 }
 
 
// current = head;
  current=current->next;
    while(current != 0)
    { 
        Sotrudnik *tmp = 0;
 
        if(2014 - (current -> god) < 3)
        {
            if(current == head)
            {
                tmp = head -> next;
                delete head;
                head = tmp;
                tmp -> prev = 0;
            }
            else if(current == tail)
            {
                tmp = tail -> prev;
                delete current;
                tail = tmp;
                tmp -> next = 0;
            }
            else
            {
                tmp = current -> prev;
                tmp -> next = current -> next;
                delete current;
            }
        }
    }        //удаление
 
current=head;
  while(current!=0)
  {
      cout<<"famil: \t";
     cout<<current->Famil<<"\n";
        cout<<"imya:\t";
     cout<<current->Imya<<"\n";
        cout<<"dolzhnostь: \t";
    cout<<current->Dolznost<<"\n";
      cout<<"god noctyplen: \t";
          cout<<current->god<<"\n";
    current=current->next;
    cout<<"\n";
  }
  
  
 
 system("pause");
  return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
11.03.2014, 19:28
Помогаю со студенческими работами здесь

Создать структуру с именем Train, содержащую следующие поля:
Название пункта назначения; Номер поезда; Время отправления. Написать программу, выполняющую следующие действия: 1) Производить...

Создать структуру с именем STUDENT, содержащую следующие поля:
Описать Структуру с именем STUDENT с полями 1. NAME-фамилия и инициалы; 2.GROUP-номер группы; 3.SES-успеваемость(массив из 5...

Создать структуру с именем Sportsmen и сформировать односвязный список
Ребят,помогите пожалуйста,кто может - написать вот такую программу.... Создать структуру с именем Sportsmen с полями: фамилия, имя, вид...

Создать структуру, которая будет хранить информации о знаке зодиака, с именем Znak
Создать структуру, которая будет хранить информации о знаке зодиака, с именем Znak. Структура Znak должна содержать следующие поля: name...

Описать запись с именем Sotrudnik
1.Описать запись с именем Sotrudnik содержащую следующие поля *фио *стаж работы *возраст *пол 2.Написать программу...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru