Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/8: Рейтинг темы: голосов - 8, средняя оценка - 4.50
3 / 2 / 1
Регистрация: 04.04.2019
Сообщений: 158

Ошибка при проверке совпадения данных

08.05.2019, 12:15. Показов 1698. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! Столкнулся с ошибкой, которая состоит в том, что после проверки данных на совпадения с ключевым словом, оно попросту не находит совпадений, даже если они есть.
Коротко о сути кода: задание состоит в том, чтобы создать файл, записать туда нужное кол-во данных , сохранить все, а потом проверить на совпадение ключевое слово и в случае совпадения вывести инфу. Например мы вносим данные: название факультета - www, код - 111, число заявок - 1000. Перед этой записью будет предложено выбрать, сколько инфы о факультетах вы хотите внеси. Т.е. если вы указали 2, то будет 2 раза ввод, 3 - 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
#include <iostream>
#include <string>
#include <fstream>
 
using namespace std;
ofstream file_1;
 
struct Info
{
    string fac_name;
    string fac_code;
    string fac_app;
};
 
 
int main() {
     string file_name;
     string key_word,example;
     int fields_amount = 0;
     int continue_or_no = 0;
     int avg;
 
     int size = 0;
     
    cout << "Enter your file name and path (optional) : ";
    cin >> file_name; cout << endl;
    cout << "You created a file :  '" << file_name << "' " << endl;
    
    Info *UI;/////////////
 
    cout << "how many data do u want to write: "; cin >> avg; cin.ignore();
    file_1.open(file_name); cout << endl;//START
    if (!file_1.is_open()) cout << "ERROR";
    else {
 
    UI = new Info[avg];///////////
 
    for (int i = 0; i < avg; i++)
    {
        cout << "enter fac name: ";  getline(cin, UI[i].fac_name);
         cout << endl;
        cout << "enter fac code: ";  getline(cin,UI[i].fac_code);
         cout << endl;
        cout << "enter avg of applies: ";  getline(cin,UI[i].fac_app);
         cout << endl;
 
        file_1 << UI[i].fac_name; file_1 << endl;
        file_1 << UI[i].fac_code; file_1 << endl;
        file_1 << UI[i].fac_app; file_1 << endl;
    }
    }
    file_1.close();//END
    
    
    
 
    string line;
    ifstream myfile(file_name);
    myfile.open(file_name);//START1
        
    if (!myfile.is_open()) {
        cout << "Error. Unable to open file.";
    }
    else {
        cout << "Enter a key word: ";
        cin.ignore(); getline(cin, key_word);
 
        for (int i = 0; i < avg; i++) {
            if (UI[i].fac_name == key_word) {
                cout << "Info found." << endl;
                cout << "Name of Fac: "<<UI[i].fac_name << endl;
                cout << "Fac code : " << UI[i].fac_code << endl;
                cout << "Count of applies: " << UI[i].fac_app << endl; break;
            }
            else {
                cout << "Not found!" << endl; break;
            }
        }
    }
    myfile.close(); //END
 
    char al;
    cin >> al;
    return 0;
}
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
08.05.2019, 12:15
Ответы с готовыми решениями:

Ошибка при проверке массива
sf::String *TileMap = new sf::String; for (size_t i = 0; i &lt; 15; i++) { TileMap = &quot; &quot;; } for (int i = 0; i &lt;...

Ошибка при проверке значения char
Выдает ошибку, что m не определена, в If. Если добавить int m, то компилит, но ничего не выводит. Что здесь может быть не так? #include...

В чем ошибка при проверке простого числа
После цикла ничего не работает int n, counter = 2; cout &lt;&lt; &quot;Vvedite chislo&quot; &lt;&lt; endl; cin &gt;&gt; n; bool flag = false; ...

8
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,531
Записей в блоге: 1
08.05.2019, 12:44
убери cin.ignore();
1
3 / 2 / 1
Регистрация: 04.04.2019
Сообщений: 158
08.05.2019, 13:01  [ТС]
Kuzia domovenok, теперь поле fac_name просто пропускается, компилятор не дает ввести значение для него
0
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,531
Записей в блоге: 1
08.05.2019, 13:06
ну вообще, я имел в виду только один ignore - перед вводом key_word.
0
3 / 2 / 1
Регистрация: 04.04.2019
Сообщений: 158
08.05.2019, 13:10  [ТС]
Kuzia domovenok,
0
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,531
Записей в блоге: 1
08.05.2019, 13:19
Лучший ответ Сообщение было отмечено Allivion как решение

Решение

C++
1
2
3
4
5
6
7
8
9
10
11
12
bool found=false;
        for (int i = 0; i < avg && !found; i++) 
            found= (UI[i].fac_name == key_word);
        if (found){
            cout << "Info found." << endl;
            cout << "Name of Fac: " << UI[i].fac_name << endl;
            cout << "Fac code : " << UI[i].fac_code << endl;
            cout << "Count of applies: " << UI[i].fac_app << endl; break;
        }
        else {
            cout << "Not found!" << endl; break;
        }
1
3 / 2 / 1
Регистрация: 04.04.2019
Сообщений: 158
08.05.2019, 13:30  [ТС]
Kuzia domovenok, спасибо, работает, но только, если в названии факультета/ключевого слова только 1 слово, если название состоит из 2-х слов или более (при наличии пробела), то информацию не находит, если 1 слово - все отлично, не подскажете, как эту проблему решить можно ?
0
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,531
Записей в блоге: 1
08.05.2019, 13:41
скриньшот
1
3 / 2 / 1
Регистрация: 04.04.2019
Сообщений: 158
08.05.2019, 14:03  [ТС]
Kuzia domovenok, ой, прошу прощения, все работает, наверное я просто машинально после указания названия добавлял пробел, а в ключевом слове соответственно - нет. Несколько раз позапускал, все отлично работает, спасибо вам огромное!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
08.05.2019, 14:03
Помогаю со студенческими работами здесь

Выбивает ошибку, в чём ошибка при проверке массива?
Написал программу, в ней есть следующие строки: (НЕ рабочий вариант) if((now &lt;= 0) || (debt_d &lt;= 0)) { cheching = false; ...

Некорректная работа команды continue в цикле при проверке корректности введенных данных
Доброго времени суток, уважаемые форумчане. Есть программа для определения количества купюр (монет) того или иного номинала, которое...

Задача "Happy numbers", ошибка при проверке системой
Здравствуйте! Решил несложную задачку вот по это ссылке https://www.spoj.com/problems/HPYNOS/: но после 31 теста - выдало неправильный...

Ошибка при онлайн проверке задачи: "Определить найдены ли все части порваной газеты"
Даны задачи, я их решил, с примером сходится, но сервер выдаёт ошибку: Хулиганы Первый и Второй очень не любят доску почёта своей...

Ошибка в проверке
Помогите, пожалуйста. Выдает ошибку на строчке if (state_a==state_a || state_b==state_b) m_str.flag2=true; #include...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США. Нашел на реддите интересную статью под названием «Кто-нибудь знает, где получить бесплатный компьютер или. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
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 - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru