Trang 1 trên tổng số 2 12 Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 11 kết quả

Đề tài: Chia Sẻ Bài Tập C/c++

  1. #1
    No Avatar
    nanova Khách

    Mặc định Chia Sẻ Bài Tập C/c++

    Các cao thủ C/C++ ơi cho em hỏi chút nha:
    chả là ông thầy em cho bài tập tính 100! bằng ngôn ngữ lập trình C/C++,em làm mãi mà chỉ tính được 34! bằng số nguyên.
    Đoạn code của em như sau:
    code:
    Code:
    #include"stdio.h"
    #include"conio.h"
    #include"math.h"
    long double gt(long double n){
    long s=1,i;
    for(i=1;i<=n;i++)s*=i;
    return(s);
    }
    void main(){clrscr();
    long n,l,s;
    printf("nhập n=");
    scanf("%ld",&n);
    if(n<0)printf("khong tồn tại giai thừa");
    if(n=0||n=1)printf("1");
    else {l=gt(s);printf("l=%ld",l);
    gech();
    }
    mong các cao thủ giúp em nhé.Cám ơn trước nha.
    Đã được chỉnh sửa lần cuối bởi nanova : 07-03-2007 lúc 08:03 AM.

  2. #2
    No Avatar
    Nhuan_Trang_Only_Love Khách

    Code:
    #include"stdio.h"
    #include"conio.h"
    #include"math.h"
    long double gt(int n){
    long s=1;
    for(;n>0;n--) s*=n;
    return(s);
    }
    void main(){
       clrscr();
        int n;
         do{
               printf("nhập số nguyên 0<=n<=100");
                 scanf("%d",&n);
             }while(n<0||n>100);
     if(n=0||n=1)printf("1");
       else printf("%ld",gt(n));
       gech();
    }
    Bạn thử lại thế này xem, tôi cũng không nhớ lắm về miền giá trị của các kiểu giá trị, đây tôi chỉ rút ngắn lại code thôi.Bạn hãy thử xem lại miền giá trị xem *
    Chúc thành công

  3. #3
    Ngày gia nhập
    12 2006
    Bài viết
    7

    Thử lấy cái máy tính bấm tay 10 chữ số ra bấm 69! kết quả là 1.7 x 10^98. CÒn nếu tính 70! thì tràn, ko tính được. Như vậy thì nếu tính 100!, chắc chắn không thể dùng kiểu long(chỉ có 32bit) được, 2^32 ~ 4.3 x 10^9
    long double là 80bit, cũng chỉ khoảng 1.2 x 10^24 . Trong khi 25! đã là 1.55 x 10^25
    Theo mình để tính 100! phải viết chương trình kiểu số lớn. Coi 1 số lớn là 1 xâu ký tự. Và bạn phải tự xây dựng các phép tính để tính trên kiểu mới này. Hiện mình cũng đang có bài tập về số lớn, nếu bạn cần thì chúng ta sẽ cùng trao đổi.
    Đã được chỉnh sửa lần cuối bởi peach@ : 22-03-2007 lúc 06:27 PM.

  4. #4
    No Avatar
    Leon88 Khách

    http://forums.congdongcviet.com/show...?t=1540&page=2
    Ở đây có cả 270! đó ... các bạn vào đó mà thảo luận nhá

  5. #5
    Ngày gia nhập
    06 2007
    Nơi ở
    Hà Nội
    Bài viết
    8

    Trích dẫn Nguyên bản được gửi bởi nanova Xem bài viết
    Các cao thủ C/C++ ơi cho em hỏi chút nha:
    chả là ông thầy em cho bài tập tính 100! bằng ngôn ngữ lập trình C/C++,em làm mãi mà chỉ tính được 34! bằng số nguyên.
    Đoạn code của em như sau:
    code:
    Code:
    #include"stdio.h"
    #include"conio.h"
    #include"math.h"
    long double gt(long double n){
    long s=1,i;
    for(i=1;i<=n;i++)s*=i;
    return(s);
    }
    void main(){clrscr();
    long n,l,s;
    printf("nhập n=");
    scanf("%ld",&n);
    if(n<0)printf("khong tồn tại giai thừa");
    if(n=0||n=1)printf("1");
    else {l=gt(s);printf("l=%ld",l);
    gech();
    }
    mong các cao thủ giúp em nhé.Cám ơn trước nha.
    trước hết mình xin nhận xét đoạn mã của bạn là khá lằng nhằng và lung tung
    các mã dịnh dạng và kiểu dữ liệu sử dụng không đúng và không hợp lý
    nếu bài của bạn chỉ tính được 100! thì bài sau đây của mình sẽ tính được chính xác 170! còn nếu bạn muốn tính lớn hơn có thể sử dụng kiểu dữ liệu long double cho biến giai thừa
    code:
    Code:
    #include <stdio.h>
    #include <conio.h>
    void main()
    {
     double gt;
     int i,n;
     clrscr();
     printf("n= ");
     scanf("%d",&n);
     if(n<0)printf("nhap sai");
     if(n>0)
    	{
    	  gt=1;
    	  for(i=0;i<=n;i++)
    		if(i==0)gt=1;else gt=gt*i;
    	  printf("\n%d! =  %.0lf",n,gt);
    	}
     getch();
    }
    còn một cách khác để xử lý bài này với n rất lớn nữa,mình sẽ giới thiệu sau

    Nhớ cho code vào tag {#} nhé! Kẻo lại bị xóa bài đó

  6. #6
    Ngày gia nhập
    06 2007
    Nơi ở
    Hà Nội
    Bài viết
    8

    Mặc định Chia Sẻ Bài Tập C/c++

    Trích dẫn Nguyên bản được gửi bởi peach@ Xem bài viết
    Thử lấy cái máy tính bấm tay 10 chữ số ra bấm 69! kết quả là 1.7 x 10^98. CÒn nếu tính 70! thì tràn, ko tính được. Như vậy thì nếu tính 100!, chắc chắn không thể dùng kiểu long(chỉ có 32bit) được, 2^32 ~ 4.3 x 10^9
    long double là 80bit, cũng chỉ khoảng 1.2 x 10^24 . Trong khi 25! đã là 1.55 x 10^25
    Theo mình để tính 100! phải viết chương trình kiểu số lớn. Coi 1 số lớn là 1 xâu ký tự. Và bạn phải tự xây dựng các phép tính để tính trên kiểu mới này. Hiện mình cũng đang có bài tập về số lớn, nếu bạn cần thì chúng ta sẽ cùng trao đổi.
    bạn có thể nói rõ hơn ý tưởng của bạn được không mình đọc có hiểu chút nhưng không rõ lắm.bạn có thể cho mình đoạn code để xử lý vấn đề này không,mình thích nhất là nhìn tận mắt cái ý tưởng của mọi người được hiện thực hoá bằng các đoạn code để người đọc có thể nghiên cứu vàhiểu vấn đề dễ hơn

  7. #7
    Ngày gia nhập
    06 2007
    Nơi ở
    Hà Nội
    Bài viết
    8

    Trích dẫn Nguyên bản được gửi bởi Nhuan_Trang_Only_Love Xem bài viết
    Code:
    #include"stdio.h"
    #include"conio.h"
    #include"math.h"
    long double gt(int n){
    long s=1;
    for(;n>0;n--) s*=n;
    return(s);
    }
    void main(){
       clrscr();
        int n;
         do{
               printf("nhập số nguyên 0<=n<=100");
                 scanf("%d",&n);
             }while(n<0||n>100);
     if(n=0||n=1)printf("1");
       else printf("%ld",gt(n));
       gech();
    }
    Bạn thử lại thế này xem, tôi cũng không nhớ lắm về miền giá trị của các kiểu giá trị, đây tôi chỉ rút ngắn lại code thôi.Bạn hãy thử xem lại miền giá trị xem *
    Chúc thành công
    code này của bạn không chuẩn lắm.
    không cần đến #include <math.h>
    và mã định dạng cho kiểu dữ liệu long double không phải là %ld đâu bạn hãy xem lại đi nha

  8. #8
    Ngày gia nhập
    08 2006
    Bài viết
    1

    Mình cũng có một bài tập, giải mãi không xong, mong các bạn chỉ giúp !

    Bài tập :

    Xây dựng tập thao tác trên hàng đợi
    1. Tạo lập hàng đợi.
    2. Kiểm tra tính rỗng của hàng đợi.
    3. Kiểm tra tính tràn của hàng đợi.
    4. Thêm phần tử vào hàng đợi.
    5. Loại bỏ phần tử khỏi hàng đợi.
    6. Duyệt các phần tử trong hàng đợi.

    Bài làm :

    #include <stdio.h>
    #include <stdlib.h>
    #include <conio.h>
    #include <dos.h>
    #include <string.h>
    #include <math.h>

    #define MAX 50
    #define TRUE 1
    #define FALSE 0

    /* TAO LAP HANG DOI */

    typedef struct {
    int mahang;
    char tenhang[20];
    } hang;
    typedef struct {
    int front, rear;
    hang node[MAX];
    } queue;
    void Initialize (queue *pq) {
    pq->front = 1;
    pq->rear = 0;
    }

    /* KIEM TRA TINH RONG CUA HANG DOI */

    int Empty(queue *pq) {
    if (pq->front > pq->rear)
    return(TRUE);
    else return(FALSE);
    }

    /* KIEM TRA TINH TRAN CUA HANG DOI */

    int Full(queue *pq) {
    if (pq->rear==MAX)
    return(TRUE);
    else return(FALSE);
    }

    /* THEM PHAN TU VAO HANG DOI */

    void Insert(queue *pq, hang x) {
    if (pq->rear ==MAX) {
    printf("\n Queue Full");
    return;
    }
    else {
    (pq->rear)++;
    pq->node[pq->rear]=x;
    }
    }

    /* LOAI BO PHAN TU KHOI HANG DOI */

    hang Remove(queue *pq) {
    if (Empty(pq)){
    printf("\n Queue Empty");
    }
    else {
    if (pq->front ==MAX)
    pq->front=1;
    else
    pq->front++;
    }
    return(pq->node[pq->front]);
    }

    /* DUYET CAC PHAN TU TRONG HANG DOI */

    void Traver(queue *pq) {
    int i;
    if(Empty(pq)){
    printf("\n Queue Empty");
    return;
    }
    if (pq->front ==MAX)
    i=1;
    else
    i = pq->front+1;
    while (i!=pq->rear){
    printf("\n %11d % 15s", pq->node[i].mahang, pq->node[i].tenhang);
    if(i==MAX)
    i=1;
    else
    i++;
    }
    printf("\n %11d % 15s", pq->node[i].mahang, pq->node[i].tenhang);
    }

    void main(void){
    queue q;
    char chucnang, front1; char c; hang mh;
    Initialize(&q);
    do {
    printf("\n CHUONG TRINH QUAN LY XUAT NHAP HANG");
    printf("\n 1. Nhap mot mat hang");
    printf("\n 2. Xuat mot mat hang");
    printf("\n 3. Xem mot mat hang");
    printf("\n 4. Xem hang moi nhap");
    printf("\n 5. Xem tat ca");
    printf("\n Chuc nang chon:");chucnang=getch();
    switch(chucnang){
    case '1':
    printf("\n Ma mat hang:"); scanf("%d", &mh.mahang);while(getchar()!='\n');
    printf("\n Ten hang:");scanf("%s", mh.tenhang);while(getchar()!='\n');
    Insert(&q,mh);
    break;
    case '2':
    if (!Empty(&q)){
    mh=Remove(&q);
    printf("\n %5d %20s",mh.mahang, mh.tenhang);
    }
    else {
    printf("\n Queue Empty");
    }
    break;
    case '3':
    front1=(q.front==MAX)?0:q.front+1;
    printf("\n Hang xuat");
    printf("\n%6d%20s",q.node[front1].mahang,q.node[front1].tenhang);
    break;
    case '4':
    printf("\n Hang moi nhap");
    printf("\n%5d%20s",q.node[q.rear].mahang,q.node[q.rear].tenhang);
    break;
    case '5':
    printf("\n Hang trong kho"); Traver(&q);
    break;
    }
    } while(chucnang!='0');printf("\n Xin chao !");
    getch();
    }


    Rất mong nhận được hồi âm của tất cả các bạn !

    Lưu ý: Cho code vào tag code và có thụt dòng và có comments nhé. Đưa code thế này ai xem cho cậu được chứ?

  9. #9
    Ngày gia nhập
    01 2007
    Nơi ở
    Somewhere I belong
    Bài viết
    168

    Bạn sang bên hỏi đáp C/C++ Truyền thống đi.
    http://forums.congdongcviet.com/forumdisplay.php?f=10
    In code we trust

  10. #10
    Ngày gia nhập
    08 2006
    Bài viết
    3

    ặc, còn ko biết del hay move đi
    where staff?!?!?
    Nhìn code chóng mặt

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

  1. Trả lời: 2
    Bài viết cuối: 21-04-2013, 09:46 AM
  2. Lỗi: bố cục trang web tự tăng theo chiều ngang khi chiều cao thay đổi
    Gửi bởi tuanngocpt trong diễn đàn Nhập môn lập trình C#, ASP.NET
    Trả lời: 2
    Bài viết cuối: 16-03-2013, 11:25 PM
  3. Trả lời: 1
    Bài viết cuối: 28-04-2012, 09:43 PM
  4. Cách truyền mang 1 chiều cho hàm bài con trỏ và mảng một chiều ai có thể giải thích giúp mình
    Gửi bởi biencute trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 8
    Bài viết cuối: 21-03-2012, 09:00 AM
  5. Lời giải bài tập: Chuỗi Ký tự, mảng số nguyên 1 chiều, mảng 2 chiều, tạo Menu
    Gửi bởi xuanngoc trong diễn đàn Thủ thuật, Tutorials và Mã nguồn C/C++/C++0x
    Trả lời: 0
    Bài viết cuối: 15-10-2011, 01:17 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