آژانس هواپیماییexchanging
dakhlestan

کمک در مورد مرتب کردن

شروع موضوع توسط greenday ‏2 دسامبر 2007 در انجمن خانواده C++ , C

  1. greenday

    greenday کاربر تازه وارد

    تاریخ عضویت:
    ‏18 آگوست 2007
    نوشته ها:
    29
    تشکر شده:
    0
    سلام به همگی اگر ممکنه یکی کمک کنه من باید پروژمو این پنجشنبه تحویل بدیم می خواستم یه سورت بر اساس نمره دانشجو یکی برام بنویسه که سورت کنه و مرتب شده رو نشون بده. خواهشا کمک
    کد برنامه رو می زارم فقط می خواهم شماره 2 رو زد مرتب کنه و نشون بده بر اساس نمره.
    مرام بزارید من نیوفتم.
    /* This Program Powered By N!M4 */
    // Include
    #include <alloc.h>
    #include <stdlib.h>
    #include <stdio.h>
    #include <conio.h>
    #include <bios.h>
    #include <string.h>
    #include <dos.h>
    // Define
    #define drawltr(s,f,y,str,dl) {for(i=s;i<=f;i++){gotoxy(i,y);printf("%s",str);delay(dl);}}
    #define drawttd(s,f,x,str,dl) {for(i=s;i<=f;i++){gotoxy(x,i);printf("%s",str);delay(dl);}}
    #define drawrtl(s,f,y,str,dl) {for(i=s;i>=f;i--){gotoxy(i,y);printf("%s",str);delay(dl);}}
    #define drawdtt(s,f,x,str,dl) {for(i=s;i>=f;i--){gotoxy(x,i);printf("%s",str);delay(dl);}}
    #define txta(k,dl) {for(i=90;i>=65;i--){if(i==k){printf("%c",i);break;}printf("%c\b",i);delay(dl);}}
    #define txt(y,x,str) {gotoxy(x,y);printf("%s",str);}

    void intro(void);
    int main_menu(void);
    void addnew(void);
    void save(void);
    void load(void);
    void view(void);

    typedef struct student
    {
    char stdntnum[10];
    struct {
    char first[30];
    char last[50];
    }name;
    char grade[6];
    };

    student stdnt[25];
    int stdnums=0;

    // Main
    void main(void)
    {
    int t;
    clrscr();
    textmode(3);

    for(;;)
    {
    t=main_menu();
    if(t==4)
    {
    txt(17,5,"Thanks you, User!");
    break;
    }
    switch(t)
    {
    case 1:
    addnew();
    break;
    case 2:
    getch();
    break;
    case 3:
    view();
    break;
    }
    }
    delay(1000);
    }
    // Function
    void intro(void)
    {
    int i;
    textcolor(15);
    clrscr();
    drawltr(25,55,5,"=",70);
    drawttd(6,9,55,"=",70);
    drawrtl(55,25,10,"=",70);
    drawdtt(9,6,25,"=",70);
    gotoxy(33,7);
    txta(80,50);
    txta(79,50);
    txta(87,50);
    txta(69,50);
    txta(82,50);
    txta(69,50);
    txta(68,50);
    printf(" ");
    txta(66,50);
    txta(89,50);
    printf(" ");
    txta(78,50);
    txta(73,50);
    txta(77,50);
    txta(65,50);
    delay(2000);
    clrscr();
    txt(24,35,"Loading ...");
    for(i=2;i<=79;i++)
    {
    gotoxy(i,25);
    printf("");
    delay(50);
    }
    delay(1000);
    }
    int main_menu(void)
    {
    int ch;
    textcolor(2);
    clrscr();

    txt(1,27,"** View Data About Student **");
    txt( 5,5," 1> Add new data");
    txt( 6,5,"****************************************");
    txt( 7,5," 2> Sort by Grade");
    txt(8,5,"****************************************");
    txt(9,5," 3> View data");
    txt(10,5,"****************************************");
    txt(11,5," 4> Exit");
    txt(12,5," Press your choice From 1 until 4) : ");

    for(;;)
    {
    ch=getch();
    if(ch<='7' || ch>='1') break;
    }
    putch(ch);
    return(ch-'0');
    }
    void addnew(void)
    {
    int ch;
    clrscr();
    txt(1,30, "** Adding new data **");
    if(stdnums==25-1)
    {
    txt(5,1," All avilable space is full. cannot add any new data.");
    txt(7,1," Press a key to return main menu...");
    getch();
    return;
    }
    txt(5,5,"First Name : ");
    txt(6,5,"Last : ");
    txt(7,5,"Student number : ");
    txt(8,5,"Student Grade : ");

    gotoxy(30,5);
    scanf("%s",stdnt[stdnums].name.first);

    gotoxy(30,6);
    scanf("%s",stdnt[stdnums].name.last);

    gotoxy(30,7);
    scanf("%s",stdnt[stdnums].stdntnum);

    gotoxy(30,8);
    scanf("%s",stdnt[stdnums].grade);

    printf("\n\n Are above data correct (Y/N) : ");
    for(;;){ch=getch(); if(ch=='y'||ch=='Y'||ch=='n'||ch=='N') break;}
    putch(ch);
    if(ch=='n' || ch=='N')
    {
    printf("\n Adding data escaped. press a key to return...");
    getch();
    return;
    }
    stdnums++;
    save();
    printf("\n\n\n New data added to last data. press a key to return main menu...");
    getch();
    }
    void save(void)
    {
    FILE *f;
    f=fopen("db.txt","wt");
    fprintf(f,"%s\n",stdnt[0].name.first);
    fprintf(f,"%s\n",stdnt[0].name.last);
    fprintf(f,"%s\n",stdnt[0].stdntnum);
    fprintf(f,"%s",stdnt[0].grade);
    for(int i=1; i<stdnums; i++)
    {
    fprintf(f,"\n%s",stdnt.name.first);
    fprintf(f,"\n%s",stdnt.name.last);
    fprintf(f,"\n%s",stdnt.stdntnum);
    fprintf(f,"\n%s",stdnt.grade);
    }
    printf("\n Saved. Press a key ...");
    }
    void load(void)
    {
    int i=0;
    FILE *f;
    f=fopen("db.txt","r");
    if(f==NULL)
    {
    printf("\n Data File Not Found. press a key..."); getch();
    return;
    }
    for(;!feof(f);)
    {
    fscanf(f,"%s",stdnt.name.first);
    fscanf(f,"%s",stdnt.name.last);
    fscanf(f,"%s",stdnt.stdntnum);
    fscanf(f,"%s",stdnt.grade);
    stdnums++;
    }
    }
    void view(void)
    {
    clrscr();
    printf("\nRow\tName\t\tFamily\t\tGrade\t\tID");
    for(int i=0; i<stdnums; i++)
    {
    printf("\n%d)\t%s\t",i+1,stdnt.name.first);
    printf("\t%s",stdnt.name.last);
    printf("\t\t%s",stdnt.stdntnum);
    printf("\t\t%s",stdnt.grade);
    }
    txt(i+2,5,"\n Press a key ..."); getch();
    }
     
  2. Arash_j13

    Arash_j13 Registered User

    تاریخ عضویت:
    ‏18 فوریه 2005
    نوشته ها:
    778
    تشکر شده:
    2
    محل سکونت:
    مشهد
  3. greenday

    greenday کاربر تازه وارد

    تاریخ عضویت:
    ‏18 آگوست 2007
    نوشته ها:
    29
    تشکر شده:
    0
    سلام
    ممنون دوست گرامی
    نمیدونم چی بگم به نظرتون خیلی فرق داره؟ چون من زیاد بلد نیستم.
    اگر بنویسید ممنون می شم که من دو رو زدم مرتب شده رو نشون بده
    ممنون
    خیلی خیلی ممنون!
    نیما
    خداحافظ