PDA

View Full Version : گرفتن یک فایل متنی حاوی عدد از ورودی و sort کردن آن



farzaneh_gerami
دوشنبه 20 مهر 1388, 09:17 صبح
سلام خسته نباشید یه برنامه می خوام به زبان c یا پاسکال یا C++‎ که یک فایل txt حاوی عدد را که با space از هم جدا شدن از ورودی بگیره و به روش Bubble sort یا insertion sort یا radix sort مرتبش کنه و دوباره در یک فایل متنی به عنوان خروجی بزارتش
مرسی

mortezamsp
سه شنبه 21 مهر 1388, 21:16 عصر
با سلام.

تابع bobblesort که یه آرایه ای از رشته ها رو بگیره و مرتب کنه رو که بلدی بنویسی، فقط میمونه اینکه اول اطلاعات فایل رو بریزی تو همون آرایه از رشته ها.اول کل فایل رو میریزی تو یه رشته ی بزرگ و بعد با تابع strtok اون رو تکه تکه میکنی و داخل رشته میریزی:

#include<string.h>

//vars
char *buf=new char[9000];
char **dic =new char[400][20];
int i=0;
char *filename="new.txt";

//file read
FILE *fp=fopen(filename,"r");
fgets(buf,sizeof(buf),fp);

//add to dic
char *word=strtok(buf," ");
strcpy(dic[i],word);
while(word!=NULL)
{
i++;
word=strtok(buf,NULL);
strcpy(dic[i],word;
}


//sort
sort(dic,400,20);



خودم کامپایلش نکردم.

farzaneh_gerami
یک شنبه 26 مهر 1388, 09:41 صبح
سلام جواب نمی ده پیغام خطا میده

Altech
دوشنبه 27 مهر 1388, 20:19 عصر
اول بايد تابع sort رو به قول دوستمون پياده سازي کني . بعد از اون اين قطعه کدها رو مي ذاري تو تابع main . البته string رو بيرون از main اينکلود مي کني .
فقط مي مونه يه مشکل که اونو هم از جناب mortezamsp مي پرسم .
مطمئن هستين که تخصيص حافظه براي آرايه دو بعدي رو درست انجام دادين ؟

mortezamsp
چهارشنبه 29 مهر 1388, 08:29 صبح
سلام جواب نمی ده پیغام خطا میده
نکنه تو همین هایی که من نوشتم رو بردی کپی کردی که اجرا نمیشه؟این یه مثاله فقط برای اینکه بفهمی باید بترتیب چه کارهایی رو بکنی.




مطمئن هستين که تخصيص حافظه براي آرايه دو بعدي رو درست انجام دادين ؟
نه! غلط انجام دادم.باید اینجوری باشه:


//dic[200][40]
char *dic[20];
for(int i=0;i<200;i++)
dic[i]=new char[40];

DigitalRain
شنبه 05 اسفند 1391, 21:31 عصر
نه! غلط انجام دادم.باید اینجوری باشه:


//dic[200][40]
char *dic[20];
for(int i=0;i<200;i++)
dic[i]=new char[40];


مطمئنی اینطوری نیس: ؟

int** twoDArray = new int*[rows];
for(int i = 0 ; i < cols ; i++)
twoDArray[i] = new int[cols];

saeedizade
پنج شنبه 29 بهمن 1394, 15:21 عصر
کسی میتونه بدون ریختن اعداد در ارایه و ... داحل همون فایل مرتب کنه؟
امکانش هست اصلا؟