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

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

08.05.2019, 12:15. Показов 1755. Ответов 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,532
Записей в блоге: 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,532
Записей в блоге: 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,532
Записей в блоге: 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,532
Записей в блоге: 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
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru