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

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

Войти
Регистрация
Восстановить пароль
 
Johnny13
1 / 1 / 1
Регистрация: 18.10.2011
Сообщений: 43
#1

не могу найти ошибку в поиске по массиву структур - C++

18.10.2011, 12:32. Просмотров 461. Ответов 3
Метки нет (Все метки)

Здравствуйте.
Дали задание:

Дан массив структур. Каждая структура содержит информацию о книгах в библиотеке (придумать 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
26
27
28
29
30
31
32
33
34
35
36
37
#include "conio.h"
#include "stdio.h"
#include "iostream"
using namespace std;
 
int main()
{
struct book
 
{
char name[64];
char name_autor[30];
char izdatelstvo[10];
int god_vypuska;
int stranicy;
 
} books[5]={
{"Eva","Kris Karter","ACT",1999,400},
{"10 tain ohotnika na demonov","Svetlana Golshanskay","ACT",2011,257},
{"Pilot mechty","Aleksandr Zorich","ACT",2011,200},
{"Pepelnye ludi","Aleksandr Kontorovich","Samizdat",2011,110},
{"Ohotnik iz teni - 2","Anton Demchenko","Samizdat",2011,614}
};
 
char *fname;
printf("Poisk po nazvaniu knigi\nVvedite nazvanie...\n");
scanf("%s", &fname);
for (i = 0; i < 5; i++)
{
 
 
if (books[i].name == fname)
{
cout<<books[i].name <<" "<<books[i].name_autor<<" "<< books[i].izdatelstvo<<" "<< books[i].god_vypuska <<" "<< books[i].stranicy<<endl;
}
}
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.10.2011, 12:32     не могу найти ошибку в поиске по массиву структур
Посмотрите здесь:

Не могу найти ошибку в поиске знака соседей элемента массива - C++
ничего не выводит, работаю в Dev-c++. #include &lt;iostream&gt; #include &lt;cmath&gt; using namespace std; int main(){ int n; ...

Помогите найти ошибку при поиске отрицательного элемента массива - C++
#include &lt;iostream&gt; #include &lt;conio.h&gt; using namespace std; void SetRussianLocale() { setlocale(LC_ALL, &quot;Russian&quot;); } int...

Найти ошибку - после работы функции addStudent, оценки старых студентов не присваиваются новому массиву - C++
Помогите найти ошибку. После работы функции addStudent, оценки старых студентов не присваиваются новому массиву. struct student{ ...

Обращение к массиву структур - C++
Структура объявлена в отдельной трансляции, там же объявлена функция заполнения двумерного массива структур, а по возвращении в main не...

Поиск по массиву структур - C++
Создать структуру, которая содержит информацию о покупателе (имя, фамилия, адрес в виде вложеной структуры и т. д.) и заполнить её в виде...

Адресное обращение к массиву структур - C++
когда пробегаю по циклу, например, обращаюсь вот так: *(a+i).pole_1.pole_2 Так понел, что это неправильно. Как тогда, подскажите...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
-=ЮрА=-
Заблокирован
Автор FAQ
18.10.2011, 15:19     не могу найти ошибку в поиске по массиву структур #2
Цитата Сообщение от Johnny13 Посмотреть сообщение
char *fname;
printf("Poisk po nazvaniu knigi\nVvedite nazvanie...\n");
scanf("%s", &fname);
- это неверно под fname память не выделена, если и отработает так в Debug - и то врядли!
C
1
2
3
char fname[64];
printf("Poisk po nazvaniu knigi\nVvedite nazvanie...\n");
scanf("%s", fname);
- так уже приемлимо будет
Wanderer1
23 / 23 / 4
Регистрация: 26.03.2011
Сообщений: 54
18.10.2011, 15:25     не могу найти ошибку в поиске по массиву структур #3
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
#include "conio.h"
#include "stdio.h"
#include <iostream>
using namespace std;
 
struct book
{
    char name[64];
    char name_autor[30];
    char izdatelstvo[10];
    int god_vypuska;
    int stranicy;
} books[5]={{"Eva","Kris Karter","ACT",1999,400},
{"10 tain ohotnika na demonov","Svetlana Golshanskay","ACT",2011,257},
{"Pilot mechty","Aleksandr Zorich","ACT",2011,200},
{"Pepelnye ludi","Aleksandr Kontorovich","Samizdat",2011,110},
{"Ohotnik iz teni - 2","Anton Demchenko","Samizdat",2011,614}
};
int main()
{    
    int j=0;
    char fname1[80], fname[]= "quit";
    printf("Poisk po nazvaniu knigi\nVvedite nazvanie...\n");
    bool f=true;
    while (f){  
        cin.getline(fname1,80);     
        if (strstr(fname1,fname)) f=false;
        else{
            for (int i = 0; i < 5; i++) 
                if (strstr(books[i].name,fname1)){j++;
                    cout<<books[i].name <<" "<<books[i].name_autor<<" "<< books[i].izdatelstvo;
                    cout<<" "<< books[i].god_vypuska <<" "<< books[i].stranicy<<endl;}
            if (j==0)cout<<"net takogo"<<endl;
        }}
    return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.10.2011, 15:26     не могу найти ошибку в поиске по массиву структур
Еще ссылки по теме:

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

Обращение к массиву структур, почему именно так? - C++
Почему в не которых функциях к елементам структуры обращаются *invtry , а в других просто invtry? #include &lt;stdafx.h&gt; #include...

Не могу найти ошибку! - C++
Вобщем вот программа. #include &lt;iostream.h&gt; #include &lt;math.h&gt; #include &lt;iomanip.h&gt; #include &lt;conio.h&gt; int main () { ...

Не могу найти ошибку - C++
Всем привет. НАчал читать учебник Дейтеля (5е издание), дошел до момента &quot;отделение интерфейса от реализации&quot;, и в примерах, которые...


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

Или воспользуйтесь поиском по форуму:
mimicria
return (true);
1956 / 1093 / 91
Регистрация: 19.04.2011
Сообщений: 2,345
18.10.2011, 15:26     не могу найти ошибку в поиске по массиву структур #4
Цитата Сообщение от Johnny13 Посмотреть сообщение
if (books[i].name == fname)
Для сравнения строк есть strcmp()
Yandex
Объявления
18.10.2011, 15:26     не могу найти ошибку в поиске по массиву структур
Ответ Создать тему
Опции темы

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