Giúp mình mấy bài toán về C

Thảo luận trong 'C/C++' bắt đầu bởi cunbom0705, 26 Tháng ba 2011.

  1. Offline

    cunbom0705

    • Thành Viên Mới

    Số bài viết:
    2
    Đã được thích:
    0
    Điểm thành tích:
    0
    Các bác ơi giúp em làm bài tập này với nhé:
    1,Nhập từ bàn phím số nguyên N,kiểm tra N số chẵn hay số lẻ.Viết bằng ngôn ngữ thuật toán
    2,Nhập vào 3 cạnh a,b,c của một tam giác xuất ra màn hình, tam giác đó là tam giác gì(thường,vuông,cân,đều,vuông cân)viết bằng ngôn ngữ thuật toán
    3,Nhập từ bàn phím số nguyên có 1 chữ số in ra các ngày trong tuần,số 2 là thứ 2.
    Giusp em nhé các bác
    THANKS YOU các bác nhiều
  2. Offline

    congthangitvn

    • Thành viên sáng lập

    • Liên thông đại học 2012...!
    Số bài viết:
    2.232
    Đã được thích:
    1.550
    Điểm thành tích:
    1.450
    Nhắc nhở bạn lần 1: Bạn đặt lại tiêu đề có dấu, tiêu đề khớp nội dung thì mọi người mới giúp bạn.
    Thân!
  3. Offline

    alt+F4

    • Core i3

    Số bài viết:
    596
    Đã được thích:
    423
    Điểm thành tích:
    450
    Mình thì không giỏi gì để giúp bạn nhưng mình có cái "ý tưởng thuật toán" phần còn lại bạn viết nhé (mấy bữa đầu không đi học nên không viết ra kiểu đó ^^).
    1. nhập N, kiểm tra chia hết cho 2 không nếu đúng in ra màn hình là chẵn, sai thì là lẻ
    2. nhap 3 so a, b, c so sánh nếu (a+b)<= c hoặc (a+c)<=b hoặc (b+c)<=a thì không phải tam giác.
    nếu (sqr(a)=sqr(b)+sqr(c)) hoặc (sqr(b)=sqr(a)+sqr(c)) hoặc (sqr(c)=sqr(b)+sqr(a)) thì là tam giác vuông
    nếu (a=b) hoặc (b=c) hoặc (c=a) thì tam giác cân
    nếu (a=b) và (b=c) và (c=a) thì tam giác đều
    còn không nằm trên các trường hợp này là tam giác thường

    3. dùng mảng mỗi phần tử là mỗi thứ, rồi nhập số nguyên vào, dùng số nguyên đó truy xuất đến vị trí của phần tử mảng.

    (sorry chưa cọ C nhiều nên không dám viết ra. anh em coi đừng có bắt lẻ rồi chặt chém...)
  4. Offline

    trsa

    • Thành Viên Mới

    Số bài viết:
    180
    Đã được thích:
    15
    Điểm thành tích:
    0
    bài 2 của bạn viết vậy là sai rồi. thứ nhất: bình phương 1 cạnh = tổng bình phương 2 cạnh mới là tam giác vuông chứ ko phải là căn bậc 2. thứ 2 : bạn làm tam giác cân với tam giác đều bị nhầm rồi. Thứ 3: thứ tự các trường hợp bạn xét như vậy thì ko đúng(vì nếu tam giác vuông cân thì chương trình sẽ cho ra 2 thông báo: tam giác vuông, tam giác cân chứ ko fai là tam giác vuông cân(sẽ bị mấy ông thầy gạch bỏ đó).....).
  5. Offline

    alt+F4

    • Core i3

    Số bài viết:
    596
    Đã được thích:
    423
    Điểm thành tích:
    450
    Sorry em nhầm hàng mấy pác ạ, trong C không có hàm sqr mà chỉ có sqrt ^^. Với lại xót cái vụ tam giác vuông cân nữa. sax. sr
  6. Offline

    trsa

    • Thành Viên Mới

    Số bài viết:
    180
    Đã được thích:
    15
    Điểm thành tích:
    0
    sqrt là hàm căn bậc hai thôi. bạn fai thay bằng hàm pow(a,2) : tương đương a bình phương đó bạn, nhưng nhớ phải khai báo thư viện math.h nữa nha
  7. Offline

    hongoctrien

    • Friends

    Số bài viết:
    2.449
    Đã được thích:
    2.464
    Điểm thành tích:
    2.431
    1. Như gợi ý của bạn Alt+F4. Mình xin gửi chương trình mình viết đơn giản, bạn thêm mắm muối vô cho đẹp :D
    Mã:
    #include<conio.h>
    #include<stdio.h>
    void main()
    {
    int a;
    clrscr();
    printf("Nhap a");scanf("%d",&a);
    if (a%2==0)
        printf("So chan");
    else
        printf("So le");
    getch();
    }
    
    2. Tham khảo đoạn code này, từ đó bạn dễ dàng suy ra thuật toán cho riêng bạn
    Mã:
    [COLOR=#000000][COLOR=#FF8000]#include<conio.h>
    #include<stdio.h>
    
    [/COLOR][COLOR=#0000BB]int main[/COLOR][COLOR=#007700]()
    {
        [/COLOR][COLOR=#0000BB]float a[/COLOR][COLOR=#007700],[/COLOR][COLOR=#0000BB]b[/COLOR][COLOR=#007700],[/COLOR][COLOR=#0000BB]c[/COLOR][COLOR=#007700];
        [/COLOR][COLOR=#0000BB]printf[/COLOR][COLOR=#007700]([/COLOR][COLOR=#DD0000]"Nhap cac canh cua tam giac\n"[/COLOR][COLOR=#007700]);
        [/COLOR][COLOR=#0000BB]printf[/COLOR][COLOR=#007700]([/COLOR][COLOR=#DD0000]"a= "[/COLOR][COLOR=#007700]);
        [/COLOR][COLOR=#0000BB]scanf[/COLOR][COLOR=#007700]([/COLOR][COLOR=#DD0000]"%f"[/COLOR][COLOR=#007700],&[/COLOR][COLOR=#0000BB]a[/COLOR][COLOR=#007700]);
        [/COLOR][COLOR=#0000BB]printf[/COLOR][COLOR=#007700]([/COLOR][COLOR=#DD0000]"b= "[/COLOR][COLOR=#007700]);
        [/COLOR][COLOR=#0000BB]scanf[/COLOR][COLOR=#007700]([/COLOR][COLOR=#DD0000]"%f"[/COLOR][COLOR=#007700],&[/COLOR][COLOR=#0000BB]b[/COLOR][COLOR=#007700]);
        [/COLOR][COLOR=#0000BB]printf[/COLOR][COLOR=#007700]([/COLOR][COLOR=#DD0000]"c= "[/COLOR][COLOR=#007700]);
        [/COLOR][COLOR=#0000BB]scanf[/COLOR][COLOR=#007700]([/COLOR][COLOR=#DD0000]"%f"[/COLOR][COLOR=#007700],&[/COLOR][COLOR=#0000BB]c[/COLOR][COLOR=#007700]);
        if (([/COLOR][COLOR=#0000BB]a[/COLOR][COLOR=#007700]+[/COLOR][COLOR=#0000BB]b[/COLOR][COLOR=#007700]>=[/COLOR][COLOR=#0000BB]c[/COLOR][COLOR=#007700])&&([/COLOR][COLOR=#0000BB]b[/COLOR][COLOR=#007700]+[/COLOR][COLOR=#0000BB]c[/COLOR][COLOR=#007700]>=[/COLOR][COLOR=#0000BB]a[/COLOR][COLOR=#007700])&&([/COLOR][COLOR=#0000BB]c[/COLOR][COLOR=#007700]+[/COLOR][COLOR=#0000BB]a[/COLOR][COLOR=#007700]>=[/COLOR][COLOR=#0000BB]b[/COLOR][COLOR=#007700]))
        {
            [/COLOR][COLOR=#0000BB]printf[/COLOR][COLOR=#007700]([/COLOR][COLOR=#DD0000]"%f, %f, %f thoa man la 3 canh cua tam giac!\n\n"[/COLOR][COLOR=#007700],[/COLOR][COLOR=#0000BB]a[/COLOR][COLOR=#007700],[/COLOR][COLOR=#0000BB]b[/COLOR][COLOR=#007700],[/COLOR][COLOR=#0000BB]c[/COLOR][COLOR=#007700]);
            if (([/COLOR][COLOR=#0000BB]a[/COLOR][COLOR=#007700]==[/COLOR][COLOR=#0000BB]b[/COLOR][COLOR=#007700])&&(([/COLOR][COLOR=#0000BB]a[/COLOR][COLOR=#007700]!=[/COLOR][COLOR=#0000BB]c[/COLOR][COLOR=#007700])||([/COLOR][COLOR=#0000BB]b[/COLOR][COLOR=#007700]!=[/COLOR][COLOR=#0000BB]c[/COLOR][COLOR=#007700])))
                [/COLOR][COLOR=#0000BB]printf[/COLOR][COLOR=#007700]([/COLOR][COLOR=#DD0000]"Tam giac Can tai C"[/COLOR][COLOR=#007700]);
            else if (([/COLOR][COLOR=#0000BB]a[/COLOR][COLOR=#007700]==[/COLOR][COLOR=#0000BB]c[/COLOR][COLOR=#007700])&&(([/COLOR][COLOR=#0000BB]a[/COLOR][COLOR=#007700]!=[/COLOR][COLOR=#0000BB]b[/COLOR][COLOR=#007700])||([/COLOR][COLOR=#0000BB]c[/COLOR][COLOR=#007700]!=[/COLOR][COLOR=#0000BB]b[/COLOR][COLOR=#007700])))
                [/COLOR][COLOR=#0000BB]printf[/COLOR][COLOR=#007700]([/COLOR][COLOR=#DD0000]"Tam giac Can tai B"[/COLOR][COLOR=#007700]);
            else if (([/COLOR][COLOR=#0000BB]c[/COLOR][COLOR=#007700]==[/COLOR][COLOR=#0000BB]b[/COLOR][COLOR=#007700])&&(([/COLOR][COLOR=#0000BB]c[/COLOR][COLOR=#007700]!=[/COLOR][COLOR=#0000BB]a[/COLOR][COLOR=#007700])||([/COLOR][COLOR=#0000BB]b[/COLOR][COLOR=#007700]!=[/COLOR][COLOR=#0000BB]a[/COLOR][COLOR=#007700])))
                [/COLOR][COLOR=#0000BB]printf[/COLOR][COLOR=#007700]([/COLOR][COLOR=#DD0000]"Tam giac Can tai A"[/COLOR][COLOR=#007700]);
            else if(([/COLOR][COLOR=#0000BB]a[/COLOR][COLOR=#007700]==[/COLOR][COLOR=#0000BB]b[/COLOR][COLOR=#007700])&&([/COLOR][COLOR=#0000BB]b[/COLOR][COLOR=#007700]==[/COLOR][COLOR=#0000BB]c[/COLOR][COLOR=#007700]))
                [/COLOR][COLOR=#0000BB]printf[/COLOR][COLOR=#007700]([/COLOR][COLOR=#DD0000]"Tam giac Deu!"[/COLOR][COLOR=#007700]);
            else if([/COLOR][COLOR=#0000BB]a[/COLOR][COLOR=#007700]*[/COLOR][COLOR=#0000BB]a[/COLOR][COLOR=#007700]==[/COLOR][COLOR=#0000BB]b[/COLOR][COLOR=#007700]*[/COLOR][COLOR=#0000BB]b[/COLOR][COLOR=#007700]+[/COLOR][COLOR=#0000BB]c[/COLOR][COLOR=#007700]*[/COLOR][COLOR=#0000BB]c[/COLOR][COLOR=#007700])
                [/COLOR][COLOR=#0000BB]printf[/COLOR][COLOR=#007700]([/COLOR][COLOR=#DD0000]"Tam giac Vuong tai A"[/COLOR][COLOR=#007700]);
            else if([/COLOR][COLOR=#0000BB]b[/COLOR][COLOR=#007700]*[/COLOR][COLOR=#0000BB]b[/COLOR][COLOR=#007700]==[/COLOR][COLOR=#0000BB]a[/COLOR][COLOR=#007700]*[/COLOR][COLOR=#0000BB]a[/COLOR][COLOR=#007700]+[/COLOR][COLOR=#0000BB]c[/COLOR][COLOR=#007700]*[/COLOR][COLOR=#0000BB]c[/COLOR][COLOR=#007700])
                [/COLOR][COLOR=#0000BB]printf[/COLOR][COLOR=#007700]([/COLOR][COLOR=#DD0000]"Tam giac Vuong tai B"[/COLOR][COLOR=#007700]);
            else if([/COLOR][COLOR=#0000BB]c[/COLOR][COLOR=#007700]*[/COLOR][COLOR=#0000BB]c[/COLOR][COLOR=#007700]==[/COLOR][COLOR=#0000BB]b[/COLOR][COLOR=#007700]*[/COLOR][COLOR=#0000BB]b[/COLOR][COLOR=#007700]+[/COLOR][COLOR=#0000BB]a[/COLOR][COLOR=#007700]*[/COLOR][COLOR=#0000BB]a[/COLOR][COLOR=#007700])
                [/COLOR][COLOR=#0000BB]printf[/COLOR][COLOR=#007700]([/COLOR][COLOR=#DD0000]"Tam giac Vuong tai C"[/COLOR][COLOR=#007700]);
            else if (([/COLOR][COLOR=#0000BB]a[/COLOR][COLOR=#007700]+[/COLOR][COLOR=#0000BB]b[/COLOR][COLOR=#007700]==[/COLOR][COLOR=#0000BB]c[/COLOR][COLOR=#007700])||([/COLOR][COLOR=#0000BB]c[/COLOR][COLOR=#007700]+[/COLOR][COLOR=#0000BB]b[/COLOR][COLOR=#007700]==[/COLOR][COLOR=#0000BB]a[/COLOR][COLOR=#007700])||([/COLOR][COLOR=#0000BB]c[/COLOR][COLOR=#007700]+[/COLOR][COLOR=#0000BB]a[/COLOR][COLOR=#007700]==[/COLOR][COLOR=#0000BB]b[/COLOR][COLOR=#007700]))
                [/COLOR][COLOR=#0000BB]printf[/COLOR][COLOR=#007700]([/COLOR][COLOR=#DD0000]"Tam giac bi Suy bien!"[/COLOR][COLOR=#007700]);
            else
                [/COLOR][COLOR=#0000BB]printf[/COLOR][COLOR=#007700]([/COLOR][COLOR=#DD0000]"Tam giac Thuong!"[/COLOR][COLOR=#007700]);
        }
        else
            [/COLOR][COLOR=#0000BB]printf[/COLOR][COLOR=#007700]([/COLOR][COLOR=#DD0000]"%f, %f, %f khong thoa man la 3 canh cua tam giac!\n"[/COLOR][COLOR=#007700],[/COLOR][COLOR=#0000BB]a[/COLOR][COLOR=#007700],[/COLOR][COLOR=#0000BB]b[/COLOR][COLOR=#007700],[/COLOR][COLOR=#0000BB]c[/COLOR][COLOR=#007700]);
        [/COLOR][COLOR=#0000BB]getch[/COLOR][COLOR=#007700]();
        return [/COLOR][COLOR=#0000BB]0[/COLOR][COLOR=#007700];
    }  
    
    3. Dùng mảng
    [/COLOR][/COLOR]
    duyen.only.it thích bài này.
  8. Offline

    heo

    • Windows 95

    Số bài viết:
    171
    Đã được thích:
    68
    Điểm thành tích:
    90
    Câu thứ 3 cho nhập một số rồi dùng lệnh switch là đươc.Case 2 thì là thứ 2,case 3 thì thứ 3....
  9. Offline

    trsa

    • Thành Viên Mới

    Số bài viết:
    180
    Đã được thích:
    15
    Điểm thành tích:
    0
    Câu 2 xét điều kiện thỏa mãn tam giác thiếu ==>sai

    Và chương trình of câu 2 bạn hongoctrien xét các trường hợp như zậy thi vẫn chưa ổn. Cụ thể nếu TH tam giác vuông cân tại A thì chương trình sẽ xét TH tam giác cân trước và in ra tam giác cân tại A. rồi tiếp tục xét tiếp đến TH tam giác vuông cân vẫn thỏa đk nên tiếp tục in ra tam giác vuông cân (==>1 tam giác xảy ra 2 TH). Với câu 2 chúng ta nên xét như thế này sẽ tối ưu hơn nè: xét tam giác đều -> tam giác vuông cân ->tam giác cân -> tam giác thường, và sau mỗi lệnh in ra kquả tam giác gì thì ta dùng thêm lệnh break để kết thúc chương trình(ko fai xét tiếp khi đã có kết quả).
  10. Offline

    mika0110

    • Thành Viên Mới

    Số bài viết:
    16
    Đã được thích:
    7
    Điểm thành tích:
    0
    cunbom0705 -> Em là khóa 4 mới bắt đầu học C phải ko?Học bên lập trình hả?
    Lâu nay không lên diễn đàn,nhưng tự nhiên thấy lập trình là ngứa tay ghê. Bài C này các bạn làm nhiều cách và tự làm phức tạp vấn đề.2 năm trước còn học thì bị thầy quần bài ni xâm đen.Có một số góp ý cho các bạn như sau:
    Câu 1 và 3 thì đơn giản,bạn làm theo các bạn kia hướng dẫn là ổn.
    Câu 2 : Chỉ hướng dẫn thuật toán,về phần ngôn ngữ thì tự xử nghe.
    1)
    Kiểm tra tam giác vuông thì chẳng việc gì phải dùng sqrt(),pow() cho mệt nhìn dòng lệnh dài dòng,mất công khai báo thư viện,tốn bộ nhớ.
    ->Chỉ cần a*a=b*b+c*c (áp dụng cho 2 trường hợp còn lại).
    2)
    Câu lệnh if else là câu lệnh tuần tự,nếu đúng thì không cần xét những vế sau, làm gì có chuyện xảy ra 2 trường hợp như bạn nói mà cũng không cần lệnh break().
    3)Các bạn kiểm tra điều kiện của tam giác còn thiếu.
    -cạnh của tam giác có <=0 được không? Nếu người dùng nhập số âm thì sao? Phải kiểm tra trường hợp này nữa.
    -> if(a>0 && b>0 && c>0) hoặc khai báo bổ sung thêm từ khóa "unsinged" để lấy số >0.
    -
    -Làm gì có điều kiện a+b>=c chỗ này,phải là a+b>c thôi,mấy cái kia tương tự
    -Bạn nên đọc kĩ đề,không phải là bạn làm sai nhưng đề chỉ yêu cầu xuất ra là tam giác gì chứ không yêu cầu kiểm tra có phải là tam giác hay không?
    -> bạn nên dùng 1 vòng lặp while để kiểm tra người dùng nhập vào có phải là 3 cạnh của tam giác không,nếu không phải thì bắt nhập lại.
    do{//khối lệnh nhập vào 3 cạnh,cụ thể là 3 lệnh printf và scanf đó}
    while((a+b>c)&&(b+c>a)&&(c+a>b))
    4)Phần kiểm tra phải theo thứ tự như thế này mới không sót trường hợp
    if "Tam giác đều" xuất " tam giác đều"
    else if "tam giác cân"
    {
    if "tam giác vuông" xuất "tam giác vuông cân"
    else xuất "tam giác cân"
    }
    else if "tam giác vuông" xuất "tam giác vuông "
    else xuất "tam giác thường".
    Còn gì nữa không nhỉ. Chắc hết rồi. trên đây chỉ là thuật toán,em dựa vào bài mẫu ở trên tự code lại nhé.
    integer thích bài này.
  11. Offline

    trsa

    • Thành Viên Mới

    Số bài viết:
    180
    Đã được thích:
    15
    Điểm thành tích:
    0
    anh bạn cũng có thể gọi là cựu rồi đó hì. nhưng mình xin góp ý 1 số chỗ hì: đầu tiên, ông anh dùng(a*a=b*b+c*c) xét về độ phức tạp of thuật toán thì thuật toán anh bạn dùng lớn hơn độ phức tạp của hàm pow(), nên dùng hàm pow() sẽ tối ưu hơn. mặt khác hàm pow() là 1 hàm cơ bản được hổ trợ trong C nên cần nói cho mấy em nó pít. thứ hai, đk để 3 cạnh tạo thành 1 tam giác là tổng 2 cạnh > 1 cạnh và hiệu 2 cạnh nhỏ hơn 1 cạnh. nên TH bắt lỗi 3 cạnh tạo thành tam giác of ông anh bị thiếu rồi
  12. Offline

    mika0110

    • Thành Viên Mới

    Số bài viết:
    16
    Đã được thích:
    7
    Điểm thành tích:
    0
    1)
    Nếu nói cho em nó biết thì không có ý kiến gì ha.Nhưng nếu nói độ phức tạp của thuật toán thì cho hỏi "trsa" học năm mấy rồi? Đã học qua môn thuật toán của thầy Cẩm hoặc thầy Vũ dạy chưa? Nếu chưa thì hỏi thử hai thầy độ phức tạp của hàm mũ với phép nhân và phép cộng cái nào phức tạp hơn? Chưa kể nếu dùng hàm pow() sẽ phải khai báo thư viện math.h,lại phải tốn thêm bộ nhớ>Vậy cái nào tối ưu hơn.
    2)
    Theo mình nhớ không lầm thì Hình học lớp 07 được học về Quan hệ giữa các cạnh tam giác, và có bất đẳng thức:
    Cái bạn nói chỉ là hệ quả suy là từ định lý.Vậy bạn nói bị thiếu là sai rồi.
    integer thích bài này.
  13. Offline

    integer

    • Tiếu Ngạo Giang Hồ

    • :-?
    Số bài viết:
    1.695
    Đã được thích:
    1.313
    Điểm thành tích:
    900
    mỗi câu lệnh đơn như if() else hay tính toán có độ phức tạp O(1).
    Phép nhân 2 số rất mất thời gian với kích thước số lớn. trong trường hợp này demo với 2 số nhỏ nên chưa cần quan tâm tới.

    File exe bạn dịch ra chạy theo kiểu tuyến tính nên tốn bộ nhớ khi gọi thêm thư viện. Đơn giản được phần nào hay phần đấy. Làm như mika110 là được rồi.
  14. Offline

    trsa

    • Thành Viên Mới

    Số bài viết:
    180
    Đã được thích:
    15
    Điểm thành tích:
    0
    Mình mới năm 3 ngành công nghệ phần mêm của ĐH duytan chứ ko fai ở việt hàn đâu, mình thấy diễn đàn mình hay nên cũng tham gia hết mình thôi(gì liên wan đến C thì mình wa lâu rồi, giờ mình chỉ còn học C trong linux thôi). Độ phức tạp of thuật toán mình học hồi học kỳ 1 năm 2.
    Còn về tam giác thì mình bị nhầm. Sorry nha
  15. Offline

    integer

    • Tiếu Ngạo Giang Hồ

    • :-?
    Số bài viết:
    1.695
    Đã được thích:
    1.313
    Điểm thành tích:
    900
    @trsa:
    Tiếc là các cao thủ đều quy ẩn giang hồ với đồ án cuối năm rồi. Nhiều bạn khác thì cặm cụi code ở nhà chẳng mấy khi lên internet nữa là lên diễn đàn.
    Bạn ở bên Duy tân thì tốt rồi. add nick support ck_sid có gì bên trường hội thảo mình mời qua dự.
    Còn ở đây nên tiếp tục để các bạn bàn về vấn đề chính. không thảo luận ngoài lề làm loãng topic.
    Thân !
    trsa thích bài này.
  16. Offline

    cunbom0705

    • Thành Viên Mới

    Số bài viết:
    2
    Đã được thích:
    0
    Điểm thành tích:
    0
    dạ em ở bên khóa 4 ạ,cho em hỏi làm thé nào để lập trình được game java vậy,thanh các anh chị nhé

    ùhh không có gì đâu nà,em cũng học khóa 4 thôi mai nộp bài rồi nên nhờ các anh chị không mai thầy nạt nà
  17. Offline

    hoekaka

    • Windows 95

    Số bài viết:
    359
    Đã được thích:
    114
    Điểm thành tích:
    90
    Có máy tính và 1 java ide :">

Chia sẻ trang này

Advertising: Linux system admin | nukeviet | nukeviet 4 | Upload ảnh miễn phí