С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
16 / 16 / 12
Регистрация: 10.11.2012
Сообщений: 245
1

Сравнение элементов масивов

18.11.2015, 19:24. Показов 445. Ответов 0
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте.
Почему то сравнение происходит не корректно, не знаю в чём причина, испробовал 2 варианта и оба дают идентично неправильный (не ожидаемый )результат.
Желаемый результат, программа сравнивает элементы и при совпадении выводит файл целиком, определённая строка которого совпала с ключом.

Небольшое пояснение
C++
1
buff[s - 1]=buff[1]
C++
1
s = 2
1 вариант (сравнение через функцию):
Кликните здесь для просмотра всего текста
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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
                case 2:
                {
                    unsigned short tr=3;
                    //tr = f() - 1;
                    string buff[5];
                    string t[100];
                    
                    for (unsigned short i = 0; i <= tr; i++)
                    {
                        string a = "c" + to_string(i) + ".txt";
                        static char *cstr = new char[a.length() + 1];
                        strcpy(cstr, a.c_str());
 
                        ifstream c(cstr);
 
                        if (c.is_open())
                        {
                            for (int j = 0; j < s; j++)
                            {
                                c >> t[i];
                            }
                        }
                        c.close();
                    }
 
                    for (int idx_i = 0; idx_i < tr - 1; idx_i++)
                    {
                        for (int idx_j = 0; idx_j < tr - idx_i - 1; idx_j++)
                        {
                            if (t[idx_j + 1] < t[idx_j])
                            {
                                swap(t[idx_j], t[idx_j + 1]);
                            }
                        }
                    }
                    
                    unsigned short f = 0;
 
                    do
                    {
                        string a = "c" + to_string(f) + ".txt";
                        static char *cstr = new char[a.length() + 1];
                        strcpy(cstr, a.c_str());
 
                        ifstream c(cstr);
 
                        if (c.is_open())
                        {
                            for (int l = 0; l < 5; l++)
                            {
                                c >> buff[l];
                            }
 
                            cout<<t[f]<<endl;
                        
                            for (int k = 0; k < tr; k++)
                            {
                                char *b = new char[buff[s - 1].length() + 1];
                                strcpy(b, buff[s - 1].c_str());
 
                                char *q = new char[t[k].length() + 1];
                                strcpy(q, t[k].c_str());
 
                                int p = strncmp(q, b, 2);
 
                                if (p==0)
                                {
                                    for (int l = 0; l < 5; l++)
                                    {
                                        c >> buff[l];
                                        cout << buff[l]<<endl;
                                    }
                                }
                            }
                        }
                    
                        c.close();
 
                        f++;
                    }
                    while (f <= tr);
                        
                }

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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
                case 2:
                {
                    unsigned short tr=3;
                    //tr = f() - 1;
                    string buff[5];
                    string t[100];
                    
                    for (unsigned short i = 0; i <= tr; i++)
                    {
                        string a = "c" + to_string(i) + ".txt";
                        static char *cstr = new char[a.length() + 1];
                        strcpy(cstr, a.c_str());
 
                        ifstream c(cstr);
 
                        if (c.is_open())
                        {
                            for (int j = 0; j < s; j++)
                            {
                                c >> t[i];
                            }
                        }
                        c.close();
                    }
 
                    for (int idx_i = 0; idx_i < tr - 1; idx_i++)
                    {
                        for (int idx_j = 0; idx_j < tr - idx_i - 1; idx_j++)
                        {
                            if (t[idx_j + 1] < t[idx_j])
                            {
                                swap(t[idx_j], t[idx_j + 1]);
                            }
                        }
                    }
                    
                    
                    unsigned short f = 0;
 
                    do
                    {
                        string a = "c" + to_string(f) + ".txt";
                        static char *cstr = new char[a.length() + 1];
                        strcpy(cstr, a.c_str());
 
                        ifstream c(cstr);
 
                        if (c.is_open())
                        {
                            for (int l = 0; l < 5; l++)
                            {
                                c >> buff[l];
                                //cout << buff[l]<<endl;
                            }
                            //cout << buff[1]<<endl;
 
                            cout<<t[f]<<endl;
                        
                            for (int k = 0; k < tr; k++)
                            {
                                
                                if (t[k]==buff[s-1])
                                {
                                    for (int l = 0; l < 5; l++)
                                    {
                                        c >> buff[l];
                                        cout << buff[l]<<endl;
                                    }
                                }
                            }
                        }
 
                        c.close();
 
                        f++;
                    }
                    while (f <= tr);
                }


Способных, прошу откликнутся.

Добавлено через 1 час 28 минут
Разобрался
Кликните здесь для просмотра всего текста
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
                    for (int v = 0; v < tr; v++)
                    {
                        //cout << t[v] << endl;
                        
                        for (unsigned short i = 0; i <= tr; i++)
                        {
                            string a = "c" + to_string(i) + ".txt";
                            static char *cstr = new char[a.length() + 1];
                            strcpy(cstr, a.c_str());
 
                            ifstream c(cstr);
 
                            if (c.is_open())
                            {
                                for (int l = 0; l < 5; l++)
                                {
                                    c >> buff[l];
                                    //cout << buff[l]<<endl;
                                }
                                //cout << buff[1]<<endl;
 
                                char *b = new char[buff[s - 1].length() + 1];
                                strcpy(b, buff[s - 1].c_str());
 
                                char *q = new char[t[v].length() + 1];
                                strcpy(q, t[v].c_str());
 
                                int p = strncmp(q, b, 2);
 
                                if (p == 0)
                                {
                                    for (int l = 0; l < 5; l++)
                                    {
                                        c >> buff[l];
                                        cout << buff[l] << endl;
                                    }
                                }
                                c.close();
                            }
                        }
                    }
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.11.2015, 19:24
Ответы с готовыми решениями:

Из двух масивов создать третий из разных элементов
Здравствуйте!!!! Помогите, пожалуйста, с задачкой : Даны два массива: А и B , на основе которых...

Сравнение масивов
Задача: Удалить из слова X те буквы, что используются при написании слова Y. прошу помочь мне...

Сравнение многомерных масивов
Дорого времени суток. Вообще я начинающий в php... И вот появилась необходимость сравнить между...

сравнение значений элементов столбца с числом и преобразование этих элементов к логическому типу
Здравствуйте! Имеется столбец, в котором записаны значения (от 1 до 36) и число N мне нужно...

0
18.11.2015, 19:24
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.11.2015, 19:24
Помогаю со студенческими работами здесь

Сортировка масивов
Сабж. Не могу додуматься до решения, особенно вторая задача. 1. Организуйте массив, содержащий 20...

Перенагрузка масивов
Перегрузить масив в виде очереди.Выручайте АДТ - черга. Додатково перевантажити наступні операції:...

Создание масивов
unsigned char buffer; evt_le_meta_event* meta = (evt_le_meta_event*)(buffer + HCI_EVENT_HDR_SIZE +...

Создание масивов
Всем доброго времени суток, вопрос такой, как создать массив со вложенным массивом по типу $_FILES...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru