Форум программистов, компьютерный форум CyberForum.ru

Ошибки в работе со строками - C++

Восстановить пароль Регистрация
 
cybernate
3 / 3 / 0
Регистрация: 10.03.2013
Сообщений: 45
13.04.2013, 18:49     Ошибки в работе со строками #1
Дано два символьных файла f и g. Проверить их на совпадение символов. Если отличаются тогда вывести эти символы.

Моя программа задачу вроде выполняет, но в конце ругается на ошибки. Кто знает из-за чего они?

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
#include<iostream>
#include<fstream>
#include<string>
 
using namespace std;
 
int main()
{       
    string buff,buff2;                      // строка для хранения текста файлов
 
    ifstream f("Ffile.txt");                // открываем файл F
    ifstream g("Gfile.txt");                // открываем файл G
 
    getline(f, buff);                       // выводим файл
    getline(g, buff2);
    
 
    cout<<"Text File F:  "<<buff<<"\n\n";
    cout<<"Text File G:  "<<buff2<<"\n\n";
 
    
//if(buff.compare(buff2)==0)                // проверка на совпадение
//      cout<<"Stroki sovpodayt\n\n";
//  else
//      cout<<"Stroki raznue\n\n";
 
// Если они отличаются хотя б 1 символом то вывести его на экран
 
 
for(int i = 0; i<256; i++)                                              // Проверка совпадений файла F и G
{
    if(buff[i]!=buff2[i])
        cout<<" "<<buff.at(i);
}
 
cout<<"__________________________________\n";
 
for(int i = 0; i<256; i++)                                              // Проверка совпадений файла G и F
{
    if(buff2[i]!=buff[i])
        cout<<" "<<buff2.at(i);
}
 
    f.close();
    g.close();
 
 
    system("pause");
    return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
igorrr37
 Аватар для igorrr37
1593 / 1221 / 118
Регистрация: 21.12.2010
Сообщений: 1,868
Записей в блоге: 7
13.04.2013, 19:08     Ошибки в работе со строками #2
C++
1
i<256
почему именно 256? У тебя есть две строки. Находишь их длины: buff.size() и buff2.size(), и меньшую из длин подставь вместо 256
cybernate
3 / 3 / 0
Регистрация: 10.03.2013
Сообщений: 45
13.04.2013, 19:42  [ТС]     Ошибки в работе со строками #3
в этом может быть ошибка?

Добавлено через 31 минуту
В этом случае вообще цикл не выполняется.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
if(buff.size()>buff2.size())
    {
        for(int i = 0; i<buff2.size(); i++)
        {
            if(buff[i]!=buff2[i])
                cout<<buff2[i];
        }
    }
    else
    {
        for(int i = 0; i<buff.size(); i++)
        {
            if(buff[i]!=buff2[i])
                cout<<buff[i];
        }
    }
igorrr37
 Аватар для igorrr37
1593 / 1221 / 118
Регистрация: 21.12.2010
Сообщений: 1,868
Записей в блоге: 7
13.04.2013, 19:50     Ошибки в работе со строками #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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#include<iostream>
#include<fstream>
#include<string>
#include <cstdlib>
 
using namespace std;
 
int main()
{
    string buff,buff2;                      // строка для хранения текста файлов
 
    ifstream f("Ffile.txt");                // открываем файл F
    ifstream g("Gfile.txt");                // открываем файл G
 
    getline(f, buff);                       // выводим файл
    getline(g, buff2);
 
 
    cout<<"Text File F:  "<<buff<<"\n\n";
    cout<<"Text File G:  "<<buff2<<"\n\n";
 
 
//if(buff.compare(buff2)==0)                // проверка на совпадение
//      cout<<"Stroki sovpodayt\n\n";
//  else
//      cout<<"Stroki raznue\n\n";
 
// Если они отличаются хотя б 1 символом то вывести его на экран
 
 
int minsize = buff.size() < buff2.size() ? buff.size() : buff2.size();
 
for(int i = 0; i<minsize; i++)                                              // Проверка совпадений файла F и G
{
    if(buff[i]!=buff2[i])
        cout<<" "<<buff.at(i);
}
 
cout<<"__________________________________\n";
 
for(int i = 0; i<minsize; i++)                                              // Проверка совпадений файла G и F
{
    if(buff2[i]!=buff[i])
        cout<<" "<<buff2.at(i);
}
 
    f.close();
    g.close();
 
 
    system("pause");
    return 0;
}
cybernate
3 / 3 / 0
Регистрация: 10.03.2013
Сообщений: 45
13.04.2013, 19:55  [ТС]     Ошибки в работе со строками #5
Я извиняюсь но и тот код работал, просто Visual глюканул и не выполнял новый код
Спасибо!
Yandex
Объявления
13.04.2013, 19:55     Ошибки в работе со строками
Ответ Создать тему
Опции темы

Текущее время: 17:10. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru