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

Поиск в массиве - C++

Восстановить пароль Регистрация
 
m1x
5 / 5 / 0
Регистрация: 20.11.2010
Сообщений: 173
07.05.2011, 23:10     Поиск в массиве #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
#include <iostream>
 
using namespace std;
 
int main( void ) {
 
int index= -1, key, i;
 
cout <<"Enter key:";
cin >>key;
 
const int N= 10;
int a[N]= { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
 
for ( i= 0; i<N; i++ ) {
        if ( key == a[i] ) { index= i; break; }
}
 
if ( index>=0 ) {
        cout <<"Found index: " <<index <<"\n";
} else {
        cout <<"Not found index\n";
}
return 0;
 
}
переделал в

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
#include <iostream>
 
using namespace std;
 
int main( void ) {
 
int index= -1, i;
char key;
 
cout <<"Enter key:";
cin >>key;
 
const int N= 10;
char a[N]= { "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX", "X" };
 
for ( i= 0; i<N; i++ ) {
        if ( key == a[i] ) { index= i; break; }
}
 
if ( index>=0 ) {
        cout <<"Found index: " <<index <<"\n";
} else {
        cout <<"Not found index\n";
}
return 0;
 
}
не компилируется
в чем моя ошибка
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.05.2011, 23:10     Поиск в массиве
Посмотрите здесь:

C++ Поиск в массиве
C++ Поиск в массиве
C++ поиск слова в массиве
C++ Поиск в массиве
поиск в массиве C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
CEBEP
105 / 105 / 9
Регистрация: 21.03.2010
Сообщений: 437
08.05.2011, 00:29     Поиск в массиве #2
C++
1
char a[N]= { "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX", "X" };
так нельзя. можно так:
C++
1
char a[][5]= { "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX", "X" };
Добавлено через 5 минут
Так будет норм, вроде-бы
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
#include<iostream>
#include<cstring>
using namespace std;
 
int main( void ) {
 
    int index= -1, i;
    char key[5];
 
    cout <<"Enter key:";
    cin >>key;
 
    const int N= 10;
    char a[][5]= { "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX", "X" };
 
    for ( i= 0; i<N; i++ )
        if ( strstr(key, a[i])) { index= i; break; }
 
    if ( index>=0 )
        cout <<"Found index: " << index + 1 <<"\n";
    else
        cout <<"Not found index\n";
    return 0;
 
}
m1x
5 / 5 / 0
Регистрация: 20.11.2010
Сообщений: 173
08.05.2011, 15:46  [ТС]     Поиск в массиве #3
Цитата Сообщение от CEBEP Посмотреть сообщение
C++
1
char a[N]= { "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX", "X" };
так нельзя. можно так:
C++
1
char a[][5]= { "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX", "X" };
Добавлено через 5 минут
Так будет норм, вроде-бы
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include<iostream>
#include<cstring>
using namespace std;
 
int main( void ) {
 
    int index= -1, i;
    char key[5];
 
    cout <<"Enter key:";
    cin >>key;
 
    const int N= 10;
    char a[][5]= { "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX", "X" };
 
    for ( i= 0; i<N; i++ )
        if ( strstr(key, a[i])) { index= i; break; }
 
    if ( index>=0 )
        cout <<"Found index: " << index + 1 <<"\n";
    else
        cout <<"Not found index\n";
    return 0;

спасибо, а почему именно так

C++
1
char a[][5]= { "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX", "X" };
это типа 10 элементов, каждый из которых в свою очередь состоит из 5?

Добавлено через 1 час 19 минут
з.ы. работает не совсем корректно
CEBEP
105 / 105 / 9
Регистрация: 21.03.2010
Сообщений: 437
08.05.2011, 15:57     Поиск в массиве #4
Достаточно тут поменять местами...
C++
1
strstr(a[i],key)
а char a[][5] получается следующим образом:
вы создаёте массив символьных массивов. Самый длинный из них - VIII, это 4 символа + нулевой, таким образом мы получаем длину массива символов. а первые [] оставлены пустыми потому, что количество строковых массивов компилятор может взять из их количества в инициализирующей строке. если режет глаз - можно вставить туда N
m1x
5 / 5 / 0
Регистрация: 20.11.2010
Сообщений: 173
08.05.2011, 16:02  [ТС]     Поиск в массиве #5
Цитата Сообщение от CEBEP Посмотреть сообщение
Достаточно тут поменять местами...
C++
1
strstr(a[i],key)
а char a[][5] получается следующим образом:
вы создаёте массив символьных массивов. Самый длинный из них - VIII, это 4 символа + нулевой, таким образом мы получаем длину массива символов. а первые [] оставлены пустыми потому, что количество строковых массивов компилятор может взять из их количества в инициализирующей строке. если режет глаз - можно вставить туда N
Все отлично, очень благодарен Вам
Yandex
Объявления
08.05.2011, 16:02     Поиск в массиве
Ответ Создать тему
Опции темы

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