2011-12-07 6 views
1

Мне нужно частично заполнить 2 массива данными из файла и держать их параллельными. Но мой текущий код дает мне ошибки, похожие на giberish. Если бы кто-то мог просто помочь мне декодировать ошибки, я был бы очень благодарен.Частично Заполните массив из файла

Код:

/***************************************************/ 
/* Author:  Sam LaManna       */ 
/* Course:  CSC 135 Lisa Frye     */ 
/* Assignment: Program 6 Elves      */ 
/* Due Date: 11/22/11       */ 
/* Filename: program6.cpp      */ 
/* Purpose: Write a program that will process */ 
/*    the work done by santas elfs  */ 
/***************************************************/ 

#include <iostream>  //Basic input/output 
#include <iomanip>  //Manipulators 
#include <string>  //String stuff 
#include <fstream>  //File input/output 

using namespace std; 

void instruct();  //Function Declaration for printing instructions 
void input (ifstream &infile, string names [50], int numoftoys[50]); //Function declaration for getting data from file 

int main() 
{ 

    string names [50] = { };  //Array for storing names 
    int numoftoys [50] = { };  //Array for storing the number of toys made 

    ifstream infile("eleves.dat"); //Opens input file "elves.dat" 

    instruct();  //Function call to print instructions 

    while (!infile.eof()) 
    { 
     input (names [50], numoftoys [50]); 
    } 

    cout << names << "\n" << "\n"; 

    cout << numoftoys << "\n" << "\n"; 




    return 0; 
} 




/***************************************************/ 
/* Name: instruct         */ 
/* Description: Prints instructions to user  */ 
/* Parameters: N/A         */ 
/* Return Value: N/A        */ 
/***************************************************/ 

void instruct()         
{ 
    cout << "\n" << "This program will calculate the toys made by santas elfs and assign" << "\n"; 
    cout << "a rating to each elf. It will also sort them and print average, min and max." << "\n"; 
    cout << "\n" << "Make sure you have a file named elves.dat in the same directory as"; 
    cout << "this porgram or you will recieve errors."; 
    cout << "\n" << "\n"; 

    return; 
} 


/***************************************************/ 
/* Name: input          */ 
/* Description: Reads from file     */ 
/* Parameters: N/A         */ 
/* Return Value: N/A        */ 
/***************************************************/ 

void input (ifstream &infile, string names [50], int numoftoys[50]) 
{ 
    infile >> names >> numoftoy; 
    infile.ignore ("\n"); 

    return; 
} 

Ошибки:

Прямая ссылка: http://i.imgur.com/q7I4g.png

+0

Возьмем ошибки как текст, пожалуйста. И, действительно, такой вопрос «технической поддержки» здесь не в тему, но я порежу вам слабину, так как вы отметили «домашнее задание». –

ответ

2
istream::operator>> has overloads for neither arrays of strings nor arrays of integers. 

Вы должны прочитать каждую строку и каждое целое число в одном одновременно. Первоначально Написал @Seth Carnegie

input (infile, names, numoftoys); //your call was completely wrong 

infile.ignore ('\n'); //notice the char instead of string 

infile >> names >> numoftoys; //this won't work like this but at least we fixed the declaration error 

Если вам разрешено использовать зЬй :: вектор, и т.д. Мы могли бы обеспечить более C++ ответ. Также избегайте использования - using namespace std;

+0

Что не так с использованием пространства имен std; ? вот что меня научили использовать –

+0

@SamLaManna Ну, вы должны дать мне число учителей, чтобы я мог позвонить ему. Проверьте это для ответа: http://cboard.cprogramming.com/cplusplus-programming/117354-why-std-not-using-namespace-std.html – FailedDev

+1

@SamLaManna: Еще раз подчеркивая широко распространенное плохое качество преподавания C++ в мир. [Вот почему] (http://stackoverflow.com/questions/1452721/why-is-using-namespace-std-considered-a-bad-practice-in-c) –

Смежные вопросы