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

Вывод полей класса после сравнения - C++

Восстановить пароль Регистрация
 
zhenya.ya
1 / 1 / 0
Регистрация: 29.11.2009
Сообщений: 304
24.05.2011, 00:29     Вывод полей класса после сравнения #1
Проблема: (Нужно отыскать нужный фильм и вывести данные об нем.) Если еще конкретнее, то почему после успешного сравнения некорректно выводятся данные об фильме: название выводится правильно, а вот жанру фильма почемуто ставится в соотвествие данные следующего за ним поля ??
(Ход решения и 2 скрина с входными данными и результатом работы см.ниже).

Имеется класс "фильмы" с полями назвиние, жанр и т.д.
C++
1
2
3
4
5
6
  class films{        
  char **film_name;        // название фильма
  char **film_genre;              // жанр
  char **playing_the_main_roles; 
  ...
};
Так я заполняю эти поля:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
for( int i=0;i<2;i++) // к примеру, 2 фильма
    {
             film_name = new char *[1000];
    film_genre = new char *[1000];
 
             cout<<" input the name of film:"<<endl;
    fgets(Fname,80,stdin);
    film_name[i] = new char [strlen(Fname)+1];
    strcpy(film_name[i],Fname);
 
    cout<<" input film genre: "<<endl;
    fgets(Genre,80,stdin);
    film_genre[i] = new char [strlen(Genre)+1];
    strcpy(film_genre[i],Genre);
    ...
Вот тут я хочу отыскать нужный фильм и вывести данные об нем:

C++
1
2
3
4
5
6
7
8
9
10
cout<<" input film`s name: ";
    fgets(str,80,stdin);
    for(i=0;i<2;++i)
        if(strcmp(str,film_name[i])==0)
        {
            cout<<"Congratulation! Film was found! "<<endl;
 
            cout<<"name: "<<film_name[i];
            cout<<"genre: "<<film_genre[i];
                                         ............
Миниатюры
Вывод полей класса после сравнения   Вывод полей класса после сравнения  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.05.2011, 00:29     Вывод полей класса после сравнения
Посмотрите здесь:

Получения количества полей класса C++
Два класса, ошибка из-за приватности полей C++
Что возвращает функция после сравнения? C++
C++ Сортировка по одному из полей класса
C++ Доступ к значениям полей класса
C++ Наиболее быстрый способ сравнения двух экземпляров структур на предмет одинаковости их полей
Реализовать операторы сравнения двух экземпляров класса (==, !==) C++
C++ Вывод полей класса через статический вектор

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
NightmareZ
 Аватар для NightmareZ
1336 / 559 / 37
Регистрация: 31.03.2009
Сообщений: 1,907
24.05.2011, 01:15     Вывод полей класса после сравнения #2
У тебя неправильно всё.

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
#include <iostream>
#include <iterator>
#include <string>
#include <list>
#include <algorithm>
 
class Film
{
public:
    std::string name;
    std::string genre;
 
    friend std::istream& operator>>(std::istream& input, Film& film)
    {
        std::cout << "Input name: ";
        input >> film.name;
        std::cout << "Input genre: ";
        input >> film.genre;
        return input;
    }
 
    friend std::ostream& operator<<(std::ostream& output, const Film& film)
    {
        return output << "Name: " << film.name << std::endl
                      << "Genre: " << film.genre << std::endl;
    }
};
 
int main()
{
    std::list<Film> films(
        (std::istream_iterator<Film>(std::cin)),
         std::istream_iterator<Film>());
    std::cin.clear();
 
    std::cout << "Search. Please input name: ";
    std::string name;
    std::cin >> name;
 
    std::for_each(films.begin(), films.end(), [&name](Film& film) 
        { 
            if (name == film.name)
                std::cout << film;
        });
    return 0;
}
Yandex
Объявления
24.05.2011, 01:15     Вывод полей класса после сравнения
Ответ Создать тему
Опции темы

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