01/10/2018, 12:25

Em hỏi vài thứ liên quan tới hàm và con trỏ trong c++

1 : Yêu cầu đề bài là : > Hàm int findWords (char * path) nhận đầu vào là đường dẫn đến tệp chứa danh sách các từ. Hàm trả về số lượng các từ thỏa mãn được tạo ra chỉ bởi một hàng phím trong bàn phím Mỹ. Trong tệp, mỗi từ được lưu trên một dòng. Và giả sử, các từ chỉ được tạo bởi các kí tự."
em code là :

    bool check(string n)
    {
        bool check1=true;
        bool check2=true;
        bool check3=true;
        char hang1[20] = {'q','e','r','t','y','u','i','o','p','Q','W','E','R','T','Y','U','I','O','P'};
        char hang2[18] = {'a','s','d','f','g','h','j','k','l','A','S','D','F','G','H','J','K','L'};
        char hang3[14] = {'z','x','c','v','b','n','m','Z','X','C','V','B','N','M'};
        unsigned int i=0;
        while (i<n.size())
        {
            for (int m=0; m<19; m++)
            {
                if (n[i] != hang1[m])
                {
                    check1=false;
                }
            }
            for (int j=0; j<17; j++)
            {
                if (n[i] != hang2[j])
                {
                    check2=false;
                }
            }
            for (int k=0; k<13; k++)
            {
                if (n[i] != hang3[k])
                {
                    check3=false;
                }
            }
        }
        if (check1 || check2 || check3)
        {
            return true;
        }
        else
        {
            return false;
        }
    }
    int findWords (char * path)
    {
        ifstream inFile(path);
        string n;
        int count=0;
        while (!inFile.eof())
        {
            inFile >> n;
            if (check(n))
            {
                count ++;
            }
        }
        return count;
    }

vậy cho em hỏi code của em lỗi ở đâu ạ ?

Thứ 2 :

đề là : Viết hàm

void moveZeroes (int * arr, char * file)

thực hiện các công việc sau:

–Đọc các số nguyên dương từ tệp filefile vào mảng arrarr. Biết dòng đầu tiên của tệp lưu số nguyên nn là số số nguyên dương, dòng tiếp theo chứa nn số nguyên dương cần lưu vào mảng.
–Chuyển tất cả các phần tử của mảng có giá trị bằng 00 về cuối dãy, đồng thời, giữ nguyên vị trí tương đối của các phần tử còn lại trong mảng
– In dãy thu được ra màn hình

Cái em muốn hỏi ở đây là :
trong khai báo hàm kia, thì cái *int arr là truyền vào cái gì ạ ? con trỏ ? và nếu là con trỏ thì nó là như thế nào ? nếu là cái khác thì cho em xin giải thích về nó ạ @@
và cho em hỏi khi đó, mảng arr đã được khai báo bên ngoài hàm chưa ? và nếu chưa thì trong hàm phải khai báo như thế nào ? và nữa là muốn truyền phần tử vào mảng dùng con trỏ thì làm như thế nào ạ ?
Do em mới học, mà học ở lớp theo không kịp, về nhà bài giảng của thầy cũng mờ mờ ảo ảo, bài tập thì khác hoàn toàn. Các bác đừng chửi em vì nếu có hỏi sai cái gì thì đó là để rút kinh nghiệm @@ em cũng mới học đâu phải thần thánh gì mà hiểu được hết ngay.
em xin đội ơn các bác ạ !

Nguyễn Dương viết 14:31 ngày 01/10/2018

à các bác đừng quan tâm tới bài 1 nữa, em biết là nó sai ở đâu rồi ạ !

Hieu Hoang viết 14:33 ngày 01/10/2018

khi bạn khởi tạo 1 mảng int A[100] thì A chính là 1 con trỏ, vậy nên khi truyền vào chỉ cần truyền A vào thôi, còn muốn gán giá trị cho phần tử thì cũng dùng A[i]=… đơn giản thôi.
(mình cũng mới tự học nên nếu sai đừng trách =)))

Bài liên quan
0