Từ 1 tới 8 trên tổng số 8 kết quả

Đề tài: Chuyển hệ 10 sang hệ bất kì

  1. #1
    Ngày gia nhập
    03 2009
    Bài viết
    15

    Mặc định Chuyển hệ 10 sang hệ bất kì

    bác neo' giải hộ em bai toán chuyển hệ số 10 sang hệ số bất kì, dùng stack để giải nhe'

  2. #2
    Ngày gia nhập
    01 2008
    Nơi ở
    UIT
    Bài viết
    129

    Chia liên tiếp cho cơ số lấy phần dư push vào stack, đến khi kết quả bằng 0 thì dừng. Sau đó chạy vòng lặp pop kết quả lưu trong stack ra ngoài.

  3. #3
    Ngày gia nhập
    02 2008
    Nơi ở
    Việt Nam
    Bài viết
    577

    Bạn tham khảo code này nhé.

    C Code:
    1. #include <stdio.h>
    2. #include <stdlib.h>
    3. /*
    4. */
    5. typedef struct stack
    6. {
    7.     int top;
    8.     int *node;
    9. };
    10.  
    11.  
    12. void Create(stack *s)
    13. {
    14.     s->top = -1;
    15.     s->node = NULL;
    16. }
    17.  
    18. void Push(stack *s,int x)
    19. {
    20.     if(s->top==-1)
    21.     {
    22.         s->node = (int*) malloc (sizeof(int));
    23.         s->top = 0;
    24.         s->node[s->top] = x;
    25.         return;
    26.     }
    27.     s->top++;
    28.     s->node = (int*) realloc (s->node,(s->top+1)*sizeof(int));
    29.     s->node[s->top] = x;
    30. }
    31.  
    32. int Pop(stack *s)
    33. {
    34.     if(s->top != -1)
    35.     {
    36.         int x = s->node[s->top];
    37.         s->top--;
    38.         s->node = (int*) realloc (s->node,(s->top+1)*sizeof(int));
    39.         return x;
    40.     }
    41. }
    42.  
    43. int main()
    44. {
    45.     int number,t;
    46.     printf (" - Enter decimal number: ");scanf("%d",&number);
    47.     printf (" - Convert to: ");scanf("%d",&t);
    48.  
    49.     stack s;
    50.     Create(&s);
    51.     while (number)
    52.     {
    53.         Push(&s,number%t);
    54.         number /=t;
    55.     }
    56.     printf(" - Convert to %d number is: ",t);
    57.     while (s.top!=-1) printf("%d",Pop(&s));
    58.     return 0;
    59. }

  4. #4
    Ngày gia nhập
    11 2008
    Bài viết
    203

    @: Hok_bik_zi: Thuật toán đó đã được người ta làm từ lâu rồi bạn ạ! Không cần phải nhọc công nhắc lại đâu. Không loại trừ trường hợp the_corsair biết thuật toán đó rồi.
    code đây bạn ạ:
    Code:
    #include <stdio.h>
    #include <stdlib.h>
    #include <conio.h>
    
    #define STACKSIZE 100
    #define TRUE 1
    #define FALSE 0
    
    struct stack
    {
       int top;
       int nodes[STACKSIZE];
    };
    
    int empty(struct stack *ps)
    {
       if(ps->top == -1)
          return(TRUE);
       else
          return(FALSE);
    }
    
    void push(struct stack *ps, int x)
    {
       if(ps->top == STACKSIZE-1)
       {
          printf("%s", "stack bi day");
          exit(1);
       }
       else
          ps->nodes[++(ps->top)] = x;
    }
    
    int pop(struct stack *ps)
    {
       if(empty(ps))
       {
          printf("%s", "stack bi rong");
          exit(1);
       }
       return(ps->nodes[ps->top--]);
    }
    
    main()
    {
       struct stack s;
       int coso, so, sodu;
       char c;
       //clrscr();
    	fflush(stdin);
       do
       {
          s.top =- 1;  // khoi dong stack
    
          printf("\n\nNhap vao mot so thap phan: ");
          scanf("%d", &so);
          printf("%s","Muon doi so thap phan nay sang co so may: ");
          scanf("%d", &coso);
    
          while (so != 0)
          {
    	      sodu = so % coso;
    	      push(&s, sodu);  // push so du vao stack
    	      so = so / coso;
          }
    
          printf("So da doi la: ");
          while(!empty(&s))
    	      printf("%X", pop(&s));  // pop so du ra khoi stack
    
          printf("\n\nBan co muon tiep tuc khong? (c/k): ");
          c = getche();
       } while(c == 'c' || c == 'C');
    }
    Link: _http://forums.congdongcviet.com/showthread.php?t=14178&page=2&highlight=nh%E1%BB%8 B+ph%C3%A2n
    Đã được chỉnh sửa lần cuối bởi Loveanygirls : 29-03-2009 lúc 10:42 PM.
    Tôi tin rằng: giải thuật thì có thể tìm trong hàng trăm GB ebook, hoặc Google nhưng code chạy thì chưa chắc! Hãy post code để chứng tỏ giải thuật của bạn là đúng!
    Giải thuật là bản thiết kế của ngôi nhà, code là phần xây dựng. Nếu chỉ xây nhà trên giấy thì ta sống chả khác nào người nguyên thủy.

  5. #5
    Ngày gia nhập
    03 2009
    Bài viết
    15

    đây la' code cua em, em complie dc rui' sao no' ko chay dc nhi?



    Code:
    #include <stdio.h>
    #include <stdlib.h>
    #include "conio.h"
    #include "string.h"
    typedef int BOOL;
    #define TRUE 1
    #define FALSE 0
    #define MAX 80
    #define MAXSTACKSIZE 10
    typedef struct node *NodePtr;
    struct node
        {
        int info;
        NodePtr next;
        };
    struct stack
        { 
        int top;
        int items[MAXSTACKSIZE];
        };
        //declare global variables:
        int i,n;
         FILE *fpS1, *fpS2;
         struct stack s;
        int num1,base1;
        void InitializeArrayStack(struct stack *ps)
        {
        ps->top = -1;
        }
        BOOL IsEmptyArrayStack(struct stack *ps)
        {
        return (ps->top == -1);
        }
        
    BOOL IsFullArrayStack(struct stack *ps)
        {
        return (ps->top==MAXSTACKSIZE-1);
        }
        int popArrayStack(struct stack *ps)
        {
        int rtn;
        if (IsEmptyArrayStack(ps))
        {
        printf("Underflow\n");
        exit(1);
        }
        rtn=ps->items[ps->top];
        ps->top=ps->top-1;
        return rtn;
    }
    int stacktopArrayStack(struct stack *ps)
        {
        if (IsEmptyArrayStack(ps))
        {
        printf("underflow\n");
        exit(1);
        }
        return (ps->items[ps->top]);
    }
    void pushArrayStack(struct stack *ps, int x)
        {
        if (IsFullArrayStack(ps))
        {
        printf("overflow\n");
        exit(1);
        }
        ps->top=ps->top+1;
        ps->items[ps->top]=x;
    }
    void initializeStack(NodePtr *pT)
        { 
        *pT=NULL;
        }
    BOOL IsEmptyStack(NodePtr T)
        {
        return (T==NULL);
        }
    void pushStack (NodePtr *pT, char new_item)
    {
        NodePtr p;
        p=(NodePtr)malloc(sizeof(struct node));
        p->info = new_item;
        p->next = *pT;
        *pT= p;
    }
    int popStack (NodePtr *pT)
    {
        NodePtr p;             //a pointer to point to original top node
        int rtn_value;         //the value of the item to be returned
        if (IsEmptyStack(*pT)) //check whether the stack is empty
        {
        printf("underflow\n");
        exit(1);
        }
        rtn_value=(*pT)->info; //save the value to be returned
        p = *pT;               //save the address of the top node into p
        *pT= p->next;          //update the T pointer
        free(p);               //free the original top node
        return (rtn_value);    //return the original top node value
    }
    void Base10toBase(int num, int base)
    //Function to convert a decimal number to other base-B number
    {
         int remainder;
         do{
             remainder=num%base;
             num=num/base;
             pushArrayStack(&s,remainder);
            }while(num>0);
            
    }
    void PrintConvertedNumberToFile()
    //Function to print converted number into output.txt file
    {
         do{
             fprintf(fpS2,"%d",popArrayStack(&s));
           } while(!IsEmptyArrayStack(&s));
         
         fprintf(fpS2,"\n");
    }
    int main()
    {   
        NodePtr pStack;
        fpS1=fopen("stack_input.txt","r");
        fpS2=fopen("stack_output.txt","w");   
        InitializeArrayStack(&s);    
        initializeStack(&pStack);
        if(fpS1==NULL)
        {
          printf("Error opening file!\n");
          exit(1);}
        else
        while(!feof(fpS1))
            {
            fscanf(fpS1,"%d",&num1);    
            fscanf(fpS1,"%d",&base1);
            Base10toBase(num1,base1);
            PrintConvertedNumberToFile();
            }
        fclose(fpS1);
        fclose(fpS2);
         getch();
         return 1;
         }

  6. #6
    Ngày gia nhập
    03 2009
    Bài viết
    15

    Mặc định Chuyển hệ 10 sang hệ bất kì

    hy' em nhầm, lưu file thanh c++ nên lỗi

  7. #7
    Ngày gia nhập
    03 2009
    Bài viết
    15

    khương lv vừa nài nir xin code em xong,có j' thì xin hắn code cũng đc

  8. #8
    Ngày gia nhập
    03 2009
    Bài viết
    10

    bác còn code nào thì share cho anh em tham khảo và cho ý kiến nhé. Thanks!

