Hiển thị kết quả từ 1 đến 8 / 8
  1. #1
    Tham gia
    01-07-2004
    Location
    /dev/sda6
    Bài viết
    499
    Like
    0
    Thanked 0 Times in 0 Posts

    Thêm 1 ký tự vào đầu xâu bị lỗi

    // thêm ký tự c vào đầu xâu bị lỗi ,in ra chỉ có ký tự c

    #include<stdio.h>
    #include<string.h>
    #include<conio.h>

    char *Them_kt(char *str1, char c);

    int main()
    {
    char *xau="Diendantinhoc";
    char kt='1';
    clrscr();
    printf("\nXau da them:%s",Them_kt(xau,kt));
    getch();
    return 0;
    }

    char *Them_kt(char *str1, char c)
    {
    char *temp;
    int i,dai;
    dai=strlen(str1);
    strcpy(temp,"");
    for (i=dai;i>=0;i++)
    {
    temp[i+1]=str1[i];
    }
    temp[dai+2]='\0';
    temp[0]=c;
    return temp;
    }
    Quote Quote

  2. #2
    Tham gia
    13-08-2002
    Bài viết
    762
    Like
    0
    Thanked 3 Times in 3 Posts
    ở Them_kt(), temp không được cấp phát mem mà dùng búa xua vậy ?

  3. #3
    Tham gia
    21-02-2004
    Bài viết
    59
    Like
    0
    Thanked 0 Times in 0 Posts
    Mình có một file .lib về xâu đơn, xâu kép và BTree, với các thao tác: Thêm vào xâu một phần tử tại bất ký vị trí nào; Xóa một phần tử khỏi xâu; Tìm kiếm; Sắp xếp; . . .

  4. #4
    Tham gia
    01-07-2004
    Location
    /dev/sda6
    Bài viết
    499
    Like
    0
    Thanked 0 Times in 0 Posts
    to TRUNKS :
    gởi cho tui với

  5. #5
    Tham gia
    24-08-2004
    Location
    HCM
    Bài viết
    131
    Like
    0
    Thanked 0 Times in 0 Posts
    Bạn vào Visual C++, chọn New->Win32 Static Library

    Cái này là cho Xâu đơn. Bao gồm 2 file, CSList.h và CSList.cpp

    Sau khi tạo 2 file này trong đồ án, bạn sẽ compiler thành file SList.lib

    Cách sử dụng file .lib thế nào thì bạn xem trong sách VC++

    ================================================== ==============
    File CSList.h

    /////////////////////////////////////////////////////
    // SList.h
    /////////////////////////////////////////////////////
    // Cau truc danh sach don
    // Copyright (C) by Khac Can

    #include <windows.h>
    #include <stdio.h>
    #include <stdlib.h>
    #include <conio.h>
    #include <math.h>

    typedef struct SNODE
    {
    int Index;
    int Info;
    SNODE *Next;
    }SNODE;
    // Con tro danh sach don
    typedef SNODE* PSNODE;


    // Khai bao lop
    class CSList
    {
    private :
    // Con tro chi phan tu dau danh sach
    PSNODE Head;
    // Con tro chi phan tu cuoi danh sach
    PSNODE Tail;
    public :
    // Constructor : Khoi tao mot danh sach rong
    CSList();
    // CreateNode method : tao moi mot nut
    PSNODE getNode(int value);
    // FirstAdd method : Them phan tu moi vao dau danh sach
    void FirstAdd(PSNODE &head, PSNODE &tail, int value);
    // EndAdd method : Them phan tu moi vao cuoi danh sach
    void EndAdd(PSNODE &head, PSNODE &tail, int value);
    // AfterAdd method : Them phan tu moi vao sau phan tu element
    BOOL AfterAdd(PSNODE element,PSNODE &head, PSNODE &tail, int value);
    // BeforeAdd method : Them phan tu moi vao truoc phan tu element
    BOOL BeforeAdd(PSNODE element, PSNODE &head, int value);
    // FirstDelete method : Huy phan tu dau trong danh sach
    BOOL FirstDelete(PSNODE &head, PSNODE &tail);
    // EndDelete method : Huy phan tu cuoi trong danh sach
    BOOL EndDelete(PSNODE &head, PSNODE &tail);
    // AfterDelete method : Huy phan tu dung sau phan tu element
    BOOL AfterDelete(PSNODE element,PSNODE &head, PSNODE &tail);
    // BeforeDelete method : Huy phan tu dung truoc phan tu element
    BOOL BeforeDelete(PSNODE element, PSNODE &head);
    // getPHead method : Lay con tro head
    PSNODE getPHead();
    // getPTail method : Lay con tro tail
    PSNODE getPTail();
    // getInfo method : Tra ve truong Info cua phan tu co chi so index
    int getInfo(PSNODE head, int index);
    // PrintSList method : Duyet danh sach
    void PrintSList(PSNODE head);
    // SearchSList method : Tim kiem va tra ve phan tu co Info la value
    PSNODE SearchSList(PSNODE head, int value);
    // SortSList method : Sap xep danh sach
    void SortSList(PSNODE head);
    // CountEle method : Dem so phan tu trong danh sach
    int CountEle(PSNODE head);
    // Destructor
    ~CSList();
    };
    ================================================== ==============

    File CSList.cpp
    ================================================== ==============
    /////////////////////////////////////////////////////
    // CSList.cpp
    /////////////////////////////////////////////////////

    // Copyright (C) by Khac Can
    // Dung tao file SList.lib

    #include "CSList.h"

    int index = 0;
    //----------------------------------------------------
    // Constructor
    CSList::CSList()
    {
    Head = Tail = NULL;
    }
    //----------------------------------------------------
    // CreateNode method : tao moi mot nut
    PSNODE CSList::getNode(int value)
    {
    PSNODE p;
    p = new SNODE;
    p->Index = index;
    p->Info = value;
    p->Next = NULL;
    ++index;
    return p;
    }
    //----------------------------------------------------
    // FirstAdd method : Them phan tu moi vao dau danh sach
    void CSList::FirstAdd(PSNODE &head, PSNODE &tail, int value)
    {
    int num,i;
    PSNODE p;
    p = getNode(value);
    if(head == NULL)
    {
    head = tail = p;
    // Cap nhat index
    num = CountEle(head);
    p = head;
    for(i = 0;i < num;++i)
    {
    p->Index = i;
    p = p->Next ;
    }
    }
    else
    {
    p->Next = head;
    head = p;
    // Cap nhat index
    num = CountEle(head);
    p = head;
    for(i = 0;i < num;++i)
    {
    p->Index = i;
    p = p->Next ;
    }
    }
    Head = head;
    Tail = tail;
    }
    //----------------------------------------------------
    // EndAdd method : Them phan tu moi vao cuoi danh sach
    void CSList::EndAdd(PSNODE &head, PSNODE &tail, int value)
    {
    int num,i;
    PSNODE p;
    p = getNode(value);
    if(head == NULL)
    {
    head = tail = p;
    // Cap nhat index
    num = CountEle(head);
    p = head;
    for(i = 0;i < num;++i)
    {
    p->Index = i;
    p = p->Next ;
    }
    }
    else
    {
    tail->Next = p;
    tail = p;
    // Cap nhat index
    num = CountEle(head);
    p = head;
    for(i = 0;i < num;++i)
    {
    p->Index = i;
    p = p->Next ;
    }
    }
    Head = head;
    Tail = tail;
    }
    //----------------------------------------------------
    // AfterAdd method : Them phan tu moi vao sau phan tu element
    BOOL CSList::AfterAdd(PSNODE element,PSNODE &head, PSNODE &tail, int value)
    {
    int num,i;
    if(element == NULL)
    return FALSE;
    PSNODE p,p1;
    p = getNode(value);
    p1 = element->Next ;
    element->Next = p;
    p->Next = p1;
    if(element == tail)
    tail = p;
    // Cap nhat index
    num = CountEle(head);
    p = head;
    for(i = 0;i < num;++i)
    {
    p->Index = i;
    p = p->Next ;
    }
    Head = head;
    Tail = tail;
    return TRUE;
    }
    //----------------------------------------------------
    // BeforeAdd method : Them phan tu moi vao truoc phan tu element
    BOOL CSList::BeforeAdd(PSNODE element, PSNODE &head, int value)
    {
    int num,i;
    PSNODE p,p1;
    p = getNode(value);
    if(element == head)
    {
    p->Next = head;
    head = p;
    // Cap nhat index
    num = CountEle(head);
    p = head;
    for(i = 0;i < num;++i)
    {
    p->Index = i;
    p = p->Next ;
    }
    Head = head;
    return TRUE;
    }
    else
    {
    // Duyet tim p1 dung truoc element
    p1 = head;
    while(p1 != NULL && p1->Next != element)
    p1 = p1->Next ;
    // Cap nhat con tro
    if(p1 != NULL)
    {
    p1->Next = p;
    p->Next = element;
    // Cap nhat index
    num = CountEle(head);
    p = head;
    for(i = 0;i < num;++i)
    {
    p->Index = i;
    p = p->Next ;
    }
    Head = head;
    return TRUE;
    }
    else
    {
    --index;
    return FALSE;
    }
    }
    }
    //----------------------------------------------------
    // FirstDelete method : Huy phan tu dau trong danh sach
    BOOL CSList::FirstDelete(PSNODE &head, PSNODE &tail)
    {
    int num;
    int i;
    if(head == NULL)
    return FALSE;
    PSNODE phuy,p;
    phuy = head;
    head = head->Next ;
    if(head == NULL)
    tail = NULL;
    delete phuy;
    // Cap nhat index
    num = CountEle(head);
    p = head;
    for(i = 0;i < num;++i)
    {
    p->Index = i;
    p = p->Next ;
    }
    Head = head;
    Tail = tail;
    return TRUE;
    }
    //----------------------------------------------------
    // EndDelete method : Huy phan tu cuoi trong danh sach
    BOOL CSList::EndDelete(PSNODE &head, PSNODE &tail)
    {
    int num,i;
    PSNODE phuy,p;
    if(head == NULL)
    return FALSE;
    phuy = tail;
    if(head == tail) // Danh sach chi co mot phan tu
    head = tail = NULL;
    else
    {
    // Tim phan tu p dung truoc tail
    p = head;
    while(p->Next != tail)
    p = p->Next ;
    // Cap nhat con tro
    tail = p;
    tail->Next = NULL;
    }
    delete phuy;
    // Cap nhat index
    num = CountEle(head);
    p = head;
    for(i = 0;i < num;++i)
    {
    p->Index = i;
    p = p->Next ;
    }
    Head = head;
    Tail = tail;
    return TRUE;
    }
    //----------------------------------------------------
    // AfterDelete method : Huy phan tu dung sau phan tu element
    BOOL CSList::AfterDelete(PSNODE element,PSNODE &head, PSNODE &tail)
    {
    int num,i;
    PSNODE phuy,p;
    if(element == NULL)
    return FALSE;
    if(element == tail)
    return FALSE;
    phuy = element->Next ;
    element->Next = phuy->Next ;
    if(phuy == tail)
    {
    tail = element;
    tail->Next = NULL;
    }
    delete phuy;
    // Cap nhat index
    num = CountEle(head);
    p = head;
    for(i = 0;i < num;++i)
    {
    p->Index = i;
    p = p->Next ;
    }
    Head = head;
    Tail = tail;
    return TRUE;
    }
    //----------------------------------------------------
    // BeforeDelete method : Huy phan tu dung truoc phan tu element
    BOOL CSList::BeforeDelete(PSNODE element, PSNODE &head)
    {
    int num,i;
    PSNODE phuy,p;
    if(element == NULL)
    return FALSE;
    if(element == head)
    return FALSE;
    // Duyetb tim phuy,p
    p = NULL;
    phuy = head;
    while(phuy->Next != element)
    {
    p = phuy;
    phuy = phuy->Next ;
    }
    // Cap nhat con tro
    if(p == NULL)
    head = element;
    else
    p->Next = element;
    delete phuy;
    // Cap nhat index
    num = CountEle(head);
    p = head;
    for(i = 0;i < num;++i)
    {
    p->Index = i;
    p = p->Next ;
    }
    Head = head;
    return TRUE;
    }
    //----------------------------------------------------
    // PrintSList method : Duyet danh sach
    void CSList::PrintSList(PSNODE head)
    {
    char s[1];
    char str[100] = "Danh sach : ";
    PSNODE p;
    p = head;
    while(p != NULL)
    {
    sprintf(s,"%3d ",p->Info);
    strcat(str,s);
    p = p->Next ;
    }
    MessageBox(NULL,str,"Info",0);
    }
    //----------------------------------------------------
    // SearchSList method : Tim kiem va tra ve phan tu co Info la value
    PSNODE CSList::SearchSList(PSNODE head, int value)
    {
    PSNODE p;
    p = head;
    while(p != NULL && p->Info != value)
    p = p->Next;
    return p;
    }
    //----------------------------------------------------
    // SortSList method : Sap xep danh sach
    void CSList::SortSList(PSNODE head)
    {
    int num,i;
    PSNODE p,q,k;
    int t;
    p = head;
    while(p)
    {
    k = p;
    q = p->Next ;
    while(q)
    {
    if(q->Info < k->Info )
    k = q;
    q = q->Next ;
    }
    t = p->Info ;
    p->Info = k->Info ;
    k->Info = t;
    p = p->Next ;
    }
    // Cap nhat index
    num = CountEle(head);
    p = head;
    for(i = 0;i < num;++i)
    {
    p->Index = i;
    p = p->Next ;
    }
    }
    //----------------------------------------------------
    // getPHead method : Lay con tro head
    PSNODE CSList::getPHead()
    {
    return Head;
    }
    //----------------------------------------------------
    // getPTail method : Lay con tro tail
    PSNODE CSList::getPTail()
    {
    return Tail;
    }
    //----------------------------------------------------
    // getInfo method : Tra ve truong Info cua phan tu co chi so index
    int CSList::getInfo(PSNODE head, int index)
    {
    PSNODE p;
    p = head;
    while(p != NULL && p->Index != index)
    p = p->Next;
    return p->Info ;
    }
    //----------------------------------------------------
    // CountEle method : Dem so phan tu trong danh sach
    int CSList::CountEle(PSNODE head)
    {
    PSNODE p;
    int count = 0;
    p = head;
    while(p != NULL)
    {
    ++count;
    p = p->Next ;
    }
    return count;
    }
    //----------------------------------------------------
    // Destructor
    CSList::~CSList()
    {
    PSNODE p;
    while(Head != NULL)
    {
    p = Head;
    Head = Head->Next ;
    delete p;
    }
    Tail = NULL;
    }
    //----------------------------------------------------
    // End CSList.cpp

  6. #6
    Tham gia
    11-10-2004
    Bài viết
    7
    Like
    0
    Thanked 0 Times in 0 Posts

    góp ý lập trình C++

    Quote Được gửi bởi cntt19001570
    // thêm ký tự c vào đầu xâu bị lỗi ,in ra chỉ có ký tự c

    #include<stdio.h>
    #include<string.h>
    #include<conio.h>

    char *Them_kt(char *str1, char c);

    int main()
    {
    char *xau="Diendantinhoc";
    char kt='1';
    clrscr();
    printf("\nXau da them:%s",Them_kt(xau,kt));
    getch();
    return 0;
    }

    char *Them_kt(char *str1, char c)
    {
    char *temp;
    int i,dai;
    dai=strlen(str1);
    strcpy(temp,"");

    /*for (i=dai;i>=0;i++)*/
    fo(i=0;i<=dai;i++)
    {
    /*temp[i+1]=str1[i];*/
    if(i!=0)
    temp[i]=str[i];
    }
    temp[dai+2]='\0';
    /*temp[0]=c;*/
    temp[0]='c' //gan dia chi ky ty c cho con tro temp[0]
    return temp;
    }
    ban hay kiem tra lai nhe vi minh khong co chuong trinh thu

  7. #7
    Tham gia
    01-07-2004
    Location
    /dev/sda6
    Bài viết
    499
    Like
    0
    Thanked 0 Times in 0 Posts

    Thông tin

    cảm ơn bạn, có thể viết hàm nay như sau:

    char* them_kt(char* string,char c ){
    int i;
    char* tmp;
    tmp=(char*)malloc(SIZE);
    strcpy(tmp,"");
    strrev(string);
    strcpy(tmp, string);
    strcat(tmp,c);
    strrev(tmp);
    strrev(string);
    return tmp;
    }

    Chỉ đơn giản vậy thôi! BYE

  8. #8
    Tham gia
    15-10-2003
    Location
    Sunnyvale
    Bài viết
    293
    Like
    0
    Thanked 2 Times in 2 Posts
    Quote Được gửi bởi cntt19001570
    cảm ơn bạn, có thể viết hàm nay như sau:

    char* them_kt(char* string,char c ){
    int i;
    char* tmp;
    tmp=(char*)malloc(SIZE);
    strcpy(tmp,"");
    strrev(string);
    strcpy(tmp, string);
    strcat(tmp,c);
    strrev(tmp);
    strrev(string);
    return tmp;
    }

    Chỉ đơn giản vậy thôi! BYE
    Vẩn còn quá rắc rối... có thể thử cách này.

    char* them_kt(char* string,char c ){
    char* tmp;
    tmp=(char*)malloc(strlen(string) + 2);
    tmp[0] = c; // copy ky tu vao dau chuoi
    strcpy(tmp+1, string); // copy chuoi vao sau ky tu dau tien.
    return tmp;
    }


Bookmarks

Quy định

  • Bạn không thể tạo chủ đề mới
  • Bạn không thể trả lời bài viết
  • Bạn không thể gửi file đính kèm
  • Bạn không thể sửa bài viết của mình
  •