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

Поиск по структуре "Сотрудник" - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ строки и динамическая память http://www.cyberforum.ru/cpp-beginners/thread1115444.html
определить количество слов в строке, начинающихся с заданной пары символов. Строка размещается в динамической памяти
C++ Проверка на число которое находится в определленом адресе Привет всем, не буду много писать, сразу перейду к сути дела: Мне надо сделать так, чтобы программа проверяла число по определенному адресу ( там числа формата float ). Допустим в адресе число... http://www.cyberforum.ru/cpp-beginners/thread1115437.html
C++ Создать функцию, подсчитывающую по заданным сторонам треугольника величины его углов
Привет, помогите составить программу. Создать функцию, подсчитывающую по заданным сторонам треугольника величины его углов. Выведите значения полученных углов из главной функции.
Класс "Прямоугольник" с данными верхняя левая и правая нижняя точки C++
Помогите, пожалуйста решить задачу в С++ Задание. 1. Для задачи предыдущей лабораторной создать класс-потомок согласно заданию. В классе-потомке определить дополнительные свойства (согласно...
C++ Присваивание http://www.cyberforum.ru/cpp-beginners/thread1115418.html
Помогите с оператором присваивания ) class Stack { private: myString *st; .... void operator=(myString); class myString
C++ Работа с циклами для вычисления выражения Дано такое выражение на фото http://i.pixs.ru/storage/5/2/2/fotoJPG_2594443_11179522.jpg У меня больше ничего не получается кроме этого: Заголовок: #include <iostream> #include <cmath> using... подробнее

Показать сообщение отдельно
о_О_Кто_здесь
11 / 11 / 1
Регистрация: 06.06.2011
Сообщений: 152
15.03.2014, 18:03  [ТС]
Добрый день! Немного по колдовал, теперь из двоичного файла загружаю в тот же вектор, предварительно очистив его. Вроде более менее получается, но есть вопросы.

Часть кода с поиском по фамилии:
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
void Delet(vector<person> &mas, string &name) // поиск и удаление
{
    mas.clear(); //очищаем вектор
    string fam, name2, otvet;   int l = 0;
    cout << "===========================" << endl;
    cout << " Введите Фамилию для удаления: "; cin >> fam; cout << endl;
    cout << "===========================" << endl;
    person tmp;
    std::ifstream fs(name, std::ios::binary);
    if (!fs.is_open())
    {
        std::cout << " Файл " << name << " не был открыт для чтения ";
        return;
    }
    do
    {
        fs >> tmp.surname;
        fs >> tmp.name;
        fs >> tmp.patronymic;
        fs >> tmp.position;
        fs >> tmp.age;
        fs >> tmp.wages;
        mas.push_back(tmp);
    } while (fs.eof());
    fs.close();
 
    int size = mas.size();
    if (size == 0)
    {
        cout << "===========================" << endl;
        cout << " Вектор пуст." << endl;
        cout << "===========================" << endl;
    }
    else
    {
 
        for (int i = 0; i < size; i++)
        {
            if (mas[i].surname == fam) //поиск совпадении фамилии
            {
                cout << "===========================" << endl;
                cout << " Нашёл!" << endl;
                cout << "===========================" << endl;
                cout << " Запись №" << (i + 1) << endl << "Фамилия: " << mas[i].surname << endl << " Имя: " << mas[i].name << endl << " Отчество: " << mas[i].patronymic << endl << " Должность: " << mas[i].position << endl << " Дата рождения: " << mas[i].age << endl << " Зарплата: " << mas[i].wages << "\n";
                cout << "===========================" << endl;
                cout << " Вы желаете перед удалением сохранить данные в текстовый файл? " << endl;
                cout << " Y - да | N - нет " << endl;
                cout << " Введите ваше решение: "; cin >> otvet; cout << endl;
                if (otvet == "y")
                {
                    cout << "Введите название файла: "; cin >> name2; cout << endl;
                    std::ofstream in(name2);
                    in << mas[i].surname << " "
                        << mas[i].name << " "
                        << mas[i].patronymic << " "
                        << mas[i].position << " " << mas[i].age
                        << " " << mas[i].wages << endl;
                    in.close();
                    mas.erase(mas.begin() + i);
 
                    std::ofstream fs(name, std::ios::binary);
                    for (int i = 0; i < size; i++)
                    {
                        fs << mas[i].surname << " "
                            << mas[i].name << " "
                            << mas[i].patronymic << " "
                            << mas[i].position << " " << mas[i].age
                            << " " << mas[i].wages << endl;
                    }
                    fs.close();
                }
                else (otvet == "n");
            }
            else   cout << " Введенной фамилии нет в базе!" << endl;
        }
    }
}
Так вот, если я ищу фамилию, которая первая в списке, он ее находит:
Поиск по структуре "Сотрудник"
А вот если сотрудник с фамилией не первый в списке, тогда не находит, почему счетчик дальше не идет?
Поиск по структуре "Сотрудник"

Если использовать вместо
C++
1
if (mas[i].surname == fam) //поиск совпадении фамилии
допустим так:
C++
1
2
3
4
do
{
 
}while(mas[i].surname == fam)
пример:
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
void Delet(vector<person> &mas, string &name) // поиск и удаление
{
    mas.clear(); //очищаем вектор
    string fam, name2, otvet;   int l = 0;
    cout << "===========================" << endl;
    cout << " Введите Фамилию для удаления: "; cin >> fam; cout << endl;
    cout << "===========================" << endl;
    person tmp;
    std::ifstream fs(name, std::ios::binary);
    if (!fs.is_open())
    {
        std::cout << " Файл " << name << " не был открыт для чтения ";
        return;
    }
    do
    {
        fs >> tmp.surname;
        fs >> tmp.name;
        fs >> tmp.patronymic;
        fs >> tmp.position;
        fs >> tmp.age;
        fs >> tmp.wages;
        mas.push_back(tmp);
    } while (fs.eof());
    fs.close();
 
    int size = mas.size();
    if (size == 0)
    {
        cout << "===========================" << endl;
        cout << " Вектор пуст." << endl;
        cout << "===========================" << endl;
    }
    else
    {
 
        for (int i = 0; i < size; i++ )
        {
            //if (mas[i].surname == fam) //поиск совпадении фамилии
            do
            {
                cout << "===========================" << endl;
                cout << " Нашёл!" << endl;
                cout << "===========================" << endl;
                cout << " Запись №" << (i + 1) << endl << "Фамилия: " << mas[i].surname << endl << " Имя: " << mas[i].name << endl << " Отчество: " << mas[i].patronymic << endl << " Должность: " << mas[i].position << endl << " Дата рождения: " << mas[i].age << endl << " Зарплата: " << mas[i].wages << "\n";
                cout << "===========================" << endl;
                cout << " Вы желаете перед удалением сохранить данные в текстовый файл? " << endl;
                cout << " Y - да | N - нет " << endl;
                cout << " Введите ваше решение: "; cin >> otvet; cout << endl;
                if (otvet == "y")
                {
                    cout << "Введите название файла: "; cin >> name2; cout << endl;
                    std::ofstream in(name2);
                    in << mas[i].surname << " "
                        << mas[i].name << " "
                        << mas[i].patronymic << " "
                        << mas[i].position << " " << mas[i].age
                        << " " << mas[i].wages << endl;
                    in.close();
                    mas.erase(mas.begin() +i);
                    
                    std::ofstream fs(name, std::ios::binary);
                    for (int i = 0; i<size; i++)
                    {
                        fs << mas[i].surname << " "
                            << mas[i].name << " "
                            << mas[i].patronymic << " "
                            << mas[i].position << " " << mas[i].age
                            << " " << mas[i].wages << endl;
                    }
                    fs.close();
                }
                else (otvet == "n");
            } while (mas[i].surname == fam);
            //else   cout << " Введенной фамилии нет в базе!" << endl;
        }
    }
    }
Тогда вроде бы ищет:
Поиск по структуре "Сотрудник"
НО, если мы попробуем ввести не существующую фамилию, он просто выдаст человека первого в списке.
Поиск по структуре "Сотрудник"
Хотелось бы реализовать через
C++
1
 if
HELP!
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru