Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/18: Рейтинг темы: голосов - 18, средняя оценка - 4.83
2 / 2 / 0
Регистрация: 06.07.2013
Сообщений: 97
1

Вывод на дисплей фамилий работников, чей стаж работы в организации превышает значение введенное с клавиатуры

21.11.2013, 20:24. Показов 3559. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброе время суток!
Есть код(С++), реализующий:
-ввод с клавиатуры данных в массив состоящий из 10-ти структур типа Worker( с полями:1)ФИО 2)Должность 3)Год поступления на работу), причем записи должны быть размещены по алфавиту.
Вывод на дисплей фамилий работников,чей стаж работы в организации превышает значение введенное с клавиатуры. Если таких работников нет, то вывести на экран соответствующее значение.

Помогите, пожалуйста, сделать тоже самое, только на C#

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
#include <iostream>
#include <algorithm>
#include <string>
#include <ctime>
#include <functional>
#include <set>
#include <iterator>
 
class Worker {
    std::string _name;
    std::string _post;
    int _year;
public:
    Worker() : _name(""), _post(""), _year(0) {}
    Worker(const std::string & name, const std::string & post, int year) : _name(name),
    _post(post), _year(year) {}
    ~Worker() {}
    int year() const { return _year; }
    bool operator < (const Worker & w) const { return _name < w._name; }
    bool operator == (const Worker & w) const { return _name == w._name; }
    friend std::ostream & operator << (std::ostream & ost, const Worker & w) {
        ost << "\nName:\t" << w._name << "\nPost:\t" << w._post << "\nYear:\t" << w._year;
        return ost;
    }
};
 
class FindByStage : public std::unary_function<Worker, bool> {
    int _cur_year;
    int _min_stage;
public:
    FindByStage(int stage) : _min_stage(stage) {
        time_t tt = time(NULL);
        struct tm *pts;
        pts = localtime(&tt);
        _cur_year = pts->tm_year + 1900;
    }
    bool operator () (const Worker & w) {
        return _cur_year - w.year() > _min_stage;
    }
};
 
int main(){
    int num_workers;
    std::multiset<Worker> workers;
    std::string name, post;
    int year;
 
    std::cout << "Number of workers: ";
    std::cin >> num_workers;
    std::cin.get();
    while ( num_workers-- ){
        std::cout << "Name: ";
        std::getline(std::cin, name);
        std::cout << "Post: ";
        std::getline(std::cin, post);
        std::cout << "Year of employment: ";
        std::cin >> year;
        std::cin.get();
        workers.insert(Worker(name, post, year));
    }
 
    std::cout << "Minimum stage: ";
    std::cin >> year;
    FindByStage fbs(year);
    size_t cnt = std::count_if(workers.begin(), workers.end(), fbs);
    if ( ! cnt ) {
        std::cerr << "No workers with stage greater then " << year << std::endl;
        return 1;
    }
    std::cout << "Found " << cnt << " workers:" << std::endl;
    for ( std::multiset<Worker>::const_iterator i = workers.begin(); i != workers.end(); ++i )
        if ( fbs(*i) )
            std::cout << *i << std::endl;
 
    return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.11.2013, 20:24
Ответы с готовыми решениями:

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

Структура Worker: найти работников, чей стаж работы в организации превышает введенное значение
#include &lt;iostream&gt; #include &lt;fstream&gt; #include &lt;string&gt; #include &lt;conio.h&gt; using namespace...

Массивы структур. Найти работников, чей стаж работы в организации превышает заданное значение
Написать программу, выполняющую следующие действия: ввод с клавиатуры данных в массив, состоящий...

Найти работников чей стаж работы превышает заданное значение
Описать структуру с именем WORKER, содержащую следующие ноля: - фамилия и инициалы работника;...

6
660 / 530 / 137
Регистрация: 07.07.2011
Сообщений: 1,232
21.11.2013, 20:29 2
SkyL1ne_tm, там все просто, думаю через часик сделаю...

Добавлено через 1 минуту
Получилось быстрее чем я думал:
Вот код на c#:
C#
1
 
Добавлено через 2 минуты
Другое дело =)
Скажи лучше что программа должна делать?
0
2 / 2 / 0
Регистрация: 06.07.2013
Сообщений: 97
21.11.2013, 20:30  [ТС] 3
Дмитрий3241

случайно отправил не дописав до конца
0
foo();
886 / 587 / 222
Регистрация: 03.07.2013
Сообщений: 1,549
Записей в блоге: 2
21.11.2013, 22:20 4
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
using System;
using System.Linq;
class Program
{
    
    static void Main(string[] args)
    {
        Console.WriteLine("Введите данные для 10-ти работников\n");
        Worker[] data = new Worker[10];
        for (int i = 0; i < 10; i++)
            data[i].Set();
        Console.WriteLine();
        Console.Write("Введите требуемый стаж :");
        int l = int.Parse(Console.ReadLine());
        Worker result = data.Where(a => a.LengthOfWork >= l).OrderBy(a => a.LengthOfWork).First();
        Console.WriteLine("Имя работника : {0}", result.Name);
        Console.ReadKey();
    }
}
struct Worker
{
    public string Name;
    public string Post;
    public int LengthOfWork;
    public Worker Set()
    {
        Console.Write("Введите имя :");
        Name = Console.ReadLine();
        Console.Write("Введите должность :");
        Post = Console.ReadLine();
        Console.Write("Введите стаж (только цифры) :");
        LengthOfWork = int.Parse(Console.ReadLine());
        return this;
    }
}
0
2 / 2 / 0
Регистрация: 06.07.2013
Сообщений: 97
21.11.2013, 22:52  [ТС] 5
rattrapper, можно как-то обойтись без System.Linq?
0
foo();
886 / 587 / 222
Регистрация: 03.07.2013
Сообщений: 1,549
Записей в блоге: 2
21.11.2013, 22:55 6
все можно
C#
1
2
3
4
5
6
7
Worker result = new Worker() { LengthOfWork = int.MinValue };
for (int i = 0; i < 10; i++)
    if (data[i].LengthOfWork >= l &&
        data[i].LengthOfWork >= result.LengthOfWork)
        result = data[i];
Console.WriteLine("Имя работника : {0}", result.Name);
Console.ReadKey();
0
2 / 2 / 0
Регистрация: 06.07.2013
Сообщений: 97
22.11.2013, 00:51  [ТС] 7
Цитата Сообщение от rattrapper Посмотреть сообщение
все можно
C#
1
{ LengthOfWork = int.MinValue };
что это за конструкция?

Добавлено через 1 час 33 минуты
C#
1
Worker result = new Worker() { LengthOfWork = int.MinValue };
ругается на эту строку
0
22.11.2013, 00:51
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.11.2013, 00:51
Помогаю со студенческими работами здесь

Структура WORKER, определить фамилии работников чей стаж превышает заданное значение
1. Описать структуру с именем WORKER, содержащую следующие поля: SALARY – оклад; YEAR – год...

В структуре данных вывести на экран чей стаж работы превышает введенный на консоли
В структуре данных вывести на экран чей стаж работы превышает введенный на консоли. То есть я ввожу...

Вывести список работников, стаж работы которых превышает заданное число лет
Работник: ФИО, должность, стаж, Зарплата. Вывести: а) список работников, стаж работы которых...

Структура Worker, вывести список работников,стаж работы которых превышает заданное число лет
Помогите ,написать программу,пожалуйста! worker: Фамилия и инициалы,должность,год поступления на...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru