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

Сортировка по строкам - C++

Восстановить пароль Регистрация
 
mtbiker
0 / 0 / 0
Регистрация: 01.12.2010
Сообщений: 3
02.12.2010, 11:35     Сортировка по строкам #1
Есть тхт файл со строчками, по типу:

affghfhj
fjfrddrh
dhrhyhyjh
dgdgwwdb
nvnvhjrf
dggrtht
affhhghj

Задача отсортировать строки в порядке убывания по первым 3 символам.
Т.е. если aff встречается в данном случае больше всех, то он отображается первым

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
int main( )
{
        char comb[3];
        char compare[4];
        FILE*pFile;
           char sentence [256];
           pFile = fopen ("C://mylog.txt","r");
           {
           while (feof(pFile)==0)
           {
            fgets (sentence,255,pFile);
            strncpy(compare, sentence, 3);
            compare[4]='\0';
            printf("%s", compare);
            if (StrComp(comb, compare)==0)
            {
            }
            }
            }
           fclose (pFile);
           getch();
        return 0;
}
Дальше я так понимаю надо создать массив двумерный
В первое измерение - уникальные 3х знаковые строки
Во второе измерение - кол-во повторений уникальной строчки
Только как это сделать не пойму

Добавлено через 12 часов 36 минут
Подскажите кто нибудь
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.12.2010, 11:35     Сортировка по строкам
Посмотрите здесь:

Задача по строкам в С C++
Задание по строкам! C++
C++ Вопрос по строкам
C++ Задача по строкам
C++ по строкам
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
02.12.2010, 12:55     Сортировка по строкам #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
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
#include <iterator>
 
int main()
{
    std::ifstream ifs("1.txt");
    std::vector<std::string> VecStr;
    if(!ifs)
    {
        std::cerr << "File not find" << std::endl;
        return 1;
    }
    else
    {
        while(!ifs.eof())
        {
            std::string temp;
            ifs >> temp;
            VecStr.push_back(temp);
        }
    }
    std::sort(VecStr.begin(), VecStr.end());
    std::copy(VecStr.begin(), VecStr.end(), std::ostream_iterator<std::string>(std::cout, "\n"));
    return 0;
}
mtbiker
0 / 0 / 0
Регистрация: 01.12.2010
Сообщений: 3
02.12.2010, 20:08  [ТС]     Сортировка по строкам #3
asics это через векторы как я понял, спасибо попробую это внедрить !



Вот мне знакомый написал кусок, правда не работает, но компилиться
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
int main( )
{
        int i = 1;
        char* *uniquestring = new char*[i];
        int* numberofstrings = new int[i];
        numberofstrings[0]=0;
 
        pFile = fopen ("C://mylog.txt","r");
      {
        while (feof(pFile)==0)
           {
            fgets (sentence,255,pFile);
            strncpy(compare, sentence, 3);
            compare[4]='\0';
 
          
             if (i==1) uniquestring[i-1] = compare;
             else{
                for (int j = 0 ; j<i;j++){
                        if (*uniquestring[j]==*compare) numberofstrings[j]++;
                        else {
 
                        char* *unstr = new char*[i];
                        int* numstr = new int[i];
 
                        for (int r = 0;r<i;r++){
                                unstr[r] = uniquestring[r];
                                numstr[r] = numberofstrings[r];
                        };
                        i++;
                        uniquestring = new char*[i];
                        numberofstrings = new int[i];
                        for (int r = 0;r<i-1;r++){
                                uniquestring[r] = unstr[r];
                                numberofstrings[r] = numstr[r];
                        };
 
                        numberofstrings[i-1] = 0;
                        delete[] unstr;
                        delete[] numstr;
 
                        uniquestring[i-1]=compare;
                        };
                };
                  }
            for (int g = 0; g<i;g++){
                printf("%s ",uniquestring[g]);
                printf("%s ", numberofstrings[g]);
            };
        getch();
        return 0;
}
asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
02.12.2010, 20:10     Сортировка по строкам #4
mtbiker, Если вам нужно на С++, то мой код вполне удовлетворяет это условие.
mtbiker
0 / 0 / 0
Регистрация: 01.12.2010
Сообщений: 3
02.12.2010, 20:56  [ТС]     Сортировка по строкам #5
asics

зайди плз в Скайп, я хотел спросить тебя.
Или можно в контакте )
Yandex
Объявления
02.12.2010, 20:56     Сортировка по строкам
Ответ Создать тему
Опции темы

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