Домашнее задание: подсчет количества попаданий элемента в связанный список - PullRequest
0 голосов
/ 16 ноября 2011

Вот назначение: Реализуйте метод countValue(), который подсчитывает, сколько раз элемент встречается в связанном списке. Не забудьте использовать список STL.

int countValue(list<int> front, const int item);

Создайте 20 случайных чисел в диапазоне от 0 до 4 и вставьте каждое число в связанный список. Выведите список с помощью метода, который вы бы назвали writeLinkedList, который вы бы добавили в ListP.cpp.

В цикле вызовите метод countValue() и отобразите количество вхождений каждого значения от 0 до 4 в списке.

Помните, что все вышеперечисленное должно быть включено в файл ListP.ccp Прогон: 2 3 4 0 1 0 2 4 2 3 3 4 3 3 3 0 0 2 0 2 0: 5, 1: 1, 2: 5, 3: 6, 4: 3

и вот что у меня есть:

#include<iostream>
#include<list>
#include<tchar.h>

int countValue(list<int> front, const int item);

using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
    list<int> front;
    int listCount;
    cout << "Enter the size of the list: ";
    cin >> listCount;
    for (int i = 1; i <= listCount; i++)
        front.insert(rand()%5);
    cout << "Original List of Values: " << endl;
    //writeLinkedList(front, " ");
    cout << endl;
    for(int j=0;j<5;++j)
        cout << countValue (front,j) << endl;
    cout << endl;
    return 0;
}

int countValue(list<int> front, const int item)
{   
    int count0;
    int count1;
    int count2;
    int count3;
    int count4;
    list<int> *List;

    for(list<int>::iterator i = front.begin(); i != front.end(); i++)
    {
        if(List->item == 0)
        {
            count0++;
        }
        if(List->item == 1)
        {
            count1++;
        }
        if(List->item == 2)
        {
            count2++;
        }
        if(List->item == 3)
        {
            count2++;
        }if(List->item == 4)
        {
            count4++;
        }
    }
}

А вот и ошибки:

error C2065: 'list' : undeclared identifier line 5
error C2062: type 'int' unexpected line 5
error C2661: 'std::list<_Ty>::insert' : no overloaded function takes 1 arguments line 16
error C3861: 'countValue': identifier not found line 21
IntelliSense: no instance of overloaded function "std::list<_Ty, _Ax>::insert [with _Ty=int, _Ax=std::allocator<int>]" matches the argument list line 16
IntelliSense: too few arguments in function call line 16
error C2039: 'item': is not a member of 'std::list<_Ty>' lines 34, 38, 42, 46, 49
IntelliSense: declaration is incompatible with "int countValue" (declared at line 5) line 25
IntelliSense: class "std::list<int, std:: allocator<int>>" has no member "item" lines 34, 38, 42, 46, 49

Я просто хочу знать, что я сделал неправильно и как это исправить, а также, если кто-то может помочь мне выяснить, неправильно ли я выполняю функцию countValue или нет, основываясь на инструкциях, я был бы очень признателен. Я прочитал главу в нашем учебнике несколько раз, посмотрел учебники на YouTube и Dream in Code, но до сих пор не могу понять это. Вся полезная информация приветствуется!

1 Ответ

3 голосов
/ 16 ноября 2011

Сначала поместите строку, используя 'namespace std;'после ваших импортов, перед объявлением списка, это очистит некоторые ошибки.

Затем подумайте о том, что вы видите в строках здесь:
ошибка C2039: 'item': не являетсячлен строк 'std :: list <_Ty>' 34, 38, 42, 46, 49
Вероятно, вы сделали небольшую опечатку, я позволю вам поймать ее самостоятельно;)

Этоначать для вас

...