2016-04-04 22 views
-3

Bir dosyadan bilgi alan ve onu bir yapıya koyan ve bir dizi yapı yapan bir program yapıyorum. Program bitti, ama derlediğimde 2 hata alıyorum. "Beklenen Bildiri" ve "Sözdizimi Hatası: Sabit", her ikisi de dosyada okunan ilk satırın işaretidir. Kaybettim ve nasıl çalıştırılacağından emin değilim.Kafa karıştırıcı sözdizimi hatası

#include "stdafx.h" 
#include <iostream> 
#include <fstream> 
#include <string> 
#include <iomanip> 
#include <stdlib.h> 
using namespace std; 

struct book 
{ 
    int ISBN; 
    string Author; 
    string Title; 
    int Quantity; 
    double price; 
}; 

void choice1(book books[], int& size, int MAX_SIZE) 
{ 
    ifstream inFile; 
    inFile.open("Inventory.txt"); 
    string str; 

    while (inFile && size < MAX_SIZE) 
    { 
     getline(inFile, str); 
     books[size].ISBN = atoi(str.c_str()); 

     getline(inFile, books[size].Author); 

     getline(inFile, books[size].Title); 

     getline(inFile, str); 
     books[size].Quantity = atoi(str.c_str()); 

     getline(inFile, str); 
     books[size].price = atoi(str.c_str()); 

     getline(inFile, str); 
     size++; 
    } 

    cout << "You have successfully read the file." << endl; 
    inFile.close(); 
} 

void choice2(book books[], int size) 
{ 
    for (int i = 0; i < size; i++) 
    { 
     cout << endl; 
     cout << "Book Number: " << (i + 1) << endl; 
     cout << "ISBN: " << books[i].ISBN << endl; 
     cout << "Author: " << books[i].Author << endl; 
     cout << "Title: " << books[i].Title << endl; 
     cout << "Quantity: " << books[i].Quantity << endl; 
     cout << "Price: $" << books[i].price << endl; 
    } 

    if (size != 0) 
     cout << "You have successfully printed the array." << endl; 
    else 
     cout << "Array is empty. Read the file first." << endl; 
} 

void choice3(book books[], int size) 
{ 
    if (size == 0) 
     cout << "Array is empty. Read the data first." << endl; 
    else 
    { 
     int isbn; 
     int option; 
     int qty; 

     cout << "\nEnter the ISBN of the book: "; 
     cin >> isbn; 

     cout << "1. Increment" << endl; 
     cout << "2. Decrement" << endl; 
     cout << "3. Add New" << endl; 
     cout << "Enter your option: "; 
     cin >> option; 

     cout << "Enter the quantity: "; 
     cin >> qty; 

     for (int i = 0; i < size; i++) 
     { 
      if (books[i].ISBN == isbn) 
      { 
       if (option == 1) 
        books[i].Quantity += qty; 
       else if (option == 2) 
       { 
        books[i].Quantity -= qty; 

        if (books[i].Quantity) 
         books[i].Quantity = 0; 
       } 
       else if (option == 3) 
        books[i].Quantity = qty; 

       break; 
      } 
     } 

     cout << "You have successfully updated the array." << endl; 
    } 
} 

void choice4(book books[], int& size, int MAX_SIZE) 
{ 
    if (size < MAX_SIZE) 
    { 
     string str; 

     cout << "\nEnter the book ISBN: "; 
     cin >> books[size].ISBN; 

     cout << "Enter the author name: "; 
     cin >> books[size].Author; 

     cout << "Enter the book tile: "; 
     cin >> books[size].Title; 
     cin.get(); 

     cout << "Enter the books quantity: "; 
     cin >> books[size].Quantity; 

     cout << "Enter the book price: $"; 
     cin >> books[size].price; 

     size++; 
     cout << "You have successfully inserted an entry." << endl; 
    } 
} 

void choice5(book books[], int size) 
{ 
    for (int i = 1; i < size; i++) 
    { 
     book current = books[i]; 
     int j = i; 
     while (j > 0 && (books[j - 1].Title).compare(current.Title) > 0) 
     { 
      books[j] = books[j - 1]; 
      j--; 
     } 
     books[j] = current; 
    } 

    if (size != 0) 
     cout << "You have successfully sorted the array." << endl; 
    else 
     cout << "Array is empty. Read the data first." << endl; 
} 