Các đề tài tương tự

  1. Lập trình C++ Chuyển từ chuyển từ trung tố sang hậu tố và tính biểu thức hậu tố N chữ số như thế nào?
    Gửi bởi Chopper trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 1
    Bài viết cuối: 22-08-2012, 09:48 PM
  2. Lỗi ko chuyển từ Source sang design đc(khi chuyển thì bị đơ luôn) ?
    Gửi bởi tan408 trong diễn đàn Thắc mắc lập trình ASP.NET
    Trả lời: 5
    Bài viết cuối: 23-04-2011, 07:36 AM
  3. ADO.NET Chuyể Phần mềm QLNS sang Ngôn ngữ Dynamic Programming. Ai chuyển giúp mình!?
    Gửi bởi huynhanhton trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 0
    Bài viết cuối: 03-04-2011, 11:41 PM
  4. Chuyển một số sang chuỗi | Chuyển 1 số sang xâu ?
    Gửi bởi xuanhung_cntt trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 6
    Bài viết cuối: 03-05-2009, 11:48 PM
  5. [Hỏi]Chuyển 1 kí tự in Hoa Sang ASCII rồi sang nhị phân
    Gửi bởi chip.hyt.chip trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 3
    Bài viết cuối: 18-04-2009, 01:22 AM

Quyền hạn của bạn

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