Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
Chelick
1 / 1 / 0
Регистрация: 29.10.2017
Сообщений: 24
1

Сравнение слов из двух текстовых файлов

30.01.2018, 20:14. Просмотров 816. Ответов 9
Метки нет (Все метки)

И к тому же командная строка закрывается сразу после вывода, ни getchar(), ни system("pause") не помогает

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
#include "stdafx.h"
#include "iostream"
#include "fstream"
#include "string"
 
using namespace std;
 
 
int main()
{
    string new_nomertxt, nomertxt;
    ifstream new_nomer;//Номер считанный неронкой
    ifstream nomer;//Номерй с баз данных
    new_nomer.open("C:\\Project_Unit\\Nomer_new.txt", ios::in);//Заходим в файл с новым номером
    nomer.open("C:\\Project_Unit\\Nomer.txt", ios::in);//Заходим в файл с баз данных
    while (!new_nomer.eof()) {//Циклы переписывает данные с файлов new_nomer и nomer в переменые new_nomertxt и nomertxt соответствено
        new_nomer >> new_nomertxt;
        while (!nomer.eof()) {
            nomer >> nomertxt;
        }
    }
    cout << new_nomertxt<<" "<<nomertxt<< endl;
 
    if (new_nomertxt == nomertxt)// Сравниваем new_nomer и nomer
        cout << "PABHO" << endl;
    else cout << "HET" << endl;
 
 
    return 0;
    getchar();
 
}
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.01.2018, 20:14
Ответы с готовыми решениями:

Сравнение двух текстовых файлов
господа есть 2 файла txt как сравнить точно ли информация в первом совпадает со...

Сравнение двух текстовых файлов
Объясните, пожалуйста, как работает код #include&lt;iostream&gt; #include &lt;stdio.h&gt;...

Построчное сравнение двух текстовых файлов
Написать программу, выполняет построчное сравнивает два текстовые файлы и...

Поиск совпадающих слов в двух текстовых файлах
Даны два текстовых файла. Найти совпадающие слова, входящие в оба файла

Обмен содержимым двух текстовых файлов
сделал программу по копипасту содержимого второго файла в конец первого,а нужно...

9
New man
212 / 140 / 56
Регистрация: 23.05.2011
Сообщений: 740
Завершенные тесты: 4
30.01.2018, 20:31 2
Оператор >> считывает строки до первого пробельного символа.

В твоём случае у тебя сравниваются последние значения в файлах.

Посмотри в сторону istream & getline(istream & is,std::string& str)
0
Chelick
1 / 1 / 0
Регистрация: 29.10.2017
Сообщений: 24
30.01.2018, 20:34  [ТС] 3
Ну это понятно, но текст в обоих файлах такой asa и asd, и все равно выводит нет
0
Chelick
1 / 1 / 0
Регистрация: 29.10.2017
Сообщений: 24
30.01.2018, 20:45  [ТС] 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
#include "stdafx.h"
#include "iostream"
#include "fstream"
#include "string"
 
using namespace std;
 
int main()
{
    string new_nomertxt, nomertxt;
    ifstream new_nomer;//Номер считанный неронкой
    ifstream nomer;//Номерй с баз данных
    new_nomer.open("C:\\Project_Unit\\Nomer_new.txt", ios::in);//Заходим в файл с новым номером
    nomer.open("C:\\Project_Unit\\Nomer.txt", ios::in);//Заходим в файл с баз данных
    while (!new_nomer.eof()) {//Циклы переписывает данные с файлов new_nomer и nomer в переменые new_nomertxt и nomertxt соответствено
        new_nomer >> new_nomertxt;
        while (!nomer.eof()) {
            nomer >> nomertxt;
        }
    }
    cout << new_nomertxt<<" "<<nomertxt<< endl;
 
    if (new_nomertxt == nomertxt)// Сравниваем new_nomer и nomer
        cout << "PABHO" << endl;
    else cout << "HET" << endl;
 
 
    return 0;
    getchar();
 
}
0
zss
Модератор
Эксперт С++
7250 / 6699 / 4240
Регистрация: 18.12.2011
Сообщений: 17,681
Завершенные тесты: 1
30.01.2018, 20:56 5
Лучший ответ Сообщение было отмечено Chelick как решение

