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

Даны 2 файла целых чисел. Определить равны ли они - C++

Восстановить пароль Регистрация
 
luhrum
0 / 0 / 0
Регистрация: 10.03.2014
Сообщений: 4
24.04.2014, 14:37     Даны 2 файла целых чисел. Определить равны ли они #1
Даны 2 файла целых чисел. Определить равны ли они. Программа не запускается совсем, а файлы находятся в той же папке, что и программа. Подскажите, пожалуйста, в чем у меня ошибка?
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
#include "stdafx.h"
#include <fstream>
#include <iostream>
using namespace std;
 
 
void main()
{   
    int n,q,w; int k1=0, k2=0;
    FILE *f1; FILE *f2;             //объявление файла
    ifstream f1; ifstream f2;
    f1.open("file1.txt",ios::in);       //открытие
    f2.open("file2.txt",ios::in);
    if ((f1)&&(f2))
    {
        while ((f1.eof())&&(f2.eof()))  //кол-во элементов в файлах
        {
            f1>>q; k1++;
            f2>>w; k2++;
        }
        if (k1!=k2)
            cout<<"v failah raznoe kol-vo znakov\n";
        else
        {
            n=k1;
            int *a=new int[n];
            int *b=new int[n];
            while ((f1.eof())&&(f2.eof()))  //сравнение файлов
            {
                for (int i=0, i<n, i++)
                    for (int j=0, j<n, j++)
                    {
                        f1>>a[i]; 
                        f2>>b[j];
                        if (a[i]!=b[j])
                            break;
                            cout<<"faili ravni\n";
                    }
                cout<<"faili ne ravni\n";
            }
        }
        f1.close("file1.txt");
        f2.close("file2.txt");
        delete []a;
        delete []b;
        }
заранее спасибо!)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.04.2014, 14:37     Даны 2 файла целых чисел. Определить равны ли они
Посмотрите здесь:

C++ Пусть даны два файла целых чисел
C++ Даны два массива из n целых чисел каждый. Определить, в каком из них больше положительных элементов.
C++ Покер - даны 5 целых чисел. Определить в них комбинации повторяющихся элементов
C++ Даны 2 строки. Определить, состоят ли они из одних и тех же символов.
C++ Даны 7 целых полож чисел(неоднозначных). Определить кол-во цифр в каждом числе
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
newbie666
Заблокирован
24.04.2014, 14:49     Даны 2 файла целых чисел. Определить равны ли они #2
Цитата Сообщение от luhrum Посмотреть сообщение
Даны 2 файла целых чисел. Определить равны ли они
а что конкретно надо проверить? Одинаковость двух файлов? А к чему весь геморой тогда, сравни два ихних хэша crc16 допустим да и всё )))
luhrum
0 / 0 / 0
Регистрация: 10.03.2014
Сообщений: 4
24.04.2014, 14:54  [ТС]     Даны 2 файла целых чисел. Определить равны ли они #3
да одинаковы ли они. Я так поняла, что надо сравнить количество цифр. Можете по-подробнее объяснить, что значит
Цитата Сообщение от newbie666 Посмотреть сообщение
сравни два ихних хэша crc16
zss
Модератор
Эксперт С++
 Аватар для zss
5942 / 5547 / 1783
Регистрация: 18.12.2011
Сообщений: 14,155
Завершенные тесты: 1
24.04.2014, 15:02     Даны 2 файла целых чисел. Определить равны ли они #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
#include <fstream>
#include <iostream>
using namespace std;
 
 
int main()
{   
    int k1=0, k2=0;
    char q,w;
    //FILE *f1; FILE *f2;             //объявление файла
    ifstream f1; ifstream f2;
    f1.open("file1.txt",ios::in);       //открытие
    f2.open("file2.txt",ios::in);
    if ( f1 && f2)
    {
        while (!f1.eof())  //кол-во элементов в файлах
        {
            f1>>q; k1++;
        }
        while (!f2.eof())  //кол-во элементов в файлах
        {
            f2>>w; k2++;
        }
        if (k1!=k2)
            cout<<"v failah raznoe kol-vo znakov\n";
        else
        {
            f1.seekg(0);
            f2.seekg(0);
            bool equal=true;
            while (!f1.eof())  //кол-во элементов в файлах
            {
                f1>>q;
                f2>>w;
                if(q!=w)
                {
                    equal=false;
                    break;
                }
            }
            if(equal)
                cout<<"faili ravni\n";
            else
                cout<<"faili ne ravni\n";
       }
       f1.close();
       f2.close();
    }else
        cout<<"Open file error\n";
    system("pause");
    return 0;
}
newbie666
Заблокирован
24.04.2014, 15:05     Даны 2 файла целых чисел. Определить равны ли они #5
Цитата Сообщение от luhrum Посмотреть сообщение
да одинаковы ли они. Я так поняла
Я так понимаю, это тебе предод задание дал и сказал, что нужно использовать или что вообще сравнивать?
Если так - то говори.
Если нет - ну вот смотри, есть у тебя два файла в папке, они идентичны, если идентичны все байты в них содержащиеся - что равносильно равенству их контрольных сумм (хэш сум).
Что можно сделать:
1. (для тебя наверное более понятно) - читать два файла одновременно и сравнивать каждый их байт, как только байты не сходятся - файлы не одинаковые.
2. Можно прочитать файл целиком и кинуть данные в функцию генерации контрольной суммы, которую ты можешь написать сама или же подключить какую -то библиотеку, в которой есть данный функионал, например ZLib.

Что скажешь?
Yandex
Объявления
24.04.2014, 15:05     Даны 2 файла целых чисел. Определить равны ли они
Ответ Создать тему
Опции темы

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