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

Описать класс «домашняя библиотека» - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Найти слово встречающееся в каждом предложении http://www.cyberforum.ru/cpp-beginners/thread81159.html
что то программа не получается,в чём ошибка? помогите пожалуйста разобраться,вот сама задача: /"дана строка,содержащая текст.Найти слово встречающееся в каждом предложении,или сообщить что такого слова нет"/ мой код: #include <iostream.h> #include <conio.h> #include <string.h> #include <stdio.h> void main() { int i,j,k=0; char a,b;
C++ Работа с 16-ричными числами Написать программу, которая вводит с клавиатуры натуральное число N, выполняет сдвиг N вправо на 3 разряда, сдвиг влево N на 2 разряда, инвертирует N. На экран вывести исходное число и результаты операций в шестнадцатеричном виде. http://www.cyberforum.ru/cpp-beginners/thread81157.html
C++ Функция, возвращающая номер самого правого вхождения заданного символа во введенную строку
Нужна помощь в составлении программы: возвращающую номер самого правого вхождения заданного символа во введенную строку. Если символ не входит в строку, должно возвращаться -1. Заранее спасибо.
Цикл с пред условием C++
Доброго времени суток помогите написать код программы ппрбую написать так что бы было понятно 1 программа просит что бы мы ввели символ @ Программа перебирает символы клавиатуры 2 вывод кода символа на экран использовать с циклом пред условия
C++ В строке поменять местами среднее и последнее http://www.cyberforum.ru/cpp-beginners/thread81144.html
В строке поменять местами среднее и последнее, если они начинаются с одной буквы. Я написал через repeat, но у меня требуют через for. Заранее Спасибо!!!
C++ символ @ Написать программу, которая вводит с клавиатуры символы до тех пор, пока не будет введен символ @ и выводит на экран только те из них, которые не являются буквой А (с учетом верхнего и нижнего регистров). Использовать оператор continue. подробнее

Показать сообщение отдельно
sentinel
7 / 7 / 1
Регистрация: 02.12.2009
Сообщений: 102
29.12.2009, 21:12  [ТС]     Описать класс «домашняя библиотека»
а если вот так сделать

вот код программы:

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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
=0; 
        last = first; 
    } 
  Library::~Library() 
  { 
    delete last; 
    delete first; 
  } 
    struct list 
  { 
        char avtor[10]; 
    char naz[10]; 
        int god; 
        list* next; 
    }; 
    list* GetAutor(char s[]) 
  { 
        list* temp = first; 
        while(temp) 
        { 
            if(strcmp(s, temp->avtor) == 0) return temp; 
            temp = temp->next; 
        } 
        return NULL; 
    } 
  list* GetYear(int i) 
  { 
        list* temp = first; 
        while(temp) 
        { 
            if(temp->god==i) return temp; 
            temp = temp->next; 
        } 
        return 0; 
    } 
    void Set(char avtor[], char naz[], int god) 
  { 
        if(first != last) 
        { 
            list* l = new list; 
            strcpy(l->avtor, avtor); 
      strcpy(l->naz, naz); 
      l->god=god; 
      l->next = 0; 
            first->next = l; 
            last = l; 
    } 
    else 
    { 
            strcpy(first->avtor, avtor); 
      strcpy(first->naz, naz); 
      first->god=god; 
        } 
    } 
  void Delete (char naz[]) 
  { 
    list *temp, *t; 
    temp=first; 
    if(strcmp(naz, first->naz) == 0) {delete first; first->next=first->next->next;} 
    while(temp->next) 
        { 
      t=temp; 
            if(strcmp(naz, temp->next->naz) == 0) {temp->next=temp->next->next;delete temp->next; break;} 
            temp = temp->next; 
        } 
  } 
 
    void Print() 
  { 
        list* temp = first; 
        while(temp) 
    { 
            cout<<temp->avtor<<" : "<<temp->naz<<" "<<temp->god<<"y"; 
      cout<<endl; 
            temp = temp->next; 
    } 
    } 
private: 
    list* last; 
    list* first; 
 
}; 
 
int Menu() 
 { 
  int num; 
  cout<<"1 Add book"<<endl; 
  cout<<"2 Search by author"<<endl; 
  cout<<"3 Search by year"<<endl; 
  cout<<"4 Delete book by name"<<endl; 
  cout<<"5 Exit"<<endl; 
 
  cin>>num; 
  if(num>0 && num<5) return num; 
  return 0; 
 } 
 
void main() 
{ 
  Library l; 
  /*l.Set("Pyshkin", "Nazvanie", 1234); 
  l.Print();*/ 
 
  char n[10], a[10]; 
  int i, y; 
  while(1) 
  {i=Menu(); 
  switch(i) 
  { 
  case 1: cout<<"Name"<<endl;cin>>n; cout<<"Author"<<endl;cin>>a;cout<<"Year"<<endl;cin>>y; l.Set(a, n, y); break; 
  case 2: cout<<"Author"<<endl;cin>>a; l.GetAutor(a); l.Print(); break; 
  case 3: cout<<"Year"<<endl;cin>>y; l.GetYear(y); l.Print(); break; 
  case 4: cout<<"Enter book name"<<endl<<"Deleting"; l.Delete(n);break; 
  case 5: break; 
  default: cout<<"Enter right number!"<<endl; break; 
  }} 
}
не работает удаление книги. вот эта часть:

C++
1
2
3
4
5
6
7
8
9
10
11
12
void Delete (char naz[]) 
{ 
list *temp, *t; 
temp=first; 
if(strcmp(naz, first->naz) == 0) {delete first; first->next=first->next->next;} 
while(temp->next) 
{ 
t=temp; 
if(strcmp(naz, temp->next->naz) == 0) {temp->next=temp->next->next;delete temp->next; break;} 
temp = temp->next; 
} 
}
никак не могу понять почему(((
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru