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

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

Войти
Регистрация
Восстановить пароль
 
zhenya.ya
1 / 1 / 0
Регистрация: 29.11.2009
Сообщений: 305
#1

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

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

Вывод полей класса через статический вектор - C++
Долго не мусоля покажу имеющийся код: описание класса: class Document { public: Document(string naimenowanie_); ...

Наиболее быстрый способ сравнения двух экземпляров структур на предмет одинаковости их полей - C++
Есть структура, в которой есть несколько int-ов и char-ов, какой имеется наиболее быстрый способ в C/C++ для сравнения двух экземпляров...

Реализовать операторы сравнения двух экземпляров класса (==, !==) - C++
Приведите пример такой перегрузки, пожалуйста

Зацените программу сравнения двух чисел с помощью класса - C++
#include &lt;math.h&gt; #include &lt;stdlib.h&gt; #include &lt;iostream.h&gt; class MyClass{ int x,y; public: MyClass(int x1, int y1){ x =...

Неявный вызов конструктора шаблонного класса при операции сравнения - C++
Реализовал шаблонный класс целых чисел, для использования его в шаблонном классе дробей. Звучит жутковасто. :D Так вот, в классе целых...

Написание класса Person с перегруженными операторами чтения, сравнения и записи - C++
Товарищи, я тут решила сесть и написать прогу. Но я немного в синтаксис вообще не врубаюсь. Помогите, кому не трудно, одну хнюшку...

1
NightmareZ
1358 / 563 / 37
Регистрация: 31.03.2009
Сообщений: 1,933
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;
}
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.05.2011, 01:15
Привет! Вот еще темы с ответами:

Для класса Vector перегрузить операторы присваивания, сравнения, ввода и вывода - C++
срочно помогите написать программу, желательно с комментариями если можно)) Для класса Vector перегрузить операторы присваивания, ...

Что возвращает функция после сравнения? - C++
Здравствуйте, необходимо реализовать код Хаффмана используя такие контейнеры как list, map, vector. код есть, но т.к. с этими...

Сортировка по одному из полей класса - C++
Всем привет. Я сделал вот такой список. Вопрос как мне его отсортировать, к примеру, по Id и по Name? #include &lt;iostream&gt; #include...

Начальные значения полей класса - C++
Приветствую всех. Такой вопрос: какие начальные значения принимают поля класса при создании экземпляра этого класса, если не определен...


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

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

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