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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
K2rusH
0 / 0 / 0
Регистрация: 10.04.2009
Сообщений: 7
#1

Массив строк, не правильный поиск - C++

10.05.2009, 19:31. Просмотров 457. Ответов 7
Метки нет (Все метки)

Вводим имя, инструмент, год рождения, время обучения.
Хочу вывести имя ученика играюшего на скрипке, но он упорно выводит имена всех. Пробывал в разных вариациях, не только так, но уже устал, по этому обрашаюсь за помощью к вам.
Знаю что реализация через свич не очень, но вот так получилось.

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
#include<iostream.h>
#include<stdlib.h>
#include<conio.h>
#include<string.h>
#define N 2
 
 char name[N][10];
 char instrument[N];
 int year[N];
 int time[N];
 
   int menu();
   void enter();
   void search();
   int main()
   {
       enter();
       search();
       getch();
           return 0;
 
   }
   int menu()
   {
       int choice;
       cout <<"1.Ckpunka \n";
       cout <<"2.Gitara \n";
       cout <<"3.BA9H \n";
       cout <<"4.bapabaH \n";
       cout <<"Instrument? ";
       cin >> choice;
       return choice;
   }
   void enter()
   {
       int i,choice;
       for(i=0;i<N;i++)
       {
           cout << "name";
           cin >> name[i];
       choice = menu();
       switch(choice)
       {
       case 1: strcpy(instrument, "Ckpunka");
           break;
       case 2: strcpy(instrument, "Gitara");
           break;
       case 3: strcpy(instrument, "BA9H");
           break;
       case 4: strcpy(instrument, "bapabaH");
           cout << instrument;
           break;
       default: cout << "eIIIe \n \n";
 
       }
           cout << "year";
           cin >> year[i];
           cout << "time";
           cin >> time[i];
       }
   }
 
   void search()
   {
       int i;
       for(i=0;i<N;i++)
       {
           if (!strcmp(instrument, "Ckpunka"))
               cout << name[i];
               cout <<endl;
               getch();
       }
   }
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.05.2009, 19:31     Массив строк, не правильный поиск
Посмотрите здесь:

Динамический двумерный массив строк и операции со строками (поиск, обрезка, слияние) - C++
Создать динамический двумерный массив на 10 ячеек (для десяти строк). Заполнить его строчками текста, принятыми с клавиатуры. ...

Запросить название учебного заведения, специальность и номер группы. записав их в массив из 3 строк. Подсчитать длины каждой строк - C++
Запросить у пользователя название учебного заведения, специальность и номер группы. записав их в массив из 3 строк. Подсчитать длины каждой...

Добавление неодинаковых строк в массив строк - C++
Здравствуйте! Возникла такая проблема, не могу понять как реализовать добавление в массив строк нодинаковых значений. Вот моя проба, знаю,...

Внесение строк в массив строк (не сложно) - C++
Всем привет. Есть одна проблемка в решении задачи. Задачу я решил, но необходимо немного доделать. Прошу помощи! Заранее благодарен) ...

Задано массив строк произвольной длины. Отформатировать данный массив по ширине поля. - C++
Задано массив строк произвольной длины. Отформатировать данный массив по ширине поля.

Как перевести массив строк в массив int - C++
for (int i=0; i&lt;str.size(); i++) { str=static_cast&lt;int&gt;(str); } есть vector &lt;string&gt; str; Оно не...

Поиск строк - C++
Мне нужно найти в строке символ &quot;,&quot; и заменить ее. Данная программа демонстрирует нахождение одной запятой #include&lt;iostream&gt; ...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
D1m0n
3 / 3 / 1
Регистрация: 10.05.2009
Сообщений: 9
10.05.2009, 19:55     Массив строк, не правильный поиск #2
Хочу вывести имя ученика играюшего на скрипке, но он упорно выводит имена всех.
Так и должно быть, нет ?
C
1
2
if (!strcmp(instrument, "Ckpunka"))
                           cout << name[i];
Если инструмент не скрипка, вывести имя, так ?
Убрать восклицательный знак наверно нужно перед сравнением строк.

