30/09/2018, 16:04

Cách viết một editor đơn giản bằng C++

Write a simple text editor, which stores a string of characters using the list
ADT, together with a cursor object that highlights the position of some
character in the string (or possibly the position before the first character).
Your editor should support the following operations and redisplay the cur-
rent text (that is, the list) after performing any one of them.
• left: Move cursor left one character (or nothing if at the beginning)
• right: Move cursor right one character (or do nothing if at the end)
• delete: Delete the character to the right of the cursor (or do nothing
if at the end)
• insert c: Insert the character c just after the cursor

Lê Đình Huy viết 18:17 ngày 30/09/2018

Bạn có thử làm qua chưa ?

  • rồi : cho mọi người xem thử bạn đã làm được tới đâu rồi.
  • chưa : bạn nên thử làm đi, nếu chỗ nào k làm được, hoặc chỗ nào bị lỗi, k biết sữa. thì hãy hỏi mọi người thử xem.

nếu phải làm cả bài này cho bạn thì thật sự tốn thời gian đấy
riêng mình là rất rất rất tốn thời gian luôn

Đỗ Trung Quân viết 18:11 ngày 30/09/2018

Đọc không hiểu gì luôn ::go::

buithaiminh viết 18:17 ngày 30/09/2018

So what’s your problem?

Nguyễn Minh Dũng viết 18:16 ngày 30/09/2018

His problem is he does not know what he is talking about.

Ngo Duc Huy viết 18:19 ngày 30/09/2018

Oh yeah? Your problem is you don’t want to do it.

Huynh Bach viết 18:18 ngày 30/09/2018

Mình đang tìm lỗi :((

buithaiminh viết 18:14 ngày 30/09/2018

Sai rồi. @Huynh_Bach đọc lại đề đi. Bạn còn chưa hiểu đề yêu cầu gì.

Nguyễn Minh Dũng viết 18:15 ngày 30/09/2018

@Huynh_Bach có compile được cái code đó chưa? Hình như bài này quá sức với bạn rồi. Code đó có phải bạn viết không?

Nếu code đó là của bạn viết thì mọi người có thể hiểu bạn đang hỏi gì.
Còn nếu code đó không phải của bạn viết thì thua luôn.

Đạt hỏi vậy là vì code này thiếu using namespace std; để có thể chạy được. Đây là một khái niệm rất căn bản để lập trình C++. Nếu bạn không nắm được cái này thì khó lòng mà làm được bài này. Và cũng khó lòng mà viết được nhiều thứ liên quan đến fstream đến vậy.

Đạt nêu ra vấn đề như vậy không phải là để chê bai @Huynh_Bach, mà để mọi người hiểu rõ vấn đề cần được giải quyết ở đây là

  • Code của @Huynh_Bach không chạy được, lỗi ở xyz, sửa như thế nào?
  • Code của who-we-dont-know không chạy được, sửa như thế nào?

Nếu rơi vào trường hợp code của người khác, mà người đó không phải là @Huynh_Bach thì việc hiểu được họ code như thế nào để sửa lỗi cho code đó là khó khả thi. Mà cũng không chắc là code đó đang làm cái bài mà @Huynh_Bach nghĩ. Nên việc tìm hiểu và sửa(nếu có) code đó là phí công vô ích của người khác.

Mình đang tìm lỗi :((

Bạn có thể nói rõ lỗi gì không, Đạt có thể thấy là nó có lỗi cú pháp. Đã sửa lỗi cú pháp và compile được ở đây

#include <iostream>
#include <fstream>
#include <assert.h>

using namespace std;

typedef struct Node {
    char character[80];
    Node *next, *pre;
} Line;
Line *currentline;
Line *firstline;
Node *head, *tail;
int col;
void createfirstline()
{
    Node *p;
    p = new Node;
    currentline = p;
    head = currentline;
    tail = currentline;
    col = -1;
}
void newline()
{
    Node *p;
    p = new Node;
    p -> next = NULL;
    p->pre = currentline;
    currentline->next = p;
    tail = p;
    currentline=p;
    col = 0;
}
void createnewline()
{
    Node *p;
    p = new Node;
    p -> next = NULL;
    if (head == NULL) {
        head = p;
        tail = p;
    } else {
        Node *q = tail;
        q->next = p;
        p->pre = q;
    }
    tail = p;
    currentline = p;
}

int main()
{
    cout << "Enter string: ";
    char string[30];
    cin.getline (string,30);
    ifstream instream;
    instream.open(string);

    char reading;
    currentline = firstline;
    createfirstline();
    while(instream.read(&reading,sizeof(reading))) {
        if (reading == '\n')
            newline();
        else {
            col++;
            currentline->character[col] = reading;
        }
    }
    instream.close();
    return 0;
}

Bài này nó bảo là chèn và xóa kí tự dùng list ATD

không biết dùng lệnh list ATD như thế nào

Trong code trên Đạt không có thấy cái gì liên quan đến list ATD cả. Mà Đạt cũng không rõ ATD là viết tắt của cái gì. Mà trong đề bài có ghi là ADT

using the list ADT

Đó là lý do mà Đạt reply có hơi khiếm nhã

His problem is he does not know what he is talking about.

Bài liên quan
0