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

Đề tài: đổi số thập phân sang số nhị phân

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

    Mặc định đổi số thập phân sang số nhị phân

    Mình đang gặp rắc rối về bài tập có nội dung như sau:
    Yêu cầu viết chương trình chuyển đổi số thập phân sang số nhị phân. bài làm gồm 3 tập tin: List.cpp, stack.cpp, d2bconv.cpp. Trong đó:
    - List.cpp Dùng để lưu trữ kết quả
    - Satck.cpp Dùng để sử dụng lớp List và phải cài đặt tất cả các thao tác như: push, pop, isEmpty...
    - d2bconv.cpp là chương trình chính (sử dụng lớp stack), cho phép người dùng nhập số thập phần và xuất kết quả ra màn hình.


    ĐỀ KHÓ QUÁ MONG CÁC BẠN GIÚP MÌNH NHA !!!

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

    Mình cũng có làm một bài tương tự ... nhưng chỉ dùng mãng để lưu trữ, không liên quan gì đến List cả. các bạn xem thử .... có bổ sung vào bài tập trên được không?

    C++ Code:
    1. #include<iostream.h>
    2. #include <stdio.h>
    3. #include <conio.h>
    4. #define Maxlength 100
    5. typedef int ElementType;
    6. typedef struct{
    7.   ElementType Elements[Maxlength];
    8.   int Top_idx;
    9. }Stack;
    10.  
    11. /*Khoi tao 1 ngan xep rong*/
    12. void MakeNull_Stack(Stack &S){
    13.   S.Top_idx=Maxlength;
    14. }
    15.  
    16. /*Kiem tra ngan xep co rong khong*/
    17. int Empty_Stack(Stack S){
    18.   return (S.Top_idx==Maxlength);
    19. }
    20.  
    21. /*Kiem tra ngan xep co day khong*/
    22. int Full_Stack(Stack S){
    23.   return (S.Top_idx==0);
    24. }
    25. /*Tra lai noi dung phan tu tren dinh*/
    26. ElementType Top(Stack S){
    27.   if(!Empty_Stack(S))
    28.     return S.Elements[S.Top_idx];
    29.   else cout<<"Error! Stack is empty";
    30. }
    31. /*Xoa 1 phan tu khoi ngan xep*/
    32. void Pop(Stack &S){
    33.   if(!Empty_Stack(S))
    34.     S.Top_idx=S.Top_idx+1;
    35.   else cout<<"Error! Stack is empty";
    36. }
    37.  
    38. /*Day 1 phan tu vao ngan xep*/
    39. void Push(ElementType x, Stack &S){
    40.   if(Full_Stack(S))
    41.     cout<<"Error!Stack is full";
    42.   else{
    43.     S.Top_idx=S.Top_idx-1;
    44.     S.Elements[S.Top_idx]=x;
    45.   }
    46.  
    47. }
    48. /*Tim va in ra so nhi phan tuong ung*/
    49. void print_binary(int n){
    50.   Stack S;
    51.   MakeNull_Stack(S);
    52.   while(n!=0){
    53.          Push(n%2,S);
    54.          n=n/2;
    55.   };
    56.     cout<<"So nhi phan tuong ung la:";
    57.   while(!Empty_Stack(S)){
    58.     cout<<Top(S);
    59.     Pop(S);
    60.   }
    61. }
    62. /*Chuong trinh chinh*/
    63. void main(){
    64.   int n;
    65.   cout<<"Nhap vao 1 so nguyen:";
    66.   cin>>n;
    67.   print_binary(n);
    68.   getch();
    69. }

    Vui lòng để code vào trong tag code. Đọc Nội quy để biết thêm chi tiết
    Đã được chỉnh sửa lần cuối bởi Kevin Hoang : 16-03-2008 lúc 12:29 AM. Lý do: Nhắc nhở về tag code

  3. #3
    Ngày gia nhập
    03 2008
    Bài viết
    78

    - Để làm bài đổi ra hệ nhị phân có nhiều cách:vòng lặp, đệ quy, cấu trúc dữ liệu...
    - Nhưng nếu đề bài ko yêu cầu làm theo một cách cụ thể nào đó thì ta nên dùng đệ quy để CODE cho nhanh => ra kết quả nhanh chóng

    Code:
    #include <stdio.h>
    void Dec_to_Bin(int N)
    {
    	if (N==0) return;
    	Dec_to_Bin(N/2);
    	printf("%d",N%2);
    }
    void main()
    {
    	int n=0;
    	printf("Nhap n ");
    	scanf("%d",&n);
    	printf("So %d doi ra ha nhi phan la ",n);
    	Dec_to_Bin(n);
    }
    No way, No success..

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

    Ừ, đúng là bài này có nhiều cách ... nhưng nó phải được viết trên 3 file khác nhau : List.cpp, stack.cpp, d2bconv.cpp ???

    d2bconv.cpp

    C++ Code:
    1. #include<iostream.h>
    2. #include<stdio.h>
    3. #include<conio.h>
    4. #include "stack.cpp"
    5.  
    6. void main(){
    7.   int n;
    8.   cout<<"Nhap vao 1 so nguyen:";
    9.   cin>>n;
    10.   print_binary(n);
    11.   getch();
    12. }




    stack.cpp
    C++ Code:
    1. #include<iostream.h>
    2. #include <stdio.h>
    3. #include <conio.h>
    4. #include "List.cpp"
    5. #define Maxlength 100
    6. typedef int ElementType;
    7. typedef struct{
    8.   ElementType Elements[Maxlength];
    9.   int Top_idx;
    10. }Stack;
    11.  
    12. /*Khoi tao 1 ngan xep rong*/
    13. void MakeNull_Stack(Stack &S){
    14.   S.Top_idx=Maxlength;
    15. }
    16.  
    17. /*Kiem tra ngan xep co rong khong*/
    18. int Empty_Stack(Stack S){
    19.   return (S.Top_idx==Maxlength);
    20. }
    21.  
    22. /*Kiem tra ngan xep co day khong*/
    23. int Full_Stack(Stack S){
    24.   return (S.Top_idx==0);
    25. }
    26. /*Tra lai noi dung phan tu tren dinh*/
    27. ElementType Top(Stack S){
    28.   if(!Empty_Stack(S))
    29.     return S.Elements[S.Top_idx];
    30.   else cout<<"Error! Stack is empty";
    31. }
    32. /*Xoa 1 phan tu khoi ngan xep*/
    33. void Pop(Stack &S){
    34.   if(!Empty_Stack(S))
    35.     S.Top_idx=S.Top_idx+1;
    36.   else cout<<"Error! Stack is empty";
    37. }
    38.  
    39. /*Day 1 phan tu vao ngan xep*/
    40. void Push(ElementType x, Stack &S){
    41.   if(Full_Stack(S))
    42.     cout<<"Error!Stack is full";
    43.   else{
    44.     S.Top_idx=S.Top_idx-1;
    45.     S.Elements[S.Top_idx]=x;
    46.   }
    47.  
    48. }




    List.cpp

    C++ Code:
    1. #include<iostream.h>
    2. #include<stdio.h>
    3. #include<conio.h>
    4. /*Tim va in ra so nhi phan tuong ung*/
    5. void print_binary(int n){
    6.   Stack S;
    7.   MakeNull_Stack(S);
    8.   while(n!=0){
    9.          Push(n%2,S);
    10.          n=n/2;
    11.   };
    12.     cout<<"So nhi phan tuong ung la:";
    13.   while(!Empty_Stack(S)){
    14.     cout<<Top(S);
    15.     Pop(S);
    16.   }
    17. }




    Nhưng mà như thế cũng sai với yêu cầu của đề bài, vì lớp List dùng để lưu trữ ... và phải đúng cấu trúc List nữa...

    Bạn nào biết sử dụng lớp List thì sửa dùm mình nha, thanks.

    Lần sau lưu ý: Không gửi nhiều bài viết liền nhau, liên tục trong một đề tài nhé. Đọc Nội quy trước khi gửi bài viết của mình lên diễn đàn, nếu không khả năng bị xóa bài sẽ rất cao đó
    Đã được chỉnh sửa lần cuối bởi Kevin Hoang : 16-03-2008 lúc 01:59 PM. Lý do: Vi phạm viết bài liên tục, liền nhau

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

  1. Đổi số thập phân sang nhị phân và ngược lại
    Gửi bởi CuiBapOnline trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 11
    Bài viết cuối: 29-10-2013, 10:50 PM
  2. Bài tập C đổi thập phân sang nhị phân
    Gửi bởi nhoklovex4 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 3
    Bài viết cuối: 03-01-2013, 05:23 PM
  3. Hỏi về thuật toán chuyển so thập phan sang số nhị phân,thập lục phân
    Gửi bởi chicken_chip trong diễn đàn Nhập môn lập trình C#, ASP.NET
    Trả lời: 4
    Bài viết cuối: 04-11-2011, 05:45 PM
  4. Chuyển hệ thập phân sang hệ thập lục phân, giúp mình
    Gửi bởi Yio_91 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: 04-10-2010, 01:04 PM
  5. Đổi số thập phân sang phân số?
    Gửi bởi NoBi trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 7
    Bài viết cuối: 31-12-2007, 10:53 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