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

ввод с клавиатуры данных в массив - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 64, средняя оценка - 4.78
nurik_6
0 / 0 / 0
Регистрация: 22.05.2010
Сообщений: 5
14.06.2010, 21:14     ввод с клавиатуры данных в массив #1
Написать программу выполняющую след. действия:
-ввод с клавиатуры данных в массив состоящий из 10-ти структур типа Worker( с полями:1)ФИО 2)Должность 3)Год поступления на работу), причем записи должны быть размещены по алфавиту.
Вывод на дисплей фамилий работников,чей стаж работы в организации превышает значение введенное с клавиатуры. Если таких работников нет, то вывести на экран соответствующее значение.

P.S. Я студент. Пожалуйста если не сложно прокомментируйте процесс сортировки по алфавиту. Вообще если вы мне подскажете алгоритм сортировки по алфавиту, то задачу решать НЕ НАДО !
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Sanu0074
 Аватар для Sanu0074
58 / 58 / 2
Регистрация: 14.06.2010
Сообщений: 1,186
Записей в блоге: 5
15.06.2010, 17:23     ввод с клавиатуры данных в массив #2
Цитата Сообщение от nurik_6 Посмотреть сообщение
Написать программу выполняющую след. действия:
-ввод с клавиатуры данных в массив состоящий из 10-ти структур типа Worker( с полями:1)ФИО 2)Должность 3)Год поступления на работу), причем записи должны быть размещены по алфавиту.
Вывод на дисплей фамилий работников,чей стаж работы в организации превышает значение введенное с клавиатуры. Если таких работников нет, то вывести на экран соответствующее значение.

P.S. Я студент. Пожалуйста если не сложно прокомментируйте процесс сортировки по алфавиту. Вообще если вы мне подскажете алгоритм сортировки по алфавиту, то задачу решать НЕ НАДО !
могу сделать, тебе на когда надо?
Mur3ik
102 / 102 / 4
Регистрация: 12.05.2010
Сообщений: 232
15.06.2010, 17:26     ввод с клавиатуры данных в массив #3
вот пример сортировки по имени в алфавитном порядке
тут полный пример программы
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
void sortname(videoshop *&uk, int &n)
{
    videoshop tmp;
    for(int j=0; j<n; j++)
    {
        for(int i=0; i<n-1; i++)
        {
            if(strcmp(uk[i].name, uk[i+1].name)>0)
            {
                tmp = uk[i];
                uk[i] = uk[i+1];
                uk[i+1] = tmp;
            }
        }
    }
}
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9373 / 5423 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
15.06.2010, 18:30     ввод с клавиатуры данных в массив #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
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;
}
nurik_6
0 / 0 / 0
Регистрация: 22.05.2010
Сообщений: 5
15.06.2010, 19:48  [ТС]     ввод с клавиатуры данных в массив #5
Цитата Сообщение от Sanu0074 Посмотреть сообщение
могу сделать, тебе на когда надо?
Мне бы до 18-го числа.

Добавлено через 39 секунд
Классы использоваться не должны. Структура как на си.

Добавлено через 4 минуты
Есть ещё одно ограничение пользоваться директивами можно только:
C++
1
2
3
4
5
#Include <conio.h>
#include<stdio.h>
#include<iostream.h>
#include<math.h>
#include<stdlib.h>
Sanu0074
 Аватар для Sanu0074
58 / 58 / 2
Регистрация: 14.06.2010
Сообщений: 1,186
Записей в блоге: 5
16.06.2010, 19:52     ввод с клавиатуры данных в массив #6
Цитата Сообщение от nurik_6 Посмотреть сообщение
Мне бы до 18-го числа.

Добавлено через 39 секунд
Классы использоваться не должны. Структура как на си.

Добавлено через 4 минуты
Есть ещё одно ограничение пользоваться директивами можно только:
C++
1
2
3
4
5
#Include <conio.h>
#include<stdio.h>
#include<iostream.h>
#include<math.h>
#include<stdlib.h>
безбазара, завтра сделаю, тут то работы 10мин, просто ща некогда, завтра будя тебе прога
nurik_6
0 / 0 / 0
Регистрация: 22.05.2010
Сообщений: 5
16.06.2010, 21:22  [ТС]     ввод с клавиатуры данных в массив #7
Цитата Сообщение от Sanu0074 Посмотреть сообщение
безбазара, завтра сделаю, тут то работы 10мин, просто ща некогда, завтра будя тебе прога
Окей, жду !
Sanu0074
 Аватар для Sanu0074
