0 / 0 / 0
Регистрация: 22.11.2016
Сообщений: 18
1

Ошибка несовместимости типов данных в бинарном поиске

05.06.2017, 10:09. Показов 960. Ответов 12
Метки нет (Все метки)

Ошибка в несовместимости типов данных, но как ее исправить?
C++
1
2
3
4
5
6
7
struct Dostopr
{
char nazvanie[15];
char strana[15];
int year;
int visota;
}
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
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
case 6:{
 
cout << "Название достопримечательности" << endl;
 
cout << "_______________" << endl;
 
for (i = 0; i < n; i++)
 
{
 
cout << mDostopr[i].nazvanie << endl;
 
}
 
for (i = 0; i < n - 1; i++)
 
{
 
for (j = i + 1; j < n; j++)
 
{
 
if (mDostopr[i].nazvanie > mDostopr[j].nazvanie)
 
{
 
minim = mDostopr[i].nazvanie;
 
mDostopr[i].nazvanie=mDostopr[j].nazvanie;
 
mDostopr[j].nazvanie = minim;
 
swap(mDostopr[i].nazvanie, mDostopr[j].nazvanie); //Обменивает значения своих аргументов
 
swap(mDostopr[i].strana, mDostopr[j].strana);
 
swap(mDostopr[i].year, mDostopr[j].year);
 
swap(mDostopr[i].visota, mDostopr[j].visota);
}
 
}
 
}
 
for (i = 0; i < n; i++)
 
{
 
p[i] = mDostopr[i].nazvanie;
 
}
w1:
cout << "Введите название достопримечатльности = ";
 
cin >> q;
 
for (i = 0; i < n; i++)
 
{
 
if (q == p[i])
 
{
 
goto w2;
 
}
 
}
 
for (j = 0; j < n; j++)
 
{
 
if (q != p[j])
 
{
 
cout << "Такого названия достопримечательности не существует" << endl;
 
goto w1;
 
}
 
}
 
w2:
 
r = binSearch(p, q, n);
 
cout << "Название \t Страна \t Год создания \t Высота" << endl;
 
cout << "=====================================================================================================" << endl;
 
if (r >= 0)
 
cout << mDostopr[i].nazvanie << "\t\t" << mDostopr[i].strana <<  "\t\t" << mDostopr[i].year << "\t\t" << mDostopr[i].visota << endl;
 
goto start;
 
break;
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.06.2017, 10:09
Ответы с готовыми решениями:

Ошибка в несовместимости типов
Отрывок : int main() { char choice; list(); for(;;) { choice = menu();//Показывает ошибку &quot;...

Вывод нескольких значений в бинарном поиске из массива структур
Существует массив структур. Структура: struct StructWords { char Word; char Name; }; В этой...

Ошибка типов данных
У меня возник вопрос: Запускаю программу Я должен ввести число от одного до трех, после значение...

Ошибка несовместимости типов
Имеется такая ошибка, у меня есть свой тип, назовем tMine, а так же есть строка S типа string....

12
10 / 8 / 6
Регистрация: 14.05.2017
Сообщений: 58
05.06.2017, 10:12 2
В какой строке ошибка?
0
с++
1282 / 523 / 225
Регистрация: 15.07.2015
Сообщений: 2,562
05.06.2017, 10:20 3
Цитата Сообщение от Мария124 Посмотреть сообщение
Ошибка в несовместимости типов данных
это когда вы пытаетесь добавить в переменную которая к примеру хранит символы а вы добавляете цыфры
0
509 / 402 / 187
Регистрация: 08.04.2013
Сообщений: 1,724
05.06.2017, 10:29 4
27 minim где объявление? char minim[15]
0
0 / 0 / 0
Регистрация: 22.11.2016
Сообщений: 18
05.06.2017, 12:54  [ТС] 5
marat_miaki,
C++
1
2
3
4
5
6
7
8
int main()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251); 
int n = 0, p = 3, i, j,minim;
int q, r;
Dostopr x;
Dostopr *mDostopr = new Dostopr[n];


Добавлено через 2 минуты
wk__, в 27,потом в 50,62,76 и 90

Добавлено через 1 минуту
Antikl, я понимаю, но а как тогда мне поиск осуществлять?
0
509 / 402 / 187
Регистрация: 08.04.2013
Сообщений: 1,724
05.06.2017, 14:24 6
объявляешь int n = 0, p = 3, i, j,minim;
но mDostopr[i].nazvanie это char[15];
C++
1
27 minim = mDostopr[i].nazvanie;
p тоже int, а используешь как массив,
так объяви как массив char p[n];

Добавлено через 11 минут
В переменной minim пользы нет, нет пользы от кода 27-32 - можно удалить, итак 33 строка отработала бы , а так только путает все

Добавлено через 27 минут
подправить обяъявления переменных на естественно n уже должен быть конкретезирован
C++
1
2
char* p[n];
char q[15], r[15];
0
0 / 0 / 0
Регистрация: 22.11.2016
Сообщений: 18
05.06.2017, 16:44  [ТС] 7
Цитата Сообщение от marat_miaki Посмотреть сообщение
2
char* p[n];
char q[15], r[15];
marat_miaki, Теперь все классно,но ошибка в 90 строке.
0
509 / 402 / 187
Регистрация: 08.04.2013
Сообщений: 1,724
05.06.2017, 17:19 8
Покажи код этой функции, она же где-то объявлена(прописана), по первым двум параметрам и по этому коду видно что пока смысла она никакого не имеет. Временно можно строки 90 и 96 закомментировать.
0
0 / 0 / 0
Регистрация: 22.11.2016
Сообщений: 18
05.06.2017, 17:22  [ТС] 9
marat_miaki,
C++ (Qt)
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
int binSearch(int a[], int key, int n) {
    int l = 0;
    int r = n - 1;
    int m;
    int k;
 
    while (l < r)
    {
        m = (int)(l + r) / 2.;
        if (key < a[m])
        {
            r = m - 1;
        }
        else if (key > a[m])
        {
            l = m + 1;
        }
        else
        {
            k = a[m];
            return m;
        }
    }
    return r;
}
0
509 / 402 / 187
Регистрация: 08.04.2013
Сообщений: 1,724
05.06.2017, 18:01 10
Понял что это код бинарного поиска, только не ясен смысл переменной int k; которая в 20 строке только сгенирирует ошибку, потому что она должна быть char [15], 20 строку и эту переменную можно удалить тоже, переменная k ни на что не повлияет.
Строка 62 верхнего кода вроде бы итак даёт достаточно информации для дальнейшей обработки, чем дополнительный бинарный поиск
0
0 / 0 / 0
Регистрация: 22.11.2016
Сообщений: 18
05.06.2017, 18:42  [ТС] 11
marat_miaki, такая вот ошибка, ту строчку удалила.[Error] cannot convert 'char**' to 'int*' for argument '1' to 'int binSearch(int*, int, int)'
C++ (Qt)
1
r = binSearch(p, q, n);
0
с++
1282 / 523 / 225
Регистрация: 15.07.2015
Сообщений: 2,562
05.06.2017, 19:08 12
Цитата Сообщение от Мария124 Посмотреть сообщение
r
эта переменная тип ее int?
0
509 / 402 / 187
Регистрация: 08.04.2013
Сообщений: 1,724
05.06.2017, 19:20 13
C++
1
 int binSearch(char* a[], char key, int n)
вторая key уточнить

Добавлено через 11 минут
Если используете чужие функции сперва разберитесь зачем она нужна, какие аргументы принимает, что возвращает, потом только используйте, я вам предложил вообще её попробовать не использовать, смысла пока от него вроде нет, указал же ваша 62 строка уже находит что надо
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.06.2017, 19:20
Помогаю со студенческими работами здесь

Ошибка несовместимости типов при выполнении
Программа выполняется в 7 версии делфи, запустил на XE для компилирования под х64, тут вот что....

Ошибка несовместимости типов в присваивании в функции dbrun
Так вот ошибка несовместимости типов в присваивании в функции dbrun. Хотя на мой взгляд типы...

Ошибка в бинарном поиске
Здравствуйте, помогите, пожалуйста, найти ошибку в процедуре бинарного поиска: procedure...

Проблема подключения базы данных. Ошибка сообщает о несовместимости версий
Доброго времени суток. При попытке создания нового соединения выдаёт ошибку что база имеет версию...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru