2016-04-23 2 views
1

Помогите мне исправить эту проблему. Я набрал код в школе, даже там, где он показал синтаксическую ошибку объявления. -Я не могу понять это! , Это так расстраивает, когда вы только начали с изучения кодирования.Ошибка синтаксиса объявления в функции

аннулируются ошибка вопрос: декларация синтаксической ошибки аннулируются ошибка отображения: незаконное использование указателя

Извиняюсь если безумием во мне нашли.

#include <iostream.h> 
#include <conio.h> 
#include <stdio.h> 
#include <string.h> 


class book 
{ 
char bookname[20]; 
char isbn[20]; 
char author[20]; 
char category[20]; 
float price; 
int noc; 

public: 

void accept() 
{ 

cout<<"Enter book name :- \n"; 
gets(bookname); 
cout<<"Enter isbn no of the book:- \n"; 
gets(isbn); 
cout<<"Enter authour name:- \n"; 
gets(author); 
cout<<"Enter category of book:- \n"; 
gets(category); 
cout<<"Enter price of the book :- \n"; 
cin>>price; 
cout<<"Enter no of copies of book available in the library :- \n"; 
cin>>noc; 
} 

void display() 
{ 
puts(bookname)<<endl; 
puts(isbn)<<endl; 
puts(author)<<endl; 
puts(category)<<endl; 
cout<<price<<endl; 
cout<<noc<<endl; 
} 

}b[5]; 

int main() 
{ 
for(int i=0;i<5;++i) 
{ 
b[i].accept(); 
} 

void issue() 
{ 
int flag=0; 
char booksearch[20]; 
cout<<"Enter name of book member wants to issue :- \n" 
gets(booksearch); 
    for(i=0;i<5;++i) 
    { 
     flag=strcmp(booksearch,b[i].bookname) 
    } 

} 

if(flag==1) 
{ 
    b[i].display(); 
    b[i].issue(); 
} 
getch(); 
return 0; 
} 
+0

Вы можете быть более конкретным .. и разместить еще свой код – Pavan

+0

Добро пожаловать в StackOverflow! Пожалуйста, найдите время, чтобы пройти через http://stackoverflow.com/help/mcve. В частности, вы должны включить в свой вопрос полную скопированную копию. –

+0

Вы используете простой текстовый редактор или текстовый редактор? –

ответ

1

Есть многочисленные ошибки с кодом:

  1. Missing точка с запятой после strcmp вызова:
  2. strcmp возвращает 0, когда есть совпадение, а не 1, и вы можете переписать флаг на следующей итерации цикла,
  3. Ваше определение issue находится в середине main,
  4. Вы смешиваете с-стилем получает и C++ - стиль оператор >>,
  5. Вы смешиваете - плохо - путы с стилем и оператор < <

Вот нерабочая версия ваш код: http://ideone.com/sGdXcm

Вот фиксированная, рабочая версия:

#include <iostream> 
#include <string> 
#include <array> 
#include <limits> 

using namespace std; 

class book 
{ 
    std::string bookname; 
    std::string isbn; 
    std::string author; 
    std::string category; 
    float price; 
    int noc; 

public: 
    const std::string& getBookname() const { return bookname; } 
    const std::string& getISBN() const { return isbn; } 
    const std::string& getAuthor() const { return author; } 
    const std::string& getCategory() const { return category; } 
    float getPrice() const { return price; } 
    float getNoC() const { return noc; } 

    void accept() 
    { 
     cout<<"Enter book name :- \n"; 
     std::getline(std::cin, bookname); 
     cout<<"Enter isbn no of the book:- \n"; 
     std::getline(std::cin, isbn); 
     cout<<"Enter authour name:- \n"; 
     std::getline(std::cin, author); 
     cout<<"Enter category of book:- \n"; 
     std::getline(std::cin, category); 
     cout<<"Enter price of the book :- \n"; 
     std::cin>>price; 
     cout<<"Enter no of copies of book available in the library :- \n"; 
     std::cin>>noc; 
     std::cin.ignore(std::numeric_limits<streamsize>::max(), '\n'); 
    } 

    void display() 
    { 
     std::cout<<bookname<<std::endl; 
     std::cout<<isbn<<std::endl; 
     std::cout<<author<<std::endl; 
     std::cout<<category<<std::endl; 
     std::cout<<price<<std::endl; 
     std::cout<<noc<<std::endl; 
    } 

    void issue() 
    { 
    } 
}; 

int main() 
{ 
    std::array<book, 5> b; 
    for(int i=0;i<b.size();++i) 
    { 
     b[i].accept(); 
    } 

    std::string booksearch; 
    std::cout<<"Enter name of book member wants to issue :- \n"; 
    std::getline(cin, booksearch); 
    std::cout<<"Searching for: " << booksearch << "\n"; 
    for(int i=0;i<b.size();++i) 
    { 
     if (b[i].getBookname() == booksearch) 
     { 
      b[i].display(); 
      b[i].issue(); 
      break; 
     } 
    } 

    std::string dummy; 
    std::cout << "Hit return:"; 
    std::getline(std::cin, dummy); 

    return 0; 
} 

Li ve demo: http://ideone.com/p3Ygw3

Примечание: я не добавлял никаких ошибок в этот код, если пользователь делает опечатку во время ввода книг, все пойдет не так.

1
  1. точку с запятой после flag=strcmp (searchbook, b [I]. bookname) линии.
  2. Объявление flag, searchbook, b если нет уже заявлено.
  3. ли #include <string.h> до вашей функции
Смежные вопросы