overclockzonefanpage  overclockzoneth  TV  
Page 1 of 3 123 LastLast
Results 1 to 20 of 50

Thread: ขอความช่วยเหลือ เขียนโปรแกรมภาษา ซี หน่อยครับ

  1. #1
    OverclockZone Member VesPer-KiD's Avatar
    Join Date
    3 May 2008
    Location
    LampanG & Chiang Mai

    Default ขอความช่วยเหลือ เขียนโปรแกรมภาษา ซี หน่อยครับ

    โจทย์มีอยู่ว่าให้ใช้ การจัดการไพล์ในการสร้างโปรแกรมขึ้นมา
    และเป็นโปรแกรมตัดเกรด ต้องทำเป็นเมนูด้วย
    1.เขียน
    2.อ่าน
    3.เพิ่ม
    4.แสดง
    5.ออก
    และต้องสามารถเปิดเป็น txt ได้ด้วยตอนนี้ติด รันได้แล้วแต่ ไม่มีอะไรขึ้นมาเลยครับ

    ใครพอมีบอร์ด แนวเรื่องเขียนโปรแกรม แนะนำทีครับ

    ==========================================================

    #include<stdio.h>
    #include<conio.h>
    #include<stdlib.h>
    void main()
    {
    char name[30][20],sub[10][20],grade[30][10],ch;
    int score,x,n,i,j;
    float gpa[30],credit[10],point,Ppoint,tcredit;

    FILE *fp;
    if((fp = fopen("C:\\CC.txt", "w"))==NULL) /*สร้างไพล์ชื่อ CC เป็น txt ออกมา*/
    {
    printf("Cannot open file\n");
    exit(0);

    {
    clrscr();
    printf("====Menu====\n"); /*สร้างเมนู*/
    printf("1.Write Data \n");
    printf("2.Read Data \n");
    printf("3.Append Data \n");
    printf("4.Show Data \n");
    printf("5.Exit Program\n");
    printf("Enter choice : ");
    ch=getche();
    // 1
    if (ch=='1')
    printf("Enter No. of Subject: "); /* เข้าสู่ เมนหลักของโปรแกรมตัดเกรด*/
    scanf("%d",&x);
    for(i=0;i<x;i++)
    {
    printf("\n");
    printf("Enter name Subject %d: ",i+1);
    scanf("%s",&sub[i]);
    printf("Enter the Credit of Sub.: ",i+1);
    scanf("%f",&credit[i]);
    }
    clrscr(); printf("Enter No. studen in class: ");
    scanf("%d",&n);
    for(i=0;i<n;i++)
    {
    printf("Enter name student %d: ",i+1);
    scanf("%s",&name[i]);
    }
    clrscr();
    tcredit=0; Ppoint=0;
    for(i=0;i<n;i++)
    { clrscr();
    printf("%s\n",name[i]);
    printf("==================================================================\n");
    printf(" Number Subject name Cradit Score Grade point\n");
    printf("==================================================================\n");
    for( j=0; j<x; j++ )
    {
    gotoxy(6,5+j);
    printf("%d",j+1);
    gotoxy(15,5+j);
    printf("%s",sub[j]);
    gotoxy(32,5+j);
    printf("%.2f",credit[j]);
    gotoxy(42,5+j);
    scanf("%d",&score);
    gotoxy(53,5+j);
    if(score<50)
    {
    printf("F");
    gotoxy(60,5+j);
    point= 0*credit[j];
    printf("%.2f",point);
    }
    if((score>=50)&&(score<60))
    {
    printf("D");
    gotoxy(60,5+j);
    point= 1*credit[j];
    printf("%.2f",point);
    }
    if((score>=60)&&(score<=70))
    {
    printf("C");
    gotoxy(60,5+j);
    point= 2*credit[j];
    printf("%.2f",point);
    }
    if((score>=70)&&(score<80))
    {
    printf("B");
    gotoxy(60,5+j);
    point= 3*credit[j];
    printf("%.2f",point);
    }
    if((score>=80)&&(score<=100))
    {
    printf("A");
    gotoxy(60,5+j);
    point= 4*credit[j];
    printf("%.2f",point);
    }
    Ppoint=point+Ppoint;
    tcredit=tcredit+credit[j];
    }
    printf("\n");
    printf("==================================================================\n");
    gpa[i]=Ppoint/tcredit;
    gotoxy(35,j+6);
    printf("GPA = %.2f\n",gpa[i]);
    printf("==================================================================\n") ;
    printf("press any key");
    getch();
    }
    clrscr();
    for(i=0;i<n;i++)
    { printf(" %d. name. %s ",i+1,name[i]);
    gotoxy(25,i+2); printf(" GPA=%.2f\n",gpa[i]);
    }
    printf("//////////////////////////////////////////////////////////////////////////");
    getch();
    }


    fclose(fp);
    }


    getch();
    }

    ====================================================
    Last edited by VesPer-KiD; 16 Feb 2009 at 16:15:58.

  2. #2
    OverclockZone Member pigkapu1's Avatar
    Join Date
    2 Oct 2006
    Location
    เพชรบุรี

    Default

    ภาษาcเป็นภาษาที่ยากที่สุดเท่าที่ผมเรียนมา อ่านหนังสือไปได้2หน้าพอเลย

    รอท่านต่อไปแล้วกัน

  3. #3
    OverclockZone Member VesPer-KiD's Avatar
    Join Date
    3 May 2008
    Location
    LampanG & Chiang Mai

    Default

    รอท่านต่อไปๆ เหอะๆ

  4. #4
    OverclockZone Member
    Join Date
    18 Dec 2008

    Default

    ผมคาดว่าคุณคงติดตรงปัญหาการโหมดการเปิดไฟล์ขึ้นมาครับซึ่งมันจะมี
    สามโหมดใน C (Read,Write,Append) หกโหมดใน C++ (เหมือน C แต่จะมีแบบ Buffer กับ Unbuffer)
    ลองอ่านตามลิงค์ที่ผมแปะก่อนแล้วกันถ้างงตรงไหนถามเป็นจุดๆถ้าตอบได้ผมจะช่วยตอบให้ครับ
    เพราะที่ผมเรียน C นี่เกริ่นแปปเดียวเขาก็ขึ้น C++ และการเขียนแนว OO แล้วครับ
    อีกอย่างจบมาปีนึงแล้วเรียนโทบริหารอยู่ครับลืมไปพอควรเลยครับ ^^

    Link
    http://www.samsenwit.ac.th/index_fil...File/C/C_6.ppt

    http://msdn.microsoft.com/en-us/libr...4x(VS.80).aspx

  5. #5
    OverclockZone Member VesPer-KiD's Avatar
    Join Date
    3 May 2008
    Location
    LampanG & Chiang Mai

    Default

    Quote Originally Posted by kadaeko View Post
    ผมคาดว่าคุณคงติดตรงปัญหาการโหมดการเปิดไฟล์ขึ้นมาครับซึ่งมันจะมี
    สามโหมดใน C (Read,Write,Append) หกโหมดใน C++ (เหมือน C แต่จะมีแบบ Buffer กับ Unbuffer)
    ลองอ่านตามลิงค์ที่ผมแปะก่อนแล้วกันถ้างงตรงไหนถามเป็นจุดๆถ้าตอบได้ผมจะช่วยตอบให้ครับ
    เพราะที่ผมเรียน C นี่เกริ่นแปปเดียวเขาก็ขึ้น C++ และการเขียนแนว OO แล้วครับ
    อีกอย่างจบมาปีนึงแล้วเรียนโทบริหารอยู่ครับลืมไปพอควรเลยครับ ^^

    Link
    http://www.samsenwit.ac.th/index_fil...File/C/C_6.ppt

    http://msdn.microsoft.com/en-us/libr...4x(VS.80).aspx
    พวกโครงสร้างของโปรแกรมพอเข้าใจครับ
    โปรแกมที่อยู่ข้างบน พอเริ่มรัน จะสร้างไฟล์ txt ขึ้นมา(หมายความว่าติดต่อไฟล์ได้แล้ว และเขียนไฟล์ไม่ได้

    ลองใช้ fprinf มันไม่ได้ เออร์เรอร์

    จากนั้นผมก็ใส่ส่วนที่จะให้ข้อมูลไปอยู่ใน txt แต่รันแล้วไม่มีอะไรขึ้นเลยนอกจากไฟล์

  6. #6
    OverclockZone Member VesPer-KiD's Avatar
    Join Date
    3 May 2008
    Location
    LampanG & Chiang Mai

    Default

    ตอนนี้แก้ได้แล้วครับ

    แบบว่าต้องการที่โชว์ในข้อที่หนึ่งเข้าไปอยู่ใน txt ทั้งหมดจะทำไงดีครับ
    และหลังจาก ทำหัวออกหนึ่งจ้้องการให้ออกมาที่เมนูใหม่ทำใช้คำสั่งอะไรครับ

    ==========================================
    #include<stdio.h>
    #include<conio.h>
    #include<stdlib.h>
    void main()
    {
    int score,credit,i,n,tcredit;
    char grade,subject[20],ch;
    float value,total,GPA;

    FILE *fp;
    if((fp = fopen("C:\\AXC.txt", "w"))==NULL)
    {
    printf("Cannot open file\n");
    exit(0);
    }
    else{
    fputs("====Menu====\n",fp);
    fputs("1.Write Data \n",fp);
    fputs("2.Read Data \n",fp);
    fputs("3.Append Data \n",fp);
    fputs("4.Show Data \n",fp);
    fputs("5.Exit Program\n",fp);
    fputs("Enter choice : \n",fp);
    fputs("................\n",fp);

    // show
    printf("====Menu====\n",fp);
    printf("1.Write Data \n",fp);
    printf("2.Read Data \n",fp);
    printf("3.Append Data \n",fp);
    printf("4.Show Data \n",fp);
    printf("5.Exit Program\n",fp);
    printf("Enter choice : \n",fp);
    ch=getche();
    }

    // 1 <<<<<<<<<<<<<<ข้อนี้ทั้งหมดให้มันเข้าไปอยู่ใน Txt ด้วยทำไงครับ
    if(ch=='1')
    {
    fputs("=1=",fp);
    clrscr();
    total,tcredit=0;
    printf("Enter Your Subject Number ==> ");
    scanf("%d",&n);
    printf("\n");
    printf("\n");
    printf("----------------------------------------------------\n");
    printf("+ No Subject credit score grade +\n");
    printf("----------------------------------------------------\n");

    for(i=1;i<=n;i++)
    {
    gotoxy(5,i+6);printf("%d",i);
    gotoxy(14,i+6);scanf("%s",&subject);
    gotoxy(27,i+6);scanf("%d",&credit);
    gotoxy(37,i+6);scanf("%d",&score);
    gotoxy(46,i+3);scanf("%c",&grade);



    if(score<50)
    {gotoxy(46,i+6);printf("%c",'F');
    value=0;}

    if((score>=50)&&(score<55))
    {gotoxy(46,i+6);printf("%c",'D');
    value=1;}

    if((score>=55)&&(score<60))
    {gotoxy(46,i+6);printf("D+");
    value=1.5;}

    if((score>=60)&&(score<65))
    {gotoxy(46,i+6);printf("%c",'C');
    value=2;}

    if((score>=65)&&(score<70))
    {gotoxy(46,i+6);printf("C+");
    value=2.5;}

    if((score>=70)&&(score<75))
    {gotoxy(46,i+6);printf("%c",'B');
    value=3;}

    if((score>=75)&&(score<80))
    {gotoxy(46,i+6);printf("B+");
    value=3.5;}

    if(score>=80)
    {gotoxy(46,i+6);printf("%c",'A');
    value=4;}

    total = total+(value*credit);
    tcredit = tcredit + credit;
    }

    printf("\n");
    printf("\n");
    printf("\n");
    printf("----------------------------------------------------\n");
    GPA=total/tcredit;
    gotoxy(40,i+8);
    printf("GPA=%.2f\n",GPA);
    printf("----------------------------------------------------\n");
    printf("\n");
    }


    // =2=
    if(ch=='2')
    if((fp = fopen("C:\\AXC.txt", "r"))==NULL)
    {
    printf("Cannot open file\n");
    exit(0);
    }



    // =3=
    if(ch=='3')
    {clrscr();
    if((fp = fopen("C:\\AXC.txt", "a"))==NULL)
    {
    printf("Cannot open file\n");
    exit(0);
    }
    // Data add
    }



    // =4=
    if(ch=='4')

    clrscr();
    if((fp = fopen("C:\\AXC.txt", "r"))==NULL)
    {
    printf("Cannot open file\n");
    exit(0);
    }




    // =5=
    if(ch=='5')
    {clrscr();
    printf("Good Bye");
    }



    fclose(fp);
    getch();
    }
    ==========================================
    Last edited by VesPer-KiD; 16 Feb 2009 at 21:10:59.

  7. #7
    OverclockZone Member
    Join Date
    18 Dec 2008

    Default

    Quote Originally Posted by VesPer-KiD View Post
    ตอนนี้แก้ได้แล้วครับ

    แบบว่าต้องการที่โชว์ในข้อที่หนึ่งเข้าไปอยู่ใน txt ทั้งหมดจะทำไงดีครับ
    และหลังจาก ทำหัวออกหนึ่งจ้้องการให้ออกมาที่เมนูใหม่ทำใช้คำสั่งอะไรครับ

    ==========================================
    #include<stdio.h>
    #include<conio.h>
    #include<stdlib.h>
    void main()
    {
    int score,credit,i,n,tcredit;
    char grade,subject[20],ch;
    float value,total,GPA;

    FILE *fp;
    if((fp = fopen("C:\\AXC.txt", "w"))==NULL)
    {
    printf("Cannot open file\n");
    exit(0);
    }
    else{
    fputs("====Menu====\n",fp);
    fputs("1.Write Data \n",fp);
    fputs("2.Read Data \n",fp);
    fputs("3.Append Data \n",fp);
    fputs("4.Show Data \n",fp);
    fputs("5.Exit Program\n",fp);
    fputs("Enter choice : \n",fp);
    fputs("................\n",fp);

    // show
    printf("====Menu====\n",fp);
    printf("1.Write Data \n",fp);
    printf("2.Read Data \n",fp);
    printf("3.Append Data \n",fp);
    printf("4.Show Data \n",fp);
    printf("5.Exit Program\n",fp);
    printf("Enter choice : \n",fp);
    ch=getche();
    }

    // 1 <<<<<<<<<<<<<<ข้อนี้ทั้งหมดให้มันเข้าไปอยู่ใน Txt ด้วยทำไงครับ
    if(ch=='1')
    {
    fputs("=1=",fp);
    clrscr();
    total,tcredit=0;
    printf("Enter Your Subject Number ==> ");
    scanf("%d",&n);
    printf("\n");
    printf("\n");
    printf("----------------------------------------------------\n");
    printf("+ No Subject credit score grade +\n");
    printf("----------------------------------------------------\n");

    for(i=1;i<=n;i++)
    {
    gotoxy(5,i+6);printf("%d",i);
    gotoxy(14,i+6);scanf("%s",&subject);
    gotoxy(27,i+6);scanf("%d",&credit);
    gotoxy(37,i+6);scanf("%d",&score);
    gotoxy(46,i+3);scanf("%c",&grade);



    if(score<50)
    {gotoxy(46,i+6);printf("%c",'F');
    value=0;}

    if((score>=50)&&(score<55))
    {gotoxy(46,i+6);printf("%c",'D');
    value=1;}

    if((score>=55)&&(score<60))
    {gotoxy(46,i+6);printf("D+");
    value=1.5;}

    if((score>=60)&&(score<65))
    {gotoxy(46,i+6);printf("%c",'C');
    value=2;}

    if((score>=65)&&(score<70))
    {gotoxy(46,i+6);printf("C+");
    value=2.5;}

    if((score>=70)&&(score<75))
    {gotoxy(46,i+6);printf("%c",'B');
    value=3;}

    if((score>=75)&&(score<80))
    {gotoxy(46,i+6);printf("B+");
    value=3.5;}

    if(score>=80)
    {gotoxy(46,i+6);printf("%c",'A');
    value=4;}

    total = total+(value*credit);
    tcredit = tcredit + credit;
    }

    printf("\n");
    printf("\n");
    printf("\n");
    printf("----------------------------------------------------\n");
    GPA=total/tcredit;
    gotoxy(40,i+8);
    printf("GPA=%.2f\n",GPA);
    printf("----------------------------------------------------\n");
    printf("\n");
    }


    // =2=
    if(ch=='2')
    if((fp = fopen("C:\\AXC.txt", "r"))==NULL)
    {
    printf("Cannot open file\n");
    exit(0);
    }



    // =3=
    if(ch=='3')
    {clrscr();
    if((fp = fopen("C:\\AXC.txt", "a"))==NULL)
    {
    printf("Cannot open file\n");
    exit(0);
    }
    // Data add
    }



    // =4=
    if(ch=='4')

    clrscr();
    if((fp = fopen("C:\\AXC.txt", "r"))==NULL)
    {
    printf("Cannot open file\n");
    exit(0);
    }




    // =5=
    if(ch=='5')
    {clrscr();
    printf("Good Bye");
    }



    fclose(fp);
    getch();
    }
    ==========================================
    Function ที่ใช้อ่านไฟล์ก็มี FGETS() กับ FREAD() ครับลองอ่านรายละเอียดตามลิงค์แล้วลอง
    เลือกใช้เอาครับ ส่วนถ้าต้องการให้กลับมาหน้าเมนูใหม่ให้เอาลูป While ครอบครับ
    ซึ่งอาจจะทำง่ายๆโดยย้ายการสร้างตัวแปร บรรทัดนี้ -> ch=getche();
    ไปไว้บรรทัดก่อนที่จะเปิดไฟล์จากนั้น Assign ค่าให้เป็นอะไรก็ได้ที่จะไม่เด้งเมื่อออก
    เช่น
    ch = 'a';
    while(ch != '5')
    {
    }

  8. #8
    OverclockZone Member VesPer-KiD's Avatar
    Join Date
    3 May 2008
    Location
    LampanG & Chiang Mai

    Default

    ==========================================
    #include<stdio.h>
    #include<conio.h>
    #include<stdlib.h>
    void main()
    {
    int score,credit,i,n,tcredit;
    char grade,subject[20],ch;
    float value,total,GPA;

    FILE *fp;
    if((fp = fopen("C:\\AXC.txt", "w"))==NULL)
    {
    printf("Cannot open file\n");
    exit(0);

    }
    else{
    fputs("====Menu====\n",fp);
    fputs("1.Write Data \n",fp);
    fputs("2.Read Data \n",fp);
    fputs("3.Append Data \n",fp);
    fputs("4.Show Data \n",fp);
    fputs("5.Exit Program\n",fp);
    fputs("Enter choice : \n",fp);
    fputs("................\n",fp);

    // show
    printf("====Menu====\n",fp);
    printf("1.Write Data \n",fp);
    printf("2.Read Data \n",fp);
    printf("3.Append Data \n",fp);
    printf("4.Show Data \n",fp);
    printf("5.Exit Program\n",fp);
    printf("Enter choice : \n",fp);
    ch=getche();
    }

    // 1 <<<<<<<<<<<<<<ข้อนี้ทั้งหมดให้ มันเข้าไปอยู่ใน Txt ด้วยทำไงครับ
    if(ch=='1')
    {
    fputs("=1=",fp);
    clrscr();
    total,tcredit=0;
    printf("Enter Your Subject Number ==> ");
    scanf("%d",&n);
    printf("\n");
    printf("\n");
    printf("----------------------------------------------------\n");
    printf("+ No Subject credit score grade +\n");
    printf("----------------------------------------------------\n");

    for(i=1;i<=n;i++)
    {
    gotoxy(5,i+6);printf("%d",i);
    gotoxy(14,i+6);scanf("%s",&subject);
    gotoxy(27,i+6);scanf("%d",&credit);
    gotoxy(37,i+6);scanf("%d",&score);
    gotoxy(46,i+3);scanf("%c",&grade);



    if(score<50)
    {gotoxy(46,i+6);printf("%c",'F');
    value=0;}

    if((score>=50)&&(score<55))
    {gotoxy(46,i+6);printf("%c",'D');
    value=1;}

    if((score>=55)&&(score<60))
    {gotoxy(46,i+6);printf("D+");
    value=1.5;}

    if((score>=60)&&(score<65))
    {gotoxy(46,i+6);printf("%c",'C');
    value=2;}

    if((score>=65)&&(score<70))
    {gotoxy(46,i+6);printf("C+");
    value=2.5;}

    if((score>=70)&&(score<75))
    {gotoxy(46,i+6);printf("%c",'B');
    value=3;}

    if((score>=75)&&(score<80))
    {gotoxy(46,i+6);printf("B+");
    value=3.5;}

    if(score>=80)
    {gotoxy(46,i+6);printf("%c",'A');
    value=4;}

    total = total+(value*credit);
    tcredit = tcredit + credit;
    }

    printf("\n");
    printf("\n");
    printf("\n");
    printf("----------------------------------------------------\n");
    GPA=total/tcredit;
    gotoxy(40,i+8);
    printf("GPA=%.2f\n",GPA);
    printf("----------------------------------------------------\n");
    printf("\n");
    }


    // =2=
    if(ch=='2')
    if((fp = fopen("C:\\AXC.txt", "r"))==NULL)
    {
    printf("Cannot open file\n");
    exit(0);
    }



    // =3=
    if(ch=='3')
    {clrscr();
    if((fp = fopen("C:\\AXC.txt", "a"))==NULL)
    {
    printf("Cannot open file\n");
    exit(0);
    }
    // Data add
    }



    // =4=
    if(ch=='4')

    clrscr();
    if((fp = fopen("C:\\AXC.txt", "r"))==NULL)
    {
    printf("Cannot open file\n");
    exit(0);
    }




    // =5=
    if(ch=='5')
    {clrscr();
    printf("Good Bye");
    }



    fclose(fp);
    getch();
    }
    ==========================================

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

  9. #9
    OverclockZone Member VesPer-KiD's Avatar
    Join Date
    3 May 2008
    Location
    LampanG & Chiang Mai

    Default

    แก้ส่วนที่ผิดให้ทีครับ

    http://www.pantip.com/tech/developer...DM2718918.html

  10. #10
    OverclockZone Member
    Join Date
    18 Dec 2008

    Default

    Quote Originally Posted by VesPer-KiD View Post
    ==========================================
    #include<stdio.h>
    #include<conio.h>
    #include<stdlib.h>
    void main()
    {
    int score,credit,i,n,tcredit;
    char grade,subject[20],ch;
    float value,total,GPA;

    FILE *fp;
    if((fp = fopen("C:\\AXC.txt", "w"))==NULL)
    {
    printf("Cannot open file\n");
    exit(0);

    }
    else{
    fputs("====Menu====\n",fp);
    fputs("1.Write Data \n",fp);
    fputs("2.Read Data \n",fp);
    fputs("3.Append Data \n",fp);
    fputs("4.Show Data \n",fp);
    fputs("5.Exit Program\n",fp);
    fputs("Enter choice : \n",fp);
    fputs("................\n",fp);

    // show
    printf("====Menu====\n",fp);
    printf("1.Write Data \n",fp);
    printf("2.Read Data \n",fp);
    printf("3.Append Data \n",fp);
    printf("4.Show Data \n",fp);
    printf("5.Exit Program\n",fp);
    printf("Enter choice : \n",fp);
    ch=getche();
    }

    // 1 <<<<<<<<<<<<<<ข้อนี้ทั้งหมดให้ มันเข้าไปอยู่ใน Txt ด้วยทำไงครับ
    if(ch=='1')
    {
    fputs("=1=",fp);
    clrscr();
    total,tcredit=0;
    printf("Enter Your Subject Number ==> ");
    scanf("%d",&n);
    printf("\n");
    printf("\n");
    printf("----------------------------------------------------\n");
    printf("+ No Subject credit score grade +\n");
    printf("----------------------------------------------------\n");

    for(i=1;i<=n;i++)
    {
    gotoxy(5,i+6);printf("%d",i);
    gotoxy(14,i+6);scanf("%s",&subject);
    gotoxy(27,i+6);scanf("%d",&credit);
    gotoxy(37,i+6);scanf("%d",&score);
    gotoxy(46,i+3);scanf("%c",&grade);



    if(score<50)
    {gotoxy(46,i+6);printf("%c",'F');
    value=0;}

    if((score>=50)&&(score<55))
    {gotoxy(46,i+6);printf("%c",'D');
    value=1;}

    if((score>=55)&&(score<60))
    {gotoxy(46,i+6);printf("D+");
    value=1.5;}

    if((score>=60)&&(score<65))
    {gotoxy(46,i+6);printf("%c",'C');
    value=2;}

    if((score>=65)&&(score<70))
    {gotoxy(46,i+6);printf("C+");
    value=2.5;}

    if((score>=70)&&(score<75))
    {gotoxy(46,i+6);printf("%c",'B');
    value=3;}

    if((score>=75)&&(score<80))
    {gotoxy(46,i+6);printf("B+");
    value=3.5;}

    if(score>=80)
    {gotoxy(46,i+6);printf("%c",'A');
    value=4;}

    total = total+(value*credit);
    tcredit = tcredit + credit;
    }

    printf("\n");
    printf("\n");
    printf("\n");
    printf("----------------------------------------------------\n");
    GPA=total/tcredit;
    gotoxy(40,i+8);
    printf("GPA=%.2f\n",GPA);
    printf("----------------------------------------------------\n");
    printf("\n");
    }


    // =2=
    if(ch=='2')
    if((fp = fopen("C:\\AXC.txt", "r"))==NULL)
    {
    printf("Cannot open file\n");
    exit(0);
    }



    // =3=
    if(ch=='3')
    {clrscr();
    if((fp = fopen("C:\\AXC.txt", "a"))==NULL)
    {
    printf("Cannot open file\n");
    exit(0);
    }
    // Data add
    }



    // =4=
    if(ch=='4')

    clrscr();
    if((fp = fopen("C:\\AXC.txt", "r"))==NULL)
    {
    printf("Cannot open file\n");
    exit(0);
    }




    // =5=
    if(ch=='5')
    {clrscr();
    printf("Good Bye");
    }



    fclose(fp);
    getch();
    }
    ==========================================

    รบกวนดูตรงสีแดงหน่อยครับ ส่วนนี้เปิดรัยปุ๊บมันจะสร้าง ไฟล์โน็ตแพชมาใช่มั้ยครับ
    แต่พอ รันอีกทีหรือ กลับมาเมนู ข้อมูลมันจะหายไป
    เป็นเพราะโหมดที่ใช้เปิดไฟล์เป็น Write mode ครับซึ่งโหมดนี้จะเป็นการสร้างไฟล์ใหม่ซึ่งถ้ามีของเก่ามันจะ
    ลบทิ้ง ดังนั้นควรเขียนดักไว้ครับโดยให้เปิดด้วยโหมด append (a) หรือโหมด "r+" (อันใดอันหนึ่ง)ก่อนครับถ้าเกิดการ return error
    ฒาก็ให้มันเปิดแบบสร้างใหม่ครับซึ่งใช้ IF ดักก็ได้ครับโดยรายละเอียดโหมดการเปิดไฟล์ก็ตามนี้ครับ
    "r"

    Opens for reading. If the file does not exist or cannot be found, the fopen call fails.

    "w"

    Opens an empty file for writing. If the given file exists, its contents are destroyed.

    "a"

    Opens for writing at the end of the file (appending) without removing the EOF marker before writing new data to the file; creates the file first if it doesn't exist.

    "r+"

    Opens for both reading and writing. (The file must exist.)

    "w+"

    Opens an empty file for both reading and writing. If the given file exists, its contents are destroyed.

    "a+"

    Opens for reading and appending; the appending operation includes the removal of the EOF marker before new data is written to the file and the EOF marker is restored after writing is complete; creates the file first if it doesn't exist.


    จะเห็นได้ว่าที่ผมเน้นตัวแดงไว้น่ะครับเป็นโหมดที่คุณใช้อยู่ครับ
    PS.
    ถ้าภาษอังกฤษแข็งนิดก็ไป search อ่านในเวบ MSDN.com ครับแต่ถ้าไม่แข็งก็ไม่เป็นไรผมยินดีที่
    จะช่วยเสมอครับ ^^
    Last edited by kadaeko; 17 Feb 2009 at 00:28:14.

  11. #11
    OverclockZone Member VesPer-KiD's Avatar
    Join Date
    3 May 2008
    Location
    LampanG & Chiang Mai

    Default

    ให้เขียน

    if((fp = fopen("C:\\AXC.txt", "a"))==NULL)

    if((fp = fopen("C:\\AXC.txt", "w"))==NULL)

    ไปสองอันใช่มั้ยครับ

  12. #12
    OverclockZone Member
    Join Date
    18 Dec 2008

    Default

    เอาพอดีวันนี้ว่างเลยมีเวลามานั่งแกะโค้ดคุณครับ
    OK เอางี้ครับผมยังไม่เคลียร์โจทย์คุณนิดหน่อยครับว่าต้องการให้
    1.เขียน
    2.อ่าน
    3.เพิ่ม
    4.แสดง
    5.ออก
    ในส่วนของเขียนนี้อาจาย์คุณมีไฟล์คะแนนให้หรือเปล่าครับถ้าไม่มีต้องกรอกคะแนนเองซึ่งจากที่ผมอ่าโค้ดคุณที่เขียนในเมนูที่ 1 มันเหมือนการอ่านไฟล์คะแนนแล้วมาตัดเกรด จากนั้นค่อยนำผลไปเขียนในไฟล์ใหม่ ผมเข้าใจถูกไหมครับ ถ้าเป็เช่นนี้แล้วคุณจะเปิดไฟล์แบบ w ไม่ได้ต้องเปิดเพื่ออ่านแล้วก็เปิดไฟล์แบบ w อีกไฟล์เพื่อเขียนครับ
    แต่ถ้าโจทย์ต้องการแค่กรอกตัวเลขเขียนลงไฟล์นั้นผมว่าโค้ดมันมีจุดที่ไม่ต้องการเยอะอยู่ครับซึ้งเดี๋ยว
    คุณช่วยเคลียร์โจทย์ให้ผมเดี๋ยวผมจะช่วยแก้ให้ครับ

  13. #13
    OverclockZone Member VesPer-KiD's Avatar
    Join Date
    3 May 2008
    Location
    LampanG & Chiang Mai

    Default

    ครับ ตอนนนี้แก้เรื่องโปรแกรมได้แล้วครับ แต่มีปัญหาเรื่องไพล์ในโน๊ตแพชมัน ออกมาติดกันครับ
    ใช้ gotoxy ไม่ได้ครับ แก้ให้ทีนะครับ ซ๊อตโค็ดจะส่งPM ไปให้นะครับ


  14. #14
    OverclockZone Member VesPer-KiD's Avatar
    Join Date
    3 May 2008
    Location
    LampanG & Chiang Mai

    Default

    Ex.
    =================================================
    clrscr();
    for(i=1;i<=n;i++)
    { clrscr();
    printf("Enter name student : ");
    scanf("%s",name); fprintf(st,"%s\n",name);
    printf ("Enter Number Of Subject Name =");
    scanf ("%d",&b);
    fprintf (st,"*************************************************************************************************************\n");
    printf ("*************************************************************************************************************\n");
    fprintf (st,"No. Subject_Name Cradit Score Grade\n");
    printf ("No. Subject_Name Cradit Score Grade\n");
    fprintf (st,"*************************************************************************************************************\n");
    printf ("*************************************************************************************************************\n");
    total=0;

    for (a=1;a<=b;a++)
    {

    gotoxy (1,5+a);
    fprintf (st,"%d",a);
    printf("%d",a);

    gotoxy (9,5+a);
    scanf("%s",str);
    fprintf(st,"%s",str);

    gotoxy (26,5+a);
    scanf("%f",&cradit);
    fprintf(st,"%.2f",cradit);

    gotoxy (37,5+a);
    scanf("%d",&score);
    fprintf(st,"%d",score);
    gotoxy (47,5+a);

    ===============================================

  15. #15
    OverclockZone Member
    Join Date
    18 Dec 2008

    Default

    อืมลองจากที่ลองรันแล้วน่ะครับคือตอนนี้ผมไม่อยากรื้อโครงสร้างโปรแกรมที่คุณเขียนมาใหม่น่ะครับ
    กลัวเสียเวลาผมจะบอกวิธีแก้แบบเฉพาะหน้าไปก่อนนะครับคือ
    1 หน่วยกิจมีโอกาสเป็นทศยิมได้หรือไม่(ปกติผมก็เห็นแค่ 1,2,3 นะ ไม่มี 1.5)ถ้าไม่ก็ทำข้อต่อไป
    ได้เลยครับ
    2สร้าง array of char 2มิติ มาครับ
    3จับค่าที่รับมายัดแต่ละแถวเข้าไปดังนี้ครับ
    No.<-ค่านี้เจนขึ้นมาเองจับยัดที่ column แรกเลย
    Subject_Name<-รับเข้ามาจับยัดตั้งแต่ column 9 เป็นต้นไป
    Cradit<-รับเข้ามาจับยัดตั้งแต่ column 26 เป็นต้นไป
    Score<-รับเข้ามาจับยัดตั้งแต่ column 37 เป็นต้นไป
    Grade<-รับเข้ามาจับยัดตั้งแต่ column 47 เป็นต้นไป
    ส่วนช่องที่เหลือจับยัดอักขระว่าง(" ")ไปครับแล้วพูดง่ายๆคือรันลูปสุดแถวเช่น
    แถวแรกจาก input เดิม 1Eng365C+ ดาต้าใน array จะเป็น
    '1'' '' '' '' '' '' '' ''E''n''g'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''3'' '' '' '' '' '' '' '' '' '' ''6''5'' '' '' '' '' '' '' '' ''C''+'
    จากนั้นรันลูปเขียนลงไฟล์

    PS.
    วิธีนี้ถึกนิดนึงแต่ไม่ต้องรื้อโครงสร้างโปรแกรมใหม่ครับซึ่งมันมีวิธีที่
    ง่ายกว่านี้แต่ต้องรื้อเขียนใหม่เยอะเลยครับ
    ผิดพลาดประการใดขออภัยครับ
    Last edited by kadaeko; 17 Feb 2009 at 22:56:04.

  16. #16
    OverclockZone Member VesPer-KiD's Avatar
    Join Date
    3 May 2008
    Location
    LampanG & Chiang Mai

    Default

    ขอบคุณมากๆครับ

    ไม่รู้ว่าจะรบกวนหรือเปล่าครับ

    ให้ท่านลองเขียน array 2D ให้หน่อยครับ เฉพาะส่วนที่ต้องออกมาให้ตรงจุดกัน
    Last edited by VesPer-KiD; 18 Feb 2009 at 09:55:04.

  17. #17
    OverclockZone Member VesPer-KiD's Avatar
    Join Date
    3 May 2008
    Location
    LampanG & Chiang Mai

    Default

    uppp

    ===============================
    { clrscr();
    printf("Enter name student : ");
    scanf("%s",name); fprintf(st,"%s\n",name);
    printf ("Enter Number Of Subject Name =");
    scanf ("%d",&b);
    clrscr();
    fprintf (st,"*************************************************************************************************************\n");
    printf ("*************************************************************************************************************\n");
    fprintf (st,"No. Subject_Name Cradit Score Grade\n");
    printf ("No. Subject_Name Cradit Score Grade\n");
    fprintf (st,"*************************************************************************************************************\n");
    printf ("*************************************************************************************************************\n");
    total=0;

    for (a=1;a<=b;a++)
    {

    gotoxy (1,3+a);
    fprintf(st,"%d",a);
    printf("%d",a);


    gotoxy (9,3+a);
    scanf("%s",str);
    fprintf(st,"%s",&str[3+a][9]);

    gotoxy (26,3+a);
    scanf("%f",&cradit);
    fprintf(st,"%.2f",cradit);

    gotoxy (37,3+a);
    scanf("%d",&score);
    fprintf(st,"%d",score);

    gotoxy (47,3+a);

    ==============================
    ลองทำดูแล้วครับ (มั่วๆเพราะทำ array 2D ไม่เป็น) ซะง้าน
    แบบนี้ก็ไม่ได้ เหอะๆ
    Last edited by VesPer-KiD; 18 Feb 2009 at 10:46:28.

  18. #18
    OverclockZone Member VesPer-KiD's Avatar
    Join Date
    3 May 2008
    Location
    LampanG & Chiang Mai

    Default

    up

  19. #19
    OverclockZone Member VesPer-KiD's Avatar
    Join Date
    3 May 2008
    Location
    LampanG & Chiang Mai

    Default

    ตกซะงั้น

  20. #20
    OverclockZone Member VesPer-KiD's Avatar
    Join Date
    3 May 2008
    Location
    LampanG & Chiang Mai

    Default

    ตก งะ

Page 1 of 3 123 LastLast

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
  •