سلام به همگی اگر ممکنه یکی کمک کنه من باید پروژمو این پنجشنبه تحویل بدیم می خواستم یه سورت بر اساس نمره دانشجو یکی برام بنویسه که سورت کنه و مرتب شده رو نشون بده. خواهشا کمک
کد برنامه رو می زارم فقط می خواهم شماره 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 رو زد مرتب کنه و نشون بده بر اساس نمره.
مرام بزارید من نیوفتم.
/* 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(;
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();
}