Решение

21 - 25 строки поставьте внутрь цикла (после 18 строки).
И еще - 2-й файл нужно каждый раз перематывать на начало:
Перед 17-й строкой:
C++
1
nomer.seekg(0);
Но если Вам нужно сравнить первое слово с первым, втрое со вторым и т.д.,
то читать нужно одним циклом:
C++
1
2
3
4
5
6
while (new_nomer >> new_nomertxt && nomer >> nomertxt) {
    cout << new_nomertxt<<" "<<nomertxt<< " ";
    if (new_nomertxt == nomertxt)// Сравниваем new_nomer и nomer
        cout << "PABHO" << endl;
    else cout << "HET" << endl;
}
0
Chelick
1 / 1 / 0
Регистрация: 29.10.2017
Сообщений: 24
30.01.2018, 22:48  [ТС] 6
Добавлено через 11 минут
zss, Спасибо, но как сделать так, чтобы слово из файла new_nomer сравнивалось c каждым словом в файле nomer и при этом каждый раз выводилось первое слово и то, с которым сравнивают, и НЕТ или РАВНО?
0
nd2
2835 / 2403 / 1057
Регистрация: 29.01.2016
Сообщений: 8,046
31.01.2018, 07:46 7
Цитата Сообщение от Chelick Посмотреть сообщение
текст в обоих файлах такой asa и asd, и все равно выводит нет
А что должен? Или "asa" равна "asd"? И открытие файлов для чтения всегда проверять нужно.
Цитата Сообщение от Chelick Посмотреть сообщение
И к тому же командная строка закрывается сразу после вывода, ни getchar(), ни system("pause") не помогает
return 0; в конце main() должен стоять, а не как у тебя.
0
zss
Модератор
Эксперт С++
7250 / 6699 / 4240
Регистрация: 18.12.2011
Сообщений: 17,681
Завершенные тесты: 1
31.01.2018, 08:10 8
Цитата Сообщение от Chelick Посмотреть сообщение
как сделать так, чтобы слово из файла new_nomer сравнивалось c каждым словом в файле nomer и при этом каждый раз выводилось первое слово и то, с которым сравнивают, и НЕТ или РАВНО?
А разве я не про это Вам написал.
После перестановки строк должно было получиться

C++
1
2
3
4
5
6
7
8
9
10
11
while ( new_nomer >> new_nomertxt;) 
{
   nomer.seekg(0);    
   while (nomer >> nomertxt) 
   {
        cout << new_nomertxt<<" "<<nomertxt<< " ";
        if (new_nomertxt == nomertxt)// Сравниваем new_nomer и nomer
            cout << "PABHO" << endl;
        else cout << "HET" << endl;
   }
}
0
outoftime
║XLR8║
763 / 662 / 212
Регистрация: 25.07.2009
Сообщений: 3,320
Записей в блоге: 5
31.01.2018, 12:29 9
Chelick, zss, если RAM достаточно лучше сначала выгрузить содержимое в память, чтобы N раз по Nomer.txt не шастать. А еще лучше тоже сделать и для Nomer_new.txt.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <fstream>
#include <iterator>
#include <string>
#include <vector>
 
int main()
{
    std::ifstream in1("./1");
    std::ifstream in2("./2");
    std::vector<std::string> data1{
        std::istream_iterator<std::string>(in1),
        std::istream_iterator<std::string>()
    };
    std::vector<std::string> data2{
        std::istream_iterator<std::string>(in2),
        std::istream_iterator<std::string>()
    };
    in1.close(); in2.close();
    // process data here
}
0
Chelick
1 / 1 / 0
Регистрация: 29.10.2017
Сообщений: 24
31.01.2018, 13:07  [ТС] 10
zss, Да, спасибо, теперь все работает
1
31.01.2018, 13:07
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.01.2018, 13:07

Функция слияния двух текстовых файлов
Здравствуйте. Прошу помощи, потому как даже не представляю как можно это...

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

Сравнение двух слов
Как сравнить два слова? использую strcmp но результата не дает


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru