C++ Qt porównywanie tablic

Odpowiedz Nowy wątek
2014-12-16 20:32
0

Witam, mógłby mnie ktoś nakierować jak poprawie porównać dane z tablic. A mianowicie mam łącznie 6 tablic, pobrane dane są z dwóch plików (do każdego pliku po 3 tablice nazwa pliku, rozmiar, crcsum). I teraz chciałbym porównać tak. Jeżeli w tablicy check_2_all_log_name nie ma jakiegoś elementu, który jest w check_all_log_name to żeby wywołał funkcję pobierz_element(), jeżeli element istnieje a różni się albo rozmiarem albo crcsum to także wywołał funkcję pobierz_element(). Oto co do tej pory napisałem :

void metin2_patcher::check_log()
{
    QFile check("log_ftp.txt");
    QFile check2("log.txt");
 
    qDebug() << "check_log";
 
    if(!check.open(QIODevice::ReadOnly))
        qDebug() << "Nie można otworzyć pliku log_ftp.txt";
 
    if(!check2.open(QIODevice::ReadOnly))
        qDebug() << "Nie można otworzyć pliku log.txt";
 
    if(check.isOpen()){
        qDebug() << "Plik otwarty";
    }
    else
        qDebug() << "Plik zamknięty";
 
    QTextStream in(&check);
    QTextStream in_2(&check2);
 
    int licznik = 0;
    QString check_all_log_name[1024];
    QString check_all_log_size[1024];
    QString check_all_log_sum[1024];
 
    while(!in.atEnd())
    {
        QString line = in.readLine();
        QStringList list = line.split("\t");
 
        check_all_log_name[licznik] = list.at(0);
        check_all_log_size[licznik] = list.at(1);
        check_all_log_sum[licznik] = list.at(2);
        licznik++;
    }
 
    licznik = 0;
    QString check_2_all_log_name[1024];
    QString check_2_all_log_size[1024];
    QString check_2_all_log_sum[1024];
 
    while(!in_2.atEnd())
    {
        QString line = in_2.readLine();
        QStringList list = line.split("\t");
 
        check_2_all_log_name[licznik] = list.at(0);
        check_2_all_log_size[licznik] = list.at(1);
        check_2_all_log_sum[licznik] = list.at(2);
        licznik++;
    }
 
    check.close();
    check2.close();
}

Pozostało 580 znaków

2014-12-16 23:26

Co sądzicie o takim porównywaniu ??

    bool spr[1024];
 
    for(int i = 0; i < 1024; i++)
    {
        spr[i] = true;
    }
 
    for(int i = 0; i < 1024; i++)
    {
        for(int j = 0; j < 1024; j++)
        {
            if(check_all_log_name[i] == check_2_all_log_name[j] &&
               check_all_log_size[i] == check_2_all_log_size[j] &&
               check_all_log_sum[i] == check_2_all_log_sum[j])
            {
                spr[i] = false;
            }
        }
    }
 
    for(int k = 0; k < 1024; k++)
    {
        if(spr[k] == true && check_all_log_name[k] != "")
            qDebug() << "asd : " << check_all_log_name[k];
    }

Ps. Temat można zamknąć, wszystko działa prawidłowo.

edytowany 1x, ostatnio: maniek1310, 2014-12-19 13:06

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0