# Đề tài: 2 bài tập: Tối giản phân số, giải phương trình bậc 2

1. Awaiting Email Confirmation
Ngày gia nhập
11 2008
Bài viết
10

## 2 bài tập: Tối giản phân số, giải phương trình bậc 2

1. Fraction Simplifier
Main Program
Design and code a program that simplifies fractions. Your program prompts for and accepts the numerator and denominator of a fraction and displays the fraction in simplified form. To calculate the simplified numerator and denominator, your program calls the simplify function described below.
The output from your program looks something like

Fraction Simplifier
===================
Numerator: 4
Denominator: 16

4 / 16 = 1 / 4

simplify Function
Design and code a function named simplify that simplifies the numerator and denominator of a fraction. The function receives the addresses of two int variables. The variables themselves holds the numerator and denominator respectively. The function resets those variables to the simplified numerator and denominator values, if simplification was possible. The function does not return any value itself. The header of your function looks something like:

void simplify(int *numerator, int *denominator)

Include negative as well as zero values in your test cases.

2. roots Function
Design and code a C function named roots that calculates the roots of a quadratic equation. Your function receives three doubles that hold the coefficients of the quadratic equation and returns through two other double parameters the real roots of the equation. The function returns the number of real roots as the return value of the function itself. The header for your function looks something like

int roots(double a, double b, double c, double *x1, double *x2)

f(x) = a * x2 + b * x + c

where a, b and c are constant coefficients. This equation may have up to 2 real roots. The roots are the values of x for which
a * x2 + b * x + c = 0

The roots are given by the equations
x1 = ( - b + sqrt( D ) ) / ( 2 * a )
x2 = ( - b - sqrt( D ) ) / ( 2 * a )
where D is the discriminant
D = b2 - 4 * a * c
If D is positive-valued, there are 2 real roots. If D is zero-valued, there is one real root. If D is negative-valued, there are no real roots.
If there is one real root, set x1 to its value and leave x2 unchanged. If there are no real roots, leave x1 and x2 unchanged.

Đây là Code demo ...........

2. Rốt cục bạn muốn hỏi gì đây? Có code rồi mà còn hỏi gì nữa. Có gì khó nói thì cứ PM cho mình.

3. Rốt cục bạn muốn hỏi gì đây? Có code rồi mà còn hỏi gì nữa. Có gì khó nói thì cứ PM cho mình.
đây
Cac bac lam ho em voi ...12h trua nay nop roi
Nó chỉ đơn giản là 1 bài rút gọn phân số, một bài giải phương trình bậc 2 nhưng lười không chịu làm, lên đây xin code, sao tiến bộ được.

Code thì trên diễn đàn không thiếu, hướng làm thì như sau:

- Bài 1 viết thêm một hàm tính UCLN của 2 số nguyên a, b để đảm bảo đúng đắn cho cả số âm khi rút gọn phân số, bạn dùng thuật toán nếu u là UCLN của a và b thì u là UCLN của a%b và b (với a>b). Hoàn thành cái hàm rút gọn phân số bằng cách chia cả tử và mẫu cho UCLN của chúng.

- Bài 2 hẳn bạn đã học giải và biện luận phương trình bậc 2 trong toán, hãy viết code bám sát vào đó. Dùng các điều kiện của delta D mà kết luận nghiệm.

* Còn nếu lý do không làm được là đọc đề không hiểu thì pm lại để dịch.

4. Bài 1: Làm gần giống yêu cầu. Ai giúp mình edit cho đúng với yêu cầu cái.
Thanks!
PHP Code:
``` #include<stdio.h>#include<conio.h>int LCM(int,int);void simplify(int& ,int&);int main(){    int tu, mau;    printf("Nhap tu so: ");    scanf("%d",&tu);    do    {        printf("Nhap mau so: ");        scanf("%d",&mau);    }while(mau==0);    printf("Phan so vua nhap: %d/%d",tu,mau);    simplify(tu,mau);    printf("\nPhan so toi gian: %d/%d",tu,mau);    getch();    return 0;    }int LCM(int a, int b){        if(a==0)        return b;        if(b==0)        return a;    int c;    if(a<0)        a=-a;    if(b<0)        b=-b;    do    {        c=a%b;        a=b;        b=c;            }while(b>0);    return a;    }void simplify(int &a, int &b){    int c=LCM(a,b);    a/=c;    b/=c;    }  ```
Bài 2:
Code không chạy, post lên nhờ các bạn sửa giúp.
PHP Code:
``` #include<stdio.h>#include<conio.h>#include<math.h>int roots(double, double, double, double &, double &);int main(){    double a, b, c, x1=0.0,x2=0.0;        printf("Nhap vao he so a: ");    scanf("%lf",&a);    printf("Nhap vao he so b: ");    scanf("%lf",&b);    printf("Nhap vao he so c: ");    scanf("%lf",&c);    printf("\n%lf %lf %lf",a,b,c);    roots(a, b, c, x1, x2);    printf("\n%lf %lf",x1, x2);    getch();    return 0;    }int roots(double a, double b, double c, double &x1, double &x2){    double D=b*b-4*a*c;    if(D<0)        return 0;    if(D==0)    {        x1=-b/2*a;        x2=-b/2*a;            return 1;    }    if(D>0)    {        x1=(-b+sqrt(D))/2*a;        x1=(-b-sqrt(D))/2*a;        return 2;    }}  ```
Đã được chỉnh sửa lần cuối bởi Loveanygirls : 11-06-2009 lúc 10:49 AM.

