01/10/2018, 00:57

Đếm dòng trong 1 file

em có đề bài này từ thấy giáo ai giúp em với

On the server, there is a file located in “/usr/share/dict/words” that
contains a dictionary of English words, about 100,000 of them, one per line.

Write a program which opens this file and counts the number of lines (words)
in it.

Người bí ẩn viết 03:09 ngày 01/10/2018

Bài này đơn giản mà, bạn dùng vòng lặp đọc từng ký tự trong file, khi nó bằng kí tự qua dòng mới thì tăng biến đếm lên 1, đến khi đọc hết file thì tăng biến đếm thêm 1 lần nữa, do cứ mỗi lần qua 1 dòng mới nó mới tăng, thành ra tới dòng cuối nó không thể tăng nên mình phải tăng cho nó bên ngoài vòng lặp.
Code mẫu:

#include <iostream>
#include <fstream>
int main()
{
    int Count = 0;
    std::ifstream FileIn("<địa chỉ của file>"); // mở file
    while (!FileIn.eof()) // kiểm tra xem đã tới cuối file chưa
    {
        char c;
        FileIn.get(c); // ghi 1 ký tự từ file vào biến c
        if (c == 10)//kiểm tra xem c có phải là ký tự qua dòng mới không (LF)
            ++Count;
    }
    ++Count;
    FileIn.close();
    std::cout << Count;
    return 0;
}
Tran Thanh Tuan viết 02:58 ngày 01/10/2018

em xin thông tin facebook hoặc email được không ạ ? em cần hỏi thêm 1 vài câu hỏi nữa ạ

Người bí ẩn viết 03:09 ngày 01/10/2018

Bạn cứ gửi câu hỏi thẳng lên topic này hoặc message (nếu câu hỏi có tính riêng tư) nhé !

Tran Thanh Tuan viết 03:05 ngày 01/10/2018

dạ vâng, rồi ví dụ bài thay đổi thành đếm xem có bao nhiêu từ bắt đầu bằng chữ S cả in hoa và thường thì em có được sử dụng mấy cái như string không ạ ?

Người bí ẩn viết 02:58 ngày 01/10/2018

Bài này thay vì bạn đọc từng ký tự như code trên thì bạn sẽ đọc từng từ

int count = 0;
std::ifstream FileIn("<địa chỉ file>");
while (!FileIn.eof())
{
       std::string str;
       FileIn >> str; // nhập vào str 1 từ từ FileIn
       if (str.at(0) == 'S' || str.at(0) == 's') // Nếu ký tự đầu tiên là S hoặc s thì tăng biến đếm
              ++count;
}
FileIn.close();
std::cout << count;

Code trên chưa test nhưng thuật toán là như vậy, bạn chạy thử, nếu không được thì báo lại mình sẽ sửa, còn đúng rồi thì tham khảo, thắc mắc thì hỏi nhé !

Tran Thanh Tuan viết 02:58 ngày 01/10/2018

anh check mail hộ em nhé , em gửi cau hỏi cho anh roi ạ, mong anh giup em

Người bí ẩn viết 02:57 ngày 01/10/2018

Câu hỏi của bạn

em có một bài tập nhờ a chỉ hộ em với:

em cần viêt 1 chương trình như con gà simsimi tức là khi người dùng nhập 1 dòng input, thì chương trinh sẽ trả lời gì đó có liên quan
ví dụ:
“My dad is a good person”
chương trình phải trả lời lại gì đó như là
“tell me more about your dad”

thầy chỉ hướng dẫn là
There are two main components to ELIZA:

Parsing the user’s input into a list of words (ignoring spaces, punctuation, and upper/lower-case distinctions)

Matching the list of words against the patterns that are to be recognized. More specific patterns should be checked first, and more general patterns only tried if no specific match was found.

For the first part, you’ll probably want to use a vector to contain the list of words. You can read a full line of input using getline(), and then scan through it one character at a time, either constructing a new word, adding the character to the current word, adding the word to the vector, or skipping over the character (depending on whether the character is a letter, punctuation, etc.)

For the second part, although you could use a large if-else chain and hard-code all the patterns, you should try to see if you can come up with a way of storing the patterns, and then searching through them generically.

xin anh giúp em 1 chương trình mẫu để em nghiệm lại, bài này sẽ là kì thi final của em, em không có copy ạ, em được phép nghiên cứu các tài liệu bên ngoài, và em sẽ phải viết lại trong lớp nên sẽ không thể copy được.

Bạn có create topic nói về vấn đề này rồi !

Bài liên quan
0