58 / 58 / 2
Регистрация: 14.06.2010
Сообщений: 1,186
Записей в блоге: 5
17.06.2010, 14:30     ввод с клавиатуры данных в массив #8
Цитата Сообщение от nurik_6 Посмотреть сообщение
Окей, жду !
обьясняю:
- #include <windows.h> - это для того чтоб работало "SetConsoleOutputCP(1251);" т.е. выводильсь на экран русские символы, можеш удалить, но тогда поменяй то что написано русскими буквами на латинские;
- накидал на быструю руку, создай на форуме тему, напиши задание, скинь код, напиши чтоб умные програмисты подкоректировали вывод и сделали его в алфавитном порядке, просто у меня щас нету с собой моей любимой книжки, я забыл как делать сортировку по алфавиту, вроде нужна функция strcmp(stroka1,stroka2) - и она равна -1 если первая строка раньше по алфавиту, 0 - если одинаковые, 1 - если вторая строка по алфавиту идет раньше. вроде так, просто без книжки немогу.......кароч чем смог тем помог....

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
#include <iostream>
#include <windows.h>
using namespace std;
 
struct Worker
{
    char name[60];
    char fam[60];
    char sname[60];
    char pos[60];
    int year;
 
    void vvod()
    {
        cout<<"Введите данные о 10ти работниках:"<<endl;
 
        for(int i=1; i<=10; i++)
        {
            cout<<endl<<"Заполняйте данные о "<<i<<"м работнике: "<<endl<<endl;
        cout<<endl<<"Введите Имя: ";
        cin>>name;
        cout<<endl<<"Введите Фамилию: ";
        cin>>fam;
        cout<<endl<<"Введите Отчество: ";
        cin>>sname;
        cout<<endl<<"Введите должность: ";
        cin>>pos;
        cout<<endl<<"Введите год пост.на работу: ";
        cin>>year;
        }
    }
    
    void vivod()
    {
    int Ryear=2010;
    int stage=0;
    int ras=0;
        cout<<endl<<"Введите стаж: ";
        cin>>stage;
    for(int i=1; i<=10; i++, ras=0)
        {
        ras=Ryear-year;
        if(stage>ras)
        cout<<"Имя: "<<name<<endl;
        cout<<"Фамилия: "<<fam<<endl;
        cout<<"Отчество: "<<sname<<endl;
        cout<<"Должность: "<<pos<<endl;
        cout<<"Год пост.на работу: "<<year<<endl;
        }
    }
};
 
int main()
{
    SetConsoleOutputCP(1251);
 
    Worker x;
 
    x.vvod();
    x.vivod();
    
}
p.s.
кинь ссылку если будеш создавать тему, мне интересно, зайду взгляну.....
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9373 / 5423 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
17.06.2010, 14:56     ввод с клавиатуры данных в массив #9
Цитата Сообщение от Sanu0074 Посмотреть сообщение
создай на форуме тему, напиши задание...
А чем эта тема не устраивает? С какой целью плодить темы про одно и то же?
nurik_6
0 / 0 / 0
Регистрация: 22.05.2010
Сообщений: 5
17.06.2010, 20:02  [ТС]     ввод с клавиатуры данных в массив #10
И на этом спасибо. Завтра сдавать.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.06.2010, 14:16     ввод с клавиатуры данных в массив
Еще ссылки по теме:

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

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

Или воспользуйтесь поиском по форуму:
Sanu0074
 Аватар для Sanu0074
58 / 58 / 2
Регистрация: 14.06.2010
Сообщений: 1,186
Записей в блоге: 5
18.06.2010, 14:16     ввод с клавиатуры данных в массив #11
Цитата Сообщение от nurik_6 Посмотреть сообщение
И на этом спасибо. Завтра сдавать.
та незачто, если что обращайся, жми на кнопку +1Спс))))
Yandex
Объявления
18.06.2010, 14:16     ввод с клавиатуры данных в массив
Ответ Создать тему
Опции темы

Текущее время: 09:58. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru