Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
1 / 1 / 1
Регистрация: 18.10.2011
Сообщений: 52

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

18.10.2011, 12:32. Показов 832. Ответов 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
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
18.10.2011, 12:32
Ответы с готовыми решениями:

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

Поиск по массиву структур (выдает ошибку)
Задача. Есть программа спектаклей на 25-27 апреля, я должен ввести любую из дат и увидеть время, название, цену и дату спектакля. вот...

Можно ли присвоить одному массиву структур значение другого массива структур и записать его в файл
Можно ли присвоить одному массиву структур значение другого массива структур и записать его в файл?

3
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
18.10.2011, 15:19
Цитата Сообщение от 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
23 / 23 / 11
Регистрация: 26.03.2011
Сообщений: 54
18.10.2011, 15:25
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
return (true);
 Аватар для mimicria
1977 / 1112 / 221
Регистрация: 19.04.2011
Сообщений: 2,346
18.10.2011, 15:26
Цитата Сообщение от Johnny13 Посмотреть сообщение
if (books[i].name == fname)
Для сравнения строк есть strcmp()
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
18.10.2011, 15:26
Помогаю со студенческими работами здесь

Помогите PLS найти ошибку в поиске:
Помогите PLS найти ошибку в поиске: есть форма в ней 2 поля txt поиск по любому одному из полей работает, по обоим полям он не нужен,...

Найти ошибку в программе по двумерному массиву
Помогите найти ошибку , программа ниже выдает мусор. Нужно подсчитать количество локальных минимумов заданной матрицы размером 10*10....

Найти ошибку в поиске среднего арифметического элементов массива
не могу понять где я в коде ошибку сделал код работает, а препод говорит иди думай где ошибся, и что то вообще не допру в чём ошибка ...

Не могу найти среднее по массиву в VB!
HELP!!!!Помогите написать програмку дла вычисления среднего по массиву в VB.

Ошибка при поиске по массиву
Объявление массивов var DogForm: TDogForm; BreedList : array of string; //Массив пород HeightList : array of real; ...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru