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

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

Восстановить пароль Регистрация
 
Johnny13
1 / 1 / 1
Регистрация: 18.10.2011
Сообщений: 24
18.10.2011, 12:32     не могу найти ошибку в поиске по массиву структур #1
Здравствуйте.
Дали задание:

Дан массив структур. Каждая структура содержит информацию о книгах в библиотеке (придумать 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++ Не могу найти ошибку
Адресное обращение к массиву структур C++
Не могу найти ошибку C++
Поиск по массиву структур C++
Не могу найти ошибку C++
C++ Найти ошибку - после работы функции addStudent, оценки старых студентов не присваиваются новому массиву
C++ Помогите найти ошибку при поиске отрицательного элемента массива
C++ Вывод нескольких значений в бинарном поиске из массива структур
Обращение к массиву структур C++
C++ Не могу найти ошибку в поиске знака соседей элемента массива
C++ Обращение к массиву структур, почему именно так?

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

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

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