PDA

View Full Version : سوال: مرتب سازی



mhzarei76
سه شنبه 08 دی 1394, 09:59 صبح
با سلام من یک برنامه نوشتم که اسامی افراد رو با امتیاز دریافت میکند و مرتب میکند اما نمی دونم چرا درست کار نمیکند نکته دیگر هم این است که تابع strcpy برای time درست کار نمیکند
این هم کد
#include <stdio.h>#include <conio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
struct record{
char name [50];
int score;
long int time;
};
int main (){
FILE *fp;
record n[5];
record id[5];
record t[5];
char temp;

for (int i=0;i<5;i++){
printf ("please enter the name : \n");
scanf ("%s",n[i].name);
printf ("please enter the score : \n");
scanf("%d",&id[i].score);
t[i].time=time(0);
}
for (int j=4;j>0;j--){
for (int i=0;i<j;i++){
if (id[i].score<=id[i+1].score){
temp=id[i].score;
id[i].score=id[i+1].score;
id[i+1].score=temp;
strcpy(n[i].name,n[i+1].name);
// strcpy(t[i].time,t[i+1].time);
}
}
}
for(int i=0;i<5;i++){
fp=fopen("D:\\project.dey","a+");
fprintf (fp,"%s ",n[i].name);
fprintf (fp,"%d ",id[i].score);
fprintf (fp,"%ld\n",t[i].time);

}
fclose(fp);
}

Poores
سه شنبه 08 دی 1394, 17:47 عصر
نوع متغیر temp کارکتر هست درحالی که چیزی که داخلش میریزین int ، یعنی واسه عدد های بیشتر از 255 جواب نمیده و اصطلاحا متغیر کمکی (temp) سر ریز یا overflow میشه.

دوم درمورد strcopy ، دو آرگومان دریافت میکند از نوع رشته که مقدار رشته دوم را در رشته کپی میکند. پس اگر شما میخواهید جای این دورشته را عوض کنید همانند کاری که با score ها کردید باید یک متغیر کمکی بگیرید.