overclockzonefanpage  overclockzoneth  TV  
Results 1 to 18 of 18

Thread: รบกวนคนเป็นภาษา C หน่อยครับ V.2

  1. #1
    OverclockZone Member tonzeero's Avatar
    Join Date
    24 Mar 2007
    Location
    Sriracha

    Default รบกวนคนเป็นภาษา C หน่อยครับ V.2

    โจทย์ที่อาจารย์ให้นะครับ

    menu
    1.input
    2.find
    3.exit

    please choose>> 1 --- ให้เลือกเมนู ถ้าเลือก1ให้รับค่าใส่ลงอาเร
    please input value nember >> 5 ----รับค่าใส่ในอาเร 5 ค่า
    input value 0>> 8

    input value 1>> 3

    input value 2>> 7

    input value 3>> 6

    input value 4>> 7

    ----------------------------------------

    menu
    1.input
    2.find
    3.exit

    please choose>> 2 ----ถ้าเลือก2 ให้ใส่ตัวเลขที่ต้องการหา
    please find value >> 7 ---- ค้นหาตัวเลขว่ามีในอาเรช่องไหนบ้าง

    index = 2 4

    โค้ดที่เขียนไปแล้ว

    #include<stdio.h>
    int main()
    {
    int arr[5],i,a,b,q,z=0;
    for(a=0;a!=3;a){
    printf("\n");
    printf("Menu\n");
    printf("1.Input\n");
    printf("2.Find\n");
    printf("3.Exit\n\n");
    printf("Please Choose>> \n\n");
    scanf("%d",&a);
    if(a==1)
    {for(i=0;i<5;i++){
    printf("Input Value >> ");
    scanf("%d",&arr[i]);
    }
    }
    if(a==2)
    {printf("Please find value >> ");
    scanf("%d",&b);
    printf("Index = ");
    for(z=0;z<5;z++)
    if(arr[z]==b){printf("%d "),arr[z];} **ทำถูกหมดแล้วครับ เหลือการแสดงผลที่บรรทัดนี้มั้งครับที่ผิดพลาด คือมันไม่แสดงเป็นตัวเลขจำนวนเต็ม กลับกลายเป็นเลขฐาน10(มั้ง)ซะงั้น
    printf("\n\n");
    }
    }
    }


    ผมพยายามวนลุปให้มากที่สุดครับ เพื่อโค้ดจะได้สั้นๆเหลือเท่าที่เห็น วานผู้รู้ช่วยบอกหน่อยนะครับว่าแก้ยังไง
    รูป รูป

  2. #2
    OverclockZone Member TaO_OaT's Avatar
    Join Date
    16 Sep 2006
    Location
    แถว ๆ นี้

    Default

    ตรงนั้นมันโชอะไรเหรอครับ โชตำแหน่งใช่หรือป่าว ถ้าใช่ แก้เป็น if(arr[z]==b){printf("%d ",z);}

    ปล. ผมไม่ไหวแล้ว ขอตัวนอนก่อนนะครับ เทียง ๆ เจอกัน แว๊ป
    Last edited by TaO_OaT; 27 Jan 2008 at 05:14:32.

  3. #3
    OverclockZone Member tonzeero's Avatar
    Join Date
    24 Mar 2007
    Location
    Sriracha

    Default

    Quote Originally Posted by TaO_OaT View Post
    ตรงนั้นมันโชอะไรเหรอครับ โชตำแหน่งใช่หรือป่าว ถ้าใช่ แก้เป็น if(arr[z]==b){printf("%d ",z);}
    แล้วก็รันโปรแกรมกี่ครั้งอ่าครับ เหมือนจะต้องเรียกขึ้นมา 2 ครั้งเลย
    เออใช่!! ผมมึนอีกแล้วครับ โจทย์เขาให้หาตำแหน่งนี่หน่า ขอบคุณครับ
    แต่มันก็ยังแสดงผลเป็นเลขฐาน10(มั้ง)เหมือนเดิมครับ
    โปรแกรมรันเรื่อยๆจนกว่าจะเลือก 3.Exit ครับ

  4. #4
    OverclockZone Member tonzeero's Avatar
    Join Date
    24 Mar 2007
    Location
    Sriracha

    Default

    เอ้า.. ถ้ารันครั้งที่ 2 นี่ค่าที่เก็บไว้มันจะหายเหรอครับ งั้นผมควรพิม

    printf("Menu\n");
    printf("1.Input\n");
    printf("2.Find\n");
    printf("3.Exit\n\n");
    printf("Please Choose>> \n\n");

    2รอบ แทนการวนลุปนะครับ ส่วนพวก loop while นั้นผมแทบไม่รุ้เรื่องเลยคับ มันผ่านมานานแล้วๆก็ไม่เข้าเรียนอีกแล้วคับ -*-

  5. #5
    OverclockZone Member cmo's Avatar
    Join Date
    12 Jun 2007
    Location
    Italy

    Default

    เขียนเป็นแต่ C++ อ่ะ

  6. #6
    OverclockZone Member AMDev's Avatar
    Join Date
    19 Mar 2007

    Default

    แบบนี้ใช่ป่าวครับ

    ลองดูตรงลูป for อันล่างครับ

    for(z=0;z<5;z++){<<==ลืมปีกกาเปิด
    if(arr[z]==b){
    printf("%d "),arr[z];
    } **ทำถูกหมดแล้วครับ เหลือการแสดงผลที่บรรทัดนี้มั้งครับที่ผิดพลาด คือมันไม่แสดงเป็นตัวเลขจำนวนเต็ม กลับกลายเป็นเลขฐาน10(มั้ง)ซะงั้น
    printf("\n\n");
    }
    } <<== ใส่ปีกกาปิดอีกอันครับ

    น่าจะเปนแบบนี้
    PHP Code:
    #include<stdio.h>
    int main()
    {
    int a[5],find,menu,i;
        while(
    menu!=3){
        
    printf("\nMenu\n");
        
    printf("1.Input\n");
        
    printf("2.Find\n");
        
    printf("3.Exit\n\n");
        
    printf("Please Choose>> \n\n");
        
    scanf("%d",&menu);
        
    printf("\n");
                if(
    menu==1){
                for(
    0;i<5;i++)
                        {
                        
    printf("Input a[%d] = ",i);
                        
    scanf("%d",&a[i]);
                        }
                        }
                if(
    menu==2){      
                
    printf("Enter value to find = ");
                
    scanf("%d",&find);
                for(
    0;i<5;i++)
                        {
                        if(
    a[i]==find){
                                       
    printf("Index  a[%d] = %d\n",i,find);
                                       }
                                       }
                                       }
                                       }
    system("pause");
    return 
    0;

    รูป รูป
    Last edited by AMDev; 27 Jan 2008 at 12:33:13.

  7. #7
    OverclockZone Member tonzeero's Avatar
    Join Date
    24 Mar 2007
    Location
    Sriracha

    Default

    Quote Originally Posted by AMDev View Post
    แบบนี้ใช่ป่าวครับ

    ลองดูตรงลูป for อันล่างครับ

    for(z=0;z<5;z++){<<==ลืมปีกกาเปิด
    if(arr[z]==b){
    printf("%d "),arr[z];
    } **ทำถูกหมดแล้วครับ เหลือการแสดงผลที่บรรทัดนี้มั้งครับที่ผิดพลาด คือมันไม่แสดงเป็นตัวเลขจำนวนเต็ม กลับกลายเป็นเลขฐาน10(มั้ง)ซะงั้น
    printf("\n\n");
    }
    } <<== ใส่ปีกกาปิดอีกอันครับ

    น่าจะเปนแบบนี้
    PHP Code:
    #include<stdio.h>
    int main()
    {
    int a[5],find,menu,i;
        while(
    menu!=3){
        
    printf("\nMenu\n");
        
    printf("1.Input\n");
        
    printf("2.Find\n");
        
    printf("3.Exit\n\n");
        
    printf("Please Choose>> \n\n");
        
    scanf("%d",&menu);
        
    printf("\n");
                if(
    menu==1){
                for(
    0;i<5;i++)
                        {
                        
    printf("Input a[%d] = ",i);
                        
    scanf("%d",&a[i]);
                        }
                        }
                if(
    menu==2){      
                
    printf("Enter value to find = ");
                
    scanf("%d",&find);
                for(
    0;i<5;i++)
                        {
                        if(
    a[i]==find){
                                       
    printf("Index  a[%d] = %d\n",i,find);
                                       }
                                       }
                                       }
                                       }
    system("pause");
    return 
    0;

    return 0;

    นี่คืออะไรเหรอครับ ช่วยตอบด้วยนะครับ ส่วน Code ที่คุณบอกนั้นถูกแล้วครับ ต้องดัดแปลงนิดหน่อยครับ ขอบคุณมากๆครับ ไว้คงได้รบกวนทุกคนอีกครับ ผมอยู่วิดวะเครื่องกลปี1ครับ คอมก็ได้เดาๆเอานี่แหละครับ

  8. #8
    OverclockZone Member หัวโบราณ's Avatar
    Join Date
    16 Sep 2006
    Location
    ขั้วโลกเหนือ

    Default

    ไว้รีเทรินค่า

  9. #9
    OverclockZone Member
    Join Date
    26 Aug 2007

    Default

    ถ้าประกาศ ฟังก์ชั่น เป็น int ก็ต้องรีเทิร์นค่าครับ


    int main()

  10. #10
    OverclockZone Member tonzeero's Avatar
    Join Date
    24 Mar 2007
    Location
    Sriracha

    Default

    รีเทินค่านี่หมายความว่าไงเหรอคับ รีเทินกลับไปตรงจุดไหนเหรอ ช่วยยกตัวอย่างหน่อยครับ

  11. #11
    OverclockZone Member TaO_OaT's Avatar
    Join Date
    16 Sep 2006
    Location
    แถว ๆ นี้

    Default

    return ค่ากลับไปยังฟั่งชัน ที่เรียกมันมา ครับ ตามที่ code ที่คุณเขียนไว้ ประกาศฟังชั่น ว่า int main() เมื่อรันจบฟังชั่น จะต้อง return ค่ากลับให้มันด้วย ฟังชั่นที่เรียกใช้ จะรับค่าหรือไม่ก็ตาม
    ถ้าไม่อยาก return ให้ประกาศเป็น void main()

    ลองศึกษาดูจากเนื้อหาของการประกาศฟังชั้นดูนะครับ แต่ดูจาก code ที่ท่านเขียน ยังไม่ถึง ถ้าสงสัยจริง ๆ เปิดข้ามไปอ่านก่อนก็ได้ครับ

  12. #12
    OverclockZone Member tonzeero's Avatar
    Join Date
    24 Mar 2007
    Location
    Sriracha

    Default

    เสร็จส่งไปแล้วครับ แต่พอมาดูโจทย์ อ้าวววลืมไป 1 จุด ยังไงก็เสร็จไป 90%แหละครับ นี่คือโค้ดที่ผมเขียนครับ
    ขอบคุณทุกๆคนที่แนะนำและสอนผมครับ ไว้วันหลังจะมาถามใหม่ใน V.3 เอิ้กๆๆ


    #include<stdio.h>
    int main()
    {
    int menu,value[5],a,find;
    while(menu!=3){
    printf("\nmenu\n");
    printf("1.Input\n");
    printf("2.Find\n");
    printf("3.Exit\n");
    printf("please choose>> ");
    scanf("%d",&menu);
    if(menu==1){
    for(a=0;a<5;a++){
    printf("Please input value number %d >>",a+1);
    scanf("%d",&value[a]);
    }
    }
    if(menu==2){
    printf("Find number >> ");
    scanf("%d",&find);
    printf("Index = ");
    for(a=0;a<5;a++){
    if(find==value[a])
    printf("%d ",a);


    }
    printf("\n\n");
    }


    }

    return 0; <--- อันนี้ลองใส่ดู เหงมันก็แสดงผลเหมือนกับตอนไม่ใส่นะครับ - -" งง
    }

  13. #13
    OverclockZone Member tonzeero's Avatar
    Join Date
    24 Mar 2007
    Location
    Sriracha

    Default

    อันนี้รูปครับ
    รูป รูป

  14. #14
    OverclockZone Member TaO_OaT's Avatar
    Join Date
    16 Sep 2006
    Location
    แถว ๆ นี้

    Default

    return 0; <--- อันนี้ลองใส่ดู เหงมันก็แสดงผลเหมือนกับตอนไม่ใส่นะครับ - -" งง
    มันไม่มีผลกับฟังชั่นที่ทำงานอยู่ครับ จะมีผลต่อเหมือนมีฟังชั่นเรียกมัน และต้องการค่าที่ได้จากฟังชั่นนี้ไปประมวลผลครับ
    ตอนนี้ท่านยังใช้ฟังชั่นเดียวอยู่ ยังไม่มีผลมาก เด๋วไปเรื่อย ๆ ก็จะเข้าใจเอง ว่ามันสำคัญยังไง ยังมีอะไรแปลก ๆ รออยู่ข้างหน้าอีกครับ ทั้งประกาศแบบ char *p; int *main(int *p) ส่งค่าไปมาระหว่างฟังชั่น โคตรงง ตอนผมเรียนอยู่ lab ที่มีพวกนี้ผมเกือบจะไม่ทำส่งอาจารย์ ดีที่มีเพื่อนช่วยสอน

  15. #15
    Banned
    Join Date
    30 Jun 2007
    Location
    ลาดกระบัง,สุวรรณภูมิ

    Default

    มึนเหมือนกัน....

  16. #16
    OverclockZone Member AMDev's Avatar
    Join Date
    19 Mar 2007

    Default

    return 0;
    จะไม่ผลต่อฟังก์ชั่นครับ เพราะว่ามันรีเทินค่า 0 ครับ
    ถ้าเรียนถึง เรื่อง ฟังก์ชั่น จะเข้าใจครับ
    เช่น int function(){
    stm;
    --
    --
    --
    return int;
    }

    ฟังชันนี้จะรีเทิน int(จำนวนเต็ม) ไปให้กับผู้เรียกใช้ครับ

  17. #17
    OverclockZone Member momaymint's Avatar
    Join Date
    21 Sep 2006
    Location
    อยู่กับ บิว เกต์ต

    Default

    อยากเป็ฯ มั้งนะคัรบ แต่ ตอนเรียน ไม่รู้เรื่องเลย 5555+

  18. #18
    OverclockZone Member AMDev's Avatar
    Join Date
    19 Mar 2007

    Default

    ตอนเรียนก็ไม่ค่อยรู้่เรื่องครับ
    แต่เรียนจบ แล้วเรียนต่ออีกตัวมันกลับรู้เรื่องสะงั้น ^^
    Datastruct สนุกมากมายครับ


Bookmarks

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •