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

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

10.11.2021, 13:49. Показов 1448. Ответов 10

Студворк — интернет-сервис помощи студентам
Создайте текстовый файл, содержащий информацию о кафедрах факультета: название, Ф.И.О. заведующего, количество преподавателей на кафедре (разделитель между элементами в строке – двоеточие). Вывести на экран список заведующих, у которых на кафедре минимальное количество преподавателей(т.е. меньше или равно 10). Вот мои усилия, работает не корректно. Содержимое 22.txt :
FITKI: B.J.D. : 10.
FEEEM: R.O.P. : 11.
****S: H.A.F. : 7.
FIREN: A.K.M. : 9.
FOX: T.O.N. : 12.
FOP: L.K.H. : 13.
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
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
 int main()
{
    string text = ""; // текст записанный из файла
    string result;    // результат поиска
    string search="1";
    string filename = "D:\\22.txt"; // имя файла
 
    // файл в котором будет осуществляться поиск
    ifstream* in = new ifstream(filename);
    if (in->fail())
    {
        cout << "file '" << filename << "' not found" << endl << endl;
        system("pause");
        return 1;
    }
    while (!in->eof()) {
        text += in->get();
    } in->close();
    delete in;
     while (1) {
 
        int final_pos = text.find(search);
        int cur_pos = final_pos;
        for (int i = cur_pos; ; i++) {
            if (text[i]!='.' && text[i] != 0) final_pos++;
            else {
                cur_pos = i;
                if (cur_pos > 0) final_pos--; break;
            }
        }
        for (cur_pos = final_pos; ; cur_pos--)
        {
            if (text[cur_pos] == '.' || (int)text[cur_pos] == -1)
            {
                result += text[cur_pos];
                break;
            }
            if (final_pos == cur_pos && text[cur_pos] == ' ')continue;
            result += text[cur_pos]; // записал строку в 'result'
        }
        cout << result << endl << endl;
 
        text.erase(final_pos, cur_pos+1); 
        result = ""; 
 
    }
    return 0;
}
Добавлено через 1 минуту
И по возможности дайте источник где можно почитать об работе с файлами без водьі
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
10.11.2021, 13:49
Ответы с готовыми решениями:

Вывести на экран список заведующих, у которых на кафедре минимальное количество преподавателей
Создайте текстовый файл, содержащий информацию о кафедрах факультета: название, Ф.И.О. заведующего, количество преподавателей на кафедре...

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

Вывести те кафедры, в которых количество преподавателей превышает 50.
Добрый день, нужно заполнить структуру данных. Кафедру, зав. кафедры, кол-во преподавателей, кол-во потоков. В конце программы нужно...

10
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
10.11.2021, 17:35
Цитата Сообщение от Max211922 Посмотреть сообщение
FITKI: B.J.D. : 10.
FEEEM: R.O.P. : 11.
это содержимое файла было предоставлено вместе с условием задачи или Вы сами написали ?
0
0 / 0 / 0
Регистрация: 27.10.2021
Сообщений: 6
10.11.2021, 18:21  [ТС]
Єто условно так я написал

Добавлено через 24 минуты
Цитата Сообщение от Yetty Посмотреть сообщение
это содержимое файла было предоставлено вместе с условием задачи или Вы сами написали ?
Єто условно так я написал
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
10.11.2021, 19:10
Цитата Сообщение от Max211922 Посмотреть сообщение
Єто условно так я написал
понятно. написано неправильно. так данные хранятся (пример)
software engineering:Ivanov Ivan Ivanovich:7
system analysis:Sergiyenko Sergiy Sergiyovich:15
computer mathematics and exact sciences:Olegiv Oleg Olegovich:5

решать можно так. переделайте на ввод с файла
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
#include <string>
#include <sstream>
using namespace std;
 
int main() 
{
    string s="software engineering:Ivanov Ivan Ivanovich:7\nsystem analysis:Sergiyenko Sergiy Sergiyovich:15\ncomputer mathematics and exact sciences:Olegiv Oleg Olegovich:5\n";
    string str;
    size_t first,last;
    stringstream in(s);
    
    while(getline(in,str))
    { 
        first=str.find(':'); 
        last=str.find_last_of(':');        
        if(str.substr(last+1).size()==1) cout << str.substr(first+1,last-first-1) << "\n";
    }    
    
system("pause");
return 0;
}
0
0 / 0 / 0
Регистрация: 27.10.2021
Сообщений: 6
10.11.2021, 21:35  [ТС]
Цитата Сообщение от Yetty Посмотреть сообщение
решать можно так. переделайте на ввод с файла
Только не ругайтесь, я полньій новичок. Что-то не получилось
C++ (Qt)
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
#include <iostream>
#include <cstdlib>
#include <string>
#include <fstream>
using namespace std;
int main()
    {
    string filename = "D:\\22.txt";
    ifstream* in = new ifstream(filename);
    if (in->fail())
    {
        cout << "file '" << filename << "' not found" << endl << endl;
        system("pause");
        return 1;
    }
        string s;
        string str;
        size_t first, last;
        stringstream in(s);
        while (!in->eof()) {
            s += in->get();
        } in->close();
        while (getline(in, str))
        {
            first = str.find(':');
            last = str.find_last_of(':');
            if (str.substr(last + 1).size() == 1) cout << str.substr(first + 1, last - first - 1) << "\n";
        }
 
        system("pause");
        return 0;
    }
Две ошибки на 19(incomplete type isnt allowed) и 23 (E0304 no instance of overloaded function "getline" matches the argument list) строку не понимаю почему
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
10.11.2021, 21:48
Max211922, в предложенном коде уберите строку 8 и вместо
C++
1
stringstream in(s);
напишите
C++
1
ifstream in("D:\\22.txt");
0
0 / 0 / 0
Регистрация: 27.10.2021
Сообщений: 6
10.11.2021, 22:28  [ТС]
Если удаляю 8 строку то віьскакивает немерено ошибок. Если так менять то ошибки с указателями где in-> вьіходят
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
#include <iostream>
#include <cstdlib>
#include <string>
#include <fstream>
using namespace std;
int main()
    {
    ifstream in("D:\\22.txt"); // удалил и вставил что вьі сказали
    ifstream* in = new ifstream(filename);
    if (in->fail())
    {
        cout << "file '" << filename << "' not found" << endl << endl;
        system("pause");
        return 1;
    }
        string s;
        string str;
        size_t first, last;
        while (!in->eof()) {
            s += in->get();
        } in->close();
        while (getline(in, str))
        {
            first = str.find(':');
            last = str.find_last_of(':');
            if (str.substr(last + 1).size() == 1) cout << str.substr(first + 1, last - first - 1) << "\n";
        }
 
        system("pause");
        return 0;
    }
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
10.11.2021, 22:31
Max211922, я говорил про код сообщения#4
Цитата Сообщение от Yetty Посмотреть сообщение
в предложенном коде
0
0 / 0 / 0
Регистрация: 27.10.2021
Сообщений: 6
10.11.2021, 23:36  [ТС]
Подработал и вот получилось. Но работает не корректно. Я понимаю в чем ошибка (в string s записьівается не весь текст а только 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
#include <iostream>
#include <string>
#include <sstream>
#include <fstream>
using namespace std;
 
int main()
{
    string s = " ";
    string str;
    size_t first, last;
 
    ifstream in("D:\\22.txt");
        in >> s;
        while (getline(in, str))
        {
            first = str.find(':');
            last = str.find_last_of(':');
            if (str.substr(last + 1).size() == 1) cout << str.substr(first + 1, last - first - 1) << "\n";
        }
 
    system("pause");
    return 0;
}
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
11.11.2021, 00:18
Лучший ответ Сообщение было отмечено Max211922 как решение

Решение

Max211922, неужели так сложно заменить пару строк ?
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
#include <iostream>
#include <string>
//#include <sstream>
#include <fstream>
using namespace std;
 
int main() 
{
    //string s="software engineering:Ivanov Ivan Ivanovich:7\nsystem analysis:Sergiyenko Sergiy Sergiyovich:15\ncomputer mathematics and exact sciences:Olegiv Oleg Olegovich:5\n";
    string str;
    size_t first,last;
    //stringstream in(s);
    ifstream in("D:\\22.txt");
    
    while(getline(in,str))
    { 
        first=str.find(':'); 
        last=str.find_last_of(':');        
        if(str.substr(last+1).size()==1) cout << str.substr(first+1,last-first-1) << "\n";
    } 
    
    in.close();
    
system("pause");
return 0;
}
проверку файла на успешное открытие не делал, добавьте
0
0 / 0 / 0
Регистрация: 27.10.2021
Сообщений: 6
11.11.2021, 14:10  [ТС]
Все работает!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
11.11.2021, 14:10
Помогаю со студенческими работами здесь

Вывести на экран список кафедр заданного факультета,у которых процент остепененности преподавателей не превышает 50%
Вывести на экран список кафедр заданного факультета,у которых процент остепененности преподавателей не превышает 50% . пытался делать и...

Определить иерархию внутри академии. создать несколько объектов преподавателей, заведующих кафедрой, декан
определить иерархию внутри академии. создать несколько объектов преподавателей, заведующих кафедрой, декан. Собрать составы нескольких...

На кафедре иностранных языков работает 18 преподавателей
Нужно решить с помощью кругов эйлера. На кафедре иностранных языков работает 18 последователей, из них 12 преподают английский язык, 11 -...

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

Известен набор машин на каждой кафедре (количество кафедр = 10). Построить и напечатать множество, включающее в себя компьютеры, которых нет ни на одн
Добрый вечер! Задано множество типов компьютеров, которыми могут быть обеспечены кафедры института: IBM, PS/2, MAC, ISKRA, ELECTRONIKA,...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение Это мой обзор планшета X220 с точки зрения школьника. Недавно я решила попытаться уменьшить свой. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru