Trang 1 trên tổng số 3 123 Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 24 kết quả

Đề tài: phép chia trong C (kô dùng \)

  1. #1
    Ngày gia nhập
    06 2007
    Bài viết
    3

    Mặc định phép chia trong C (kô dùng \)

    các bác ơi giúp em với, em muốn tạo 1 phép chia mà kô dùng dấu chia (\), các bác có thể hướng dẫn cho em với được kô? ví dụ như 4/3 = 1.3333333333, làm sao để có thể gán từng kí tự vào 1 array của số int được hả các bác? cám ơn mọi người trước

  2. #2
    Ngày gia nhập
    05 2007
    Bài viết
    7

    Trích dẫn Nguyên bản được gửi bởi vnz Xem bài viết
    các bác ơi giúp em với, em muốn tạo 1 phép chia mà kô dùng dấu chia (\), các bác có thể hướng dẫn cho em với được kô?
    -Phép chia là 1 trong 4 phép toán : +,-,*,\ căn bản nhất của toán học trên nhiều tập hợp khác nhau :R,N,...Vì toán học không định nghĩa phép toán có thể thay thế trong phép chia nên trong lập trình chắc chắn cũng không có.
    Code:
    ví dụ như 4/3 = 1.3333333333, làm sao để có thể gán từng kí tự vào 1 array của số int được hả các bác? cám ơn mọi người trước
    -Int là 1 kiểu số nguyên nên bạn gán bất kỳ số thập phân nào cho nó .Thì nó đều làm tròn lại .VD :
    Code:
    #include<stdio.h>
    void main()
    {
          int a=4/3;
          printf("%4d",a);
    }
    -Thì máy sẽ in ra màn hình số 1 ,chứ không phải 1.33333.
    -Còn như nếu như bạn gán từng kí tự vào 1 array của số int .Ở đây bạn chưa biết cách sử dụng số với ký tự(bao gồm cả con số) .Chẳng hạn kiểu int là ô nhớ 2 byte dùng để lưu 1 số từ -32768 ->32767 .Còn kiểu char thì kích thước 1 byte có thể lưu lại 1 ký tự hoặc 1 con số.
    -Kế tiếp bạn hiểu sai ô nhớ .Vd : int nó là 1 ô nhớ thì nó chỉ chứa tối đa 1 giá trị là 1 số nào đó bất kỳ trong giới hạn trên ,nếu bạn gán lần 2 là bạn đã thay đổi giá trị trước .Trong trường hợp này ,nếu muốn gán bạn nên dùng mảng ký tự để gán.
    Đã được chỉnh sửa lần cuối bởi SegoGs : 03-06-2007 lúc 03:45 PM.
    ----------Kiến thức qua đi chỉ có bằng cấp ở lại----------

    Hỏng chuột , hư bàn phím ,game bằng niềm tin

  3. #3
    Ngày gia nhập
    06 2007
    Bài viết
    3

    cám ơn bác nhưng ý em là chỉ dùng phép trừ để thay thế cho phép chia, ví dụ như 16/3 thì sẽ là 16 - 3 = 13 (counter = 1), rồi 13 - 3 = 10 (counter = 2), cứ như thế đến khi còn 1 - 3 = -2 thì thêm 1 dấu "." vào, rồi nhân thêm 10 với 1 và lại tiếp trừ tiếp cho 3 như ở trên

    em biết fải làm như thế nhưng kô biết viết code chính xác như thế nào, bác nào có thể thì giúp em với

  4. #4
    Ngày gia nhập
    05 2007
    Bài viết
    7

    Mình làm thử 1 cái nhưng chỉ lấy dư 1 số ở đuôi thập phân :
    Code:
    #include<stdio.h>
    #include<conio.h>
    int kiempnguyen(int a,int n)
    {
    	int pdu=a%n;
    	int pnguyen;
    	pnguyen=a-pdu;
    	for(int i=0;pnguyen!=0;i++)
    		pnguyen=pnguyen-n;
    	return i;
    }
    void main()
    {
    	int a,n;
    	printf("Nhap so chia n :");
    	scanf("%d",&n);
    	printf("Nhap so bi chia a :");
    	scanf("%d",&a);
    	printf("Ket qua la : %d.%d",kiempnguyen(a,n),kiempnguyen((a%n)*10,n));
    	getch();
    
    }
    Đã được chỉnh sửa lần cuối bởi SegoGs : 03-06-2007 lúc 07:23 PM.
    ----------Kiến thức qua đi chỉ có bằng cấp ở lại----------

    Hỏng chuột , hư bàn phím ,game bằng niềm tin

  5. #5
    Ngày gia nhập
    04 2007
    Bài viết
    128

    SegoGs mới chỉ làm phép chia lấy nguyên. Phép chia là lấy số bị chia trừ cho số chia cho đến khi bằng 0, số lần trừ là kết quả
    VD:
    6/3
    6-3=3 --->3-3=0
    vậy có 2 lần trừ nên kết quả là 2,
    thế nên ko cần phải gán pdu=a%n;
    nên thay vòng for = while(phannguyen!0)
    về việc gán phần dư cho 1 mảng thì mình nghĩ thế này, tạo 1 mảng là phandu[], hix tạm thời chưa biết dùng lời nói diễn tả thế nào, để hiện thực nó cái rồi đưa lên
    Đã được chỉnh sửa lần cuối bởi soda_chanhmuoi : 03-06-2007 lúc 04:51 PM.

  6. #6
    Ngày gia nhập
    06 2007
    Bài viết
    3

    Mặc định phép chia trong C (kô dùng \)

    xin lỗi bác đã không nói rõ, trong bài tập của em yêu cầu kô được dùng "%" luôn

    bài tập yêu cầu cho số chia và số bị chia, sau đó kèm theo 1 input là int, input đó cho phép khi làm phép chia có thể tính đến chữ số thập phân bao nhiêu, ví dụ

    số chia la 20, số bị chia là 6, và input là 5 thì kết quả sẽ là 3.33333

    nếu như được dùng / hay % thì hay quá vì em đã dùng printf("%.*g \n", digit+1, result); là có thể in ra số và số thập phân mà mình muốn in ra kèm theo tuy nhiên đề bài lại kô cho phép như thế

    char* round_it(char *n, int ndigits) {
    int int_digits, point;

    for(int_digits = 0; point != '.'; ++int_digits)
    point = n[int_digits];
    if(n[int_digits + ndigits] >= '5')
    ++n[int_digits + (ndigits - 1)];

    n[int_digits + ndigits] = '\0';

    return n;
    }
    int main() {
    float dividend;
    float divider;
    float rsl;
    int digit;
    float result;

    printf("Maximum entry size: 15 characters. \n");

    printf("Dividend? \n");
    if (scanf("%f", &dividend) != 1) {
    printf("Wrong entry. \n");
    return 0;
    }

    printf("Divider? \n");
    if (scanf("%f", &divider) != 1) {
    printf("Wrong entry. \n");
    return 0;
    }
    printf("Number of floating digits required? \n");
    if (scanf("%d", &digit) != 1) {
    printf("Wrong entry. \n");
    return 0;
    } else if (digit > 15) {
    printf("Maximum entry size 15 characters. \n");
    return 0;
    } else {
    // result = dividend/divider;
    // printf("%.*g \n", digit+1, result);

    char* c = round_it("43.3434343545435", 5);
    printf("%c", c);
    }
    }

    đây là code mà em viết tuy nhiên kô complie được

    em làm đến đây thì kẹt với cả phần chia, nghĩ hoài mà kô ra, các bác giúp em với :(:(

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

    Trích dẫn Nguyên bản được gửi bởi soda_chanhmuoi Xem bài viết
    SegoGs mới chỉ làm phép chia lấy nguyên. Phép chia là lấy số bị chia trừ cho số chia cho đến khi bằng 0, số lần trừ là kết quả
    VD:
    6/3
    6-3=3 --->3-3=0
    vậy có 2 lần trừ nên kết quả là 2,
    thế nên ko cần phải gán pdu=a%n;
    nên thay vòng for = while(phannguyen!0)
    về việc gán phần dư cho 1 mảng thì mình nghĩ thế này, tạo 1 mảng là phandu[], hix tạm thời chưa biết dùng lời nói diễn tả thế nào, để hiện thực nó cái rồi đưa lên
    đúng là thuật toán thì là như thế, nhưng khi gán vào 1 mảng char hoặc int thì em kô biết gán thế nào, làm sao để có thể nhận được khi là sang phần số thập phân, đau đầu thiệt

  8. #8
    Ngày gia nhập
    05 2007
    Bài viết
    7

    -Mình thử làm thế này .Bạn coi được không :
    Code:
    #include<stdio.h>
    #include<conio.h>
    void nhap(int &a,int &n,int &input)
    {
    
    	printf("Nhap so chia n :");
    	scanf("%d",&n);
    	printf("Nhap so bi chia a :");
    	scanf("%d",&a);
    	printf("Nhap input :");
    	scanf("%d",&input);
    }
    int kiempnguyen(int &a,int n)
    {
    	for(int i=0;a-n>=0;i++)
    		a=a-n;
    	return i;
    }
    int *sothapphan(int a,int n,int input)
    {
    	int *p=new int[input+1];
    	for(int i=0;i<input+1;i++)
    	{
    		p[i]=kiempnguyen(a,n);
    		a=a*10;
    	}
    	return p;
    }
    -----------------------------
    void main()
    {
    	int a,n,input;
    	int *p;
    	nhap(a,n,input);
    	p=sothapphan(a,n,input);
    	printf("Vay ket qua la : %d.",p[0]);
    	for(int i=1;i<input;i++)
    		printf("%d",p[i]);
    	delete(p);
    	getch();
    }
    ----------Kiến thức qua đi chỉ có bằng cấp ở lại----------

    Hỏng chuột , hư bàn phím ,game bằng niềm tin

  9. #9
    Ngày gia nhập
    06 2007
    Bài viết
    3

    em đã chạy thử nhưng phần kiếm số thập phân kô có đúng, nếu em bỏ số từ 1 đến 3 thì hình như nó hiện lên bằng unicode hay là gì gì đó, còn nếu lớn hơn 3 thì số thập phân luôn luôn là 5

    Code:
    #include <stdlib.h>
    #include <stdio.h>
    //#include<conio.h>
    #define MAXTEXT 10
    
    int *sothapphan(int a,int n,int input)
    {
    	int in[input+1];
    	int *p=in;//new int[input+1];
    	int i;
    	for(i=0;i<input+1;i++)
    	{
    		p[i]=kiempnguyen(a,n);
    		a=a*10;
    	}
    	return p;
    }
    
    int kiempnguyen(int a,int n)
    {
    	int i;
    	for(i=0;a-n>=0;i++)
    		a=a-n;
    	return i;
    }
    
    int main() {
    	float dividend;
    	float divider;
    	float rsl;
    	int *p;
    	int i;
    	int digit;
    	float result;
    
    	printf("Maximum entry size: 15 characters. \n");
    
    	printf("Dividend? \n");
    	if (scanf("%f", &dividend) != 1) {
    		printf("Wrong entry. \n");
    		return 0;
    	}
    
    	printf("Divider? \n");
    	if (scanf("%f", &divider) != 1) {
    		printf("Wrong entry. \n");
    		return 0;
    	}
    	printf("Number of floating digits required? \n");
    	if (scanf("%d", &digit) != 1) {
    		printf("Wrong entry. \n");
    		return 0;
    	} else if (digit > 15) {
    		printf("Maximum entry size 15 characters. \n");
    		return 0;
    	} else {
    		p = sothapphan(dividend, divider, digit);
    		printf("result: %d.", p[0]);
    		for (i = 1; i < digit; i++) {
    			printf("%d", p[i]);
    		}
    	//	delete(p);
    	}
    }
    đây là những gì sau khi em sửa lại, vì em kô có conio.h trong library, em phải dùng remote desktop để complie C, sorry vì đã comment 1 số dòng của bác?
    Đã được chỉnh sửa lần cuối bởi Kevin Hoang : 05-06-2007 lúc 02:08 PM. Lý do: Đưa code vào tag

  10. #10
    Ngày gia nhập
    05 2007
    Bài viết
    7

    -Lần sau bản sửa lại nên lùi vào cách vào trong chút xíu và đặt vào CODE cho dễ nhìn.Cái này nhìn hơi khó .
    ----------Kiến thức qua đi chỉ có bằng cấp ở lại----------

    Hỏng chuột , hư bàn phím ,game bằng niềm tin

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

  1. Con trỏ trên C Xuất 1 phần tử trong mảng 2 chiều dùng con trỏ
    Gửi bởi lovemoney trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 4
    Bài viết cuối: 09-04-2012, 12:46 PM
  2. Trả lời: 0
    Bài viết cuối: 04-11-2011, 03:38 PM
  3. Lập trình C Thắc mắc về cách truyền mảng 1 chiều vào trong hàm(dùng con trỏ)
    Gửi bởi phamhuy1990 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 9
    Bài viết cuối: 23-05-2011, 02:18 AM
  4. Bài toán dùng chiều dài cố định cho chuỗi trong CTGT&DL
    Gửi bởi blue_23 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 2
    Bài viết cuối: 29-01-2011, 10:49 AM
  5. Kỹ thuật C++ Thao tác với mảng 2 chiều dùng con trỏ trong lập trình C++
    Gửi bởi ck_041176 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 5
    Bài viết cuối: 27-08-2010, 12:20 PM

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