void choice6(book books[], int& size) 
{ 
    if (size == 0) 
     cout << "Array is empty. Read the data first." << endl; 
    else 
    { 
     int isbn; 

     cout << "\nEnter the ISBN of the book: "; 
     cin >> isbn; 

     for (int i = 0; i < size; i++) 
     { 
      if (books[i].ISBN == isbn) 
      { 
       int j = i; 
       while (j < size - 1) 
       { 
        books[j] = books[j + 1]; 
        j++; 
       } 

       size--; 
       break; 
      } 
     } 

     cout << "You have successfully deleted an entry." << endl; 
    } 
} 

void choice7(book books[], int size) 
{ 
    ofstream outFile; 
    outFile.open("finalData.dat"); 

    for (int i = 0; i < size; i++) 
    { 
     outFile << "Book Number: " << (i + 1) << endl; 
     outFile << "ISBN: " << books[i].ISBN << endl; 
     outFile << "Author: " << books[i].Author << endl; 
     outFile << "Title: " << books[i].Title << endl; 
     outFile << "Quantity: " << books[i].Quantity << endl; 
     outFile << "Price: $" << books[i].price << endl << endl; 
    } 

    if (size != 0) 
     cout << "You have successfully printed the array." << endl; 
    else 
     cout << "Array is empty. Read the file first." << endl; 

    outFile.close(); 
} 


// File: Boookstore.cpp 
#include<iostream> 
#include"Inventory.txt" 
using namespace std; 

int main() 
{ 
    const int MAX_SIZE = 100; 
    int size = 0; 
    int choice; 
    book books[MAX_SIZE]; 

    do 
    { 
     cout << "1: Read inventory forn file" << endl; 
     cout << "2: Display Inventory" << endl; 
     cout << "3: Update an entry" << endl; 
     cout << "4: Add an entry" << endl; 
     cout << "5: Sort inventory" << endl; 
     cout << "6: Delete an entry" << endl; 
     cout << "7: Write inventory to file and exit" << endl; 
     cout << "Enter your choice: "; 
     cin >> choice; 

     switch (choice) 
     { 
     case 1: 
      choice1(books, size, MAX_SIZE); 
      break; 
     case 2: 
      choice2(books, size); 
      break; 
     case 3: 
      choice3(books, size); 
      break; 
     case 4: 
      choice4(books, size, MAX_SIZE); 
      break; 
     case 5: 
      choice5(books, size); 
      break; 
     case 6: 
      choice6(books, size); 
      break; 
     case 7: 
      choice7(books, size); 
      cout << "Thank you." << endl; 
      break; 
     default: 
      cout << "Invalid choice!" << endl; 
     } 
     cout << endl; 
    } while (choice != 7); 

    system("pause"); 
    return 0; 
} 

benim kaynak dosyayla aynı klasörde dosya okuma var, ama sorunu neden olan emin değilim: My kod böyle görünüyor kullanıyorum. dosyasında Benim okuma aynen şudur: dosyanın ilk satırı almak ve benim yapının ISNB bölümüne int olarak ayarlamak gerekiyordu, ama sadece bir sabittir söyleyip duruyor edilir

20451 
My First Book 
Mark Lusk 
Pearson Publishing 
40 
45.34 
9780316 
Brown Family 
Mason Victor 
Little Brown 
36 
105.99 
1349877 
Story of My Life 
Norah M Jones 
CreateSpace Independent Publishing Platform 
20 
18 

. Herhangi bir yardım takdir edilir!

cevap

2

Veri dosyası içeremezsiniz. Kodunuzun bir parçası gibi davranır - ve açıkçası C++ geçerli değildir. Dosyayı açmak ve ifstream gibi şeylerle okumak zorundasınız.

+0

Sadece benden önce var :) – Harry

+0

Yığın taşma yarısı budur .. cevaplayabileceğiniz soruyu bulun ve önce oraya varın. – xaxxon

+0

Yaptığım her şeye bir milyonluk, #include "Inventory.txt" satırını kaldırmaktı ve mükemmel bir şekilde çalıştı! Bütün gün çalışıyorum, bunu düşünmediğime inanamıyorum! – kingkunta

İlgili konular