Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

18.10.2011, 12:32. Просмотров 469. Ответов 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;
}
}
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.10.2011, 12:32
Здравствуйте! Я подобрал для вас темы с ответами на вопрос не могу найти ошибку в поиске по массиву структур (C++):

Не могу найти ошибку в поиске знака соседей элемента массива - 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 Так понел, что это неправильно. Как тогда, подскажите...

3
-=ЮрА=-
Заблокирован
Автор 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);
- так уже приемлимо будет
0
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;
}
0
mimicria
return (true);
1958 / 1095 / 91
Регистрация: 19.04.2011
Сообщений: 2,345
18.10.2011, 15:26 #4
Цитата Сообщение от Johnny13 Посмотреть сообщение
if (books[i].name == fname)
Для сравнения строк есть strcmp()
1
18.10.2011, 15:26
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&gt; using namespace std; void obr1(char **s, char **mas, int n, int m) { int i; int k; char *tm; for(i...

Массивы. Посчитать количество положительных, найти минимальное, удалить строку с минимальным (Не могу найти ошибку) - C++
// Заданы матрицы X(8;4),Y(5;5),Z(6;9). // Для каждой из матриц определить строку, в которой находится наименьшее // количество...


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

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

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