5. Demo thôi nhé, khi nhập phân số phải check điều kiện mẫu khác 0;
C Code:
1. /**
2.   **/
3. #include<stdio.h>
4. /*
5. */
6. void simplify(int *numerator, int *denominator)
7. {
8.     int a = *numerator, b = *denominator, ucln = a;
9.     while (b)
10.     {
11.         ucln = b;
12.         b = a%b;
13.         a = ucln;
14.     }
15.     printf("%d\n",ucln);
16.     *numerator /= ucln;
17.     *denominator /= ucln;
18. }
19.
20. int main()
21. {
22.     int nume = 8, dino = -6;
23.     simplify(&nume,&dino);
24.     printf("%d/%d",nume,dino);
25. }
với TH tử bằng 0, kết quả là 0/1, tuy hơi lạ nhưng không sai. Còn lại có vẻ ổn.

@Loveanygirls: cố gắng khi làm C thì dùng đúng chuẩn của C, không truyền tham chiếu vào hàm (vì không có khái niệm đó, C++ mới có), cần truyền dưới dạng con trỏ như đầu bài chuẩn ở trên.

@Edit: Thêm code bài 2. Server quá tải giờ mới vào đc,nản.
C Code:
1. /**
2.   **/
3. #include<stdio.h>
4. #include<math.h>
5. /*
6. */
7. int roots(double a, double b, double c, double *x1, double *x2);
8.
9. int main()
10. {
11.     double a, b, c, x1, x2;
12.
13.     printf("Nhap vao he so a: ");
14.     scanf("%lf",&a);
15.     printf("Nhap vao he so b: ");
16.     scanf("%lf",&b);
17.     printf("Nhap vao he so c: ");
18.     scanf("%lf",&c);
19.     printf("\n%lf %lf %lf\n",a,b,c);
20.
21.     int r = roots(a, b, c, &x1, &x2);
22.     if (!r) printf(" -> Phuong trinh vo nghiem.");
23.     else if (r==1) printf(" -> Phuong trinh co nghiem kep x = %f",x1);
24.     else  printf(" -> Phuong trinh co 2 nghiem pb: \n\tx1 = %f \n\tx2 = %f",x1,x2);
25.
26.     return 0;
27. }
28.
29. int roots(double a, double b, double c, double *x1, double *x2)
30. {
31.     double D=b*b-4*a*c;
32.     if (D<0)
33.         return 0;
34.     if (D==0)
35.     {
36.         *x1 = -b/2*a;
37.         return 1;
38.     }
39.     if (D>0)
40.     {
41.         *x1 = (-b+sqrt(D))/(2*a);
42.         *x2 = (-b-sqrt(D))/(2*a);
43.         return 2;
44.     }
45. }
Đã được chỉnh sửa lần cuối bởi QuangHoang : 11-06-2009 lúc 10:43 AM.

6. ## 2 bài tập: Tối giản phân số, giải phương trình bậc 2

Mình và chủ thớt cám ơn QuangHoang nhiều lắm!

7. Thành viên mới
Ngày gia nhập
06 2009
Bài viết
1
có ai biết thuật toán sau là như thế nào không;
nhập 1 danh sách họ tên
sau đó sắp xếp danh sách theo họ tên là sao nhỉ?
làm ơn nói giúp mình với nha
2 ngày nữa là thi rồi
hiuhu

8. Giải thuật đã thành code này:
PHP Code:
``` #include<stdio.h>#include<conio.h>#include<string.h>int main(){        char* mang5contro[5];    char  danhsachhoten[5][100];//5 ho ten, moi ho ten khong qua 100 ki tu    //NHAP DANH SACH HO TEN    for(int i=0;i<5;i++)    {        printf("Nhap vao mot ho ten: ");        scanf("%s",danhsachhoten[i]);        mang5contro[i]=danhsachhoten[i];                }    printf("\nDanh sach nhap vao:\n");    for(int i=0;i<5;i++)    {        printf("\n%s",mang5contro[i]);            }        //SAP XEP    for(int i=0;i<4;i++)    {        for(int j=0;j<5;j++)        {            if(strcmp(danhsachhoten[i],danhsachhoten[j])>0)            {                char* temp;                temp=mang5contro[i];                mang5contro[i]=mang5contro[j];                mang5contro[j]=temp;                                            }                        }            }    //HIEN THI    printf("\nDanh sach sau khi sap xep tang dan:\n");    for(int i=0;i<5;i++)    {        printf("\n%s",mang5contro[i]);            }    getch();    return 0;    }  ```

9. Awaiting Email Confirmation
Ngày gia nhập
12 2008
Bài viết
235
Nếu mà sắp xếp đúng thì phải tách tên ra.Sắp xếp theo tên ấy. Toàn bài trên lớp mà lên xin code. Chẳng hiểu các bạn đã học chút nào cho kì thi chưa nữa

#### 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