Массив instrument может расширить, два символа маловато, чтобы записать в него слово "Ckpunka".
K2rusH
0 / 0 / 0
Регистрация: 10.04.2009
Сообщений: 7
10.05.2009, 20:32  [ТС]     Массив строк, не правильный поиск #3
По-моиму так быть не должно, ибо вывод определяется условием.
"При использовании функции strcmp() важно помнить, что она возврашается число 0, если сравнивыемые строки равны. Следовательно, если вым необходимо выполнить определённые действия при условии совпадения строк, вы должны использовать оператор НЕ (!).
Массив расширил.
Gravity
562 / 556 / 39
Регистрация: 29.01.2009
Сообщений: 1,274
10.05.2009, 20:36     Массив строк, не правильный поиск #4
Код
 char name[N][10];
 char instrument[N];
 int year[N];
 int time[N];
Эти данные надо оформлять структурой.
Цитата Сообщение от K2rusH Посмотреть сообщение
Хочу вывести имя ученика играюшего на скрипке, но он упорно выводит имена всех.
Ну дык, переменная instrument у тебя же одна на всех, если последний раз в нее записывалась скрипка, то все имена и выведутся.
K2rusH
0 / 0 / 0
Регистрация: 10.04.2009
Сообщений: 7
10.05.2009, 20:45  [ТС]     Массив строк, не правильный поиск #5
Угу, я это немного осознал =) А как исправить не подскажете?
Gravity
562 / 556 / 39
Регистрация: 29.01.2009
Сообщений: 1,274
10.05.2009, 20:55     Массив строк, не правильный поиск #6
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
#include<iostream.h>
#include<stdlib.h>
#include<conio.h>
#include<string.h>
#define N 2
 
struct user {
    char name[80];
    char instrument[20];
    int year;
    int utime;
} usertab[N];
 
int menu();
void enter();
void search();
 
int main()
{
    enter();
    search();
    getch();
    return 0;
}
 
int menu()
{
    int choice;
    cout <<"1.Ckpunka \n";
    cout <<"2.Gitara \n";
    cout <<"3.BA9H \n";
    cout <<"4.bapabaH \n";
    cout <<"Instrument? ";
    cin >> choice;
    return choice;
}
 
void enter()
{
    int i,choice;
    for(i=0;i<N;i++) {
        cout << "name";
        cin >> usertab[i].name;
        choice = menu();
        switch(choice) {
            case 1: strcpy(usertab[i].instrument, "Ckpunka");
                    break;
            case 2: strcpy(usertab[i].instrument, "Gitara");
                    break;
            case 3: strcpy(usertab[i].instrument, "BA9H");
                    break;
            case 4: strcpy(usertab[i].instrument, "bapabaH");
                    break;
            default: cout << "eIIIe \n \n";
        }
        cout << "year";
        cin >> usertab[i].year;
        cout << "time";
        cin >> usertab[i].utime;
    }
}
 
void search()
{
    int i;
    for(i=0;i<N;i++)
        if (!strcmp(usertab[i].instrument, "Ckpunka"))
            cout << usertab[i].name << endl;
}
K2rusH
0 / 0 / 0
Регистрация: 10.04.2009
Сообщений: 7
10.05.2009, 21:08  [ТС]     Массив строк, не правильный поиск #7
Ух. Это впечатляет. Спасибо.
А можно обьяснить или ссылочку, где будет описано что такое usertab?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.05.2009, 21:22     Массив строк, не правильный поиск
Еще ссылки по теме:

Поиск строк - C++
Здраствуйте, подскажите какие есть реализации или как это сделать примерно. Задача в поиске строк в файле, можно воспользоватся регулярными...

Поиск в массиве строк - C++
Добрый день Возник глупый вопрос. Пытаюсь сделать поис в строковом массиве не как не получается подскажите что не такк. Сам массив...

Поиск строк по образцу - C++
Если в командной строке заданы опции -x -n &lt;образец&gt;, то необходимо распечатать те строки введенного текста с их номерами, в которых не...

Преобразовать массив Int в массив строк - C++
Помогите пожалуйста с решением. Нужно в каждый элемент массива string положитm элемент массива int. Т.е из int i={1,12,100} получить...

Поиск строк, начинающихся с пробела. - C++
Нужно посчитать количество строк в файле, начнающихся с пробела и вывести количество в выходной файл. Выдает ошибку=( Почему? ...


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

Или воспользуйтесь поиском по форуму:
Gravity
562 / 556 / 39
Регистрация: 29.01.2009
Сообщений: 1,274
10.05.2009, 21:22     Массив строк, не правильный поиск #8
usertab - это массив структур типа user, учи лучше что такое структуры
http://www.cplusplus.com/doc/tutorial/structures/
http://masterpc.alfaspace.net/books/...programming/6/
Yandex
Объявления
10.05.2009, 21:22     Массив строк, не правильный поиск
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru