کمک در کار کردن با فایلها 2
با سلام به همه شما برنامه نویسان عزیز
من در حال نوشتن برنامه ای هستم که در آن یک فایل که حاوی تعدادی عدد اعشاری (حداکثر 658800) را از ورودی بخواند ابتدا تمام اعداد را دو به دوبه صورت زیر جعع کند وحاصل را درستون دوم آرایه دو بعدی ذخیره کند :
B[0][0] = a[0]+a[1] b[1][0] =a[1] +a[2] b[2][0] = a[2]+a[3] b[3][0] = a[3]+a[4] …..
سپس اعداد را سه به سه به صورت زیر جمع کند و وحاصل را درستون سوم آرایه دو بعدی ذخیره کند :
B[0][1] = a[0] + a[1]+a[2] b[1][1]= a[1] + a[2]+a[3] B[2][1] = a[2] + a[3]+a[4] ….
سپس اعداد را چهار به چهار به صورت زیر جمع کند و وحاصل را درستون چهارم آرایه دو بعدی ذخیره کند :
B[0][2] = a[0] + a[1]+a[2]+a[3] b[1][2]= a[1] + a[2]+a[3]+a[4] B[2][2] = a[2] + a[3]+a[4]+a[5] ….
وهمین جوری تا 366 تا 366 جمع کند وحاصل را ستون 366 آرایه دو بعدی ذخیره کند
ضمنا در ستون اول آرایه خود اعداد باید ذخیره شوند
سپس آرایه را به صورت نزولی مرتب کند و 20 سطر اول آرایه را چاپ کند ضمنا بعد از مرتب سازی باید در هیچ ستونی اعداد تکراری قرار نگیرد
من آن را به صورت زیر نوشتم ولی درست کار نکرد
فکر می کنید مشکل از کجاست؟
نقل قول:
#include<iostream.h>
#include<stdlib.h>
#include<fstream.h>
#include<string.h>
void main(void)
{
void de_allocate(float **);
ifstream numfile("num.TXT");
ofstream outnumfile1("result1.XLS");
ofstream outnumfile2("result2.XLS");
int i,j,k,n,count=1;
char** a;
float** b;
float temp,sum;
cout<<"Enter Number Of Data:";
cin>>n;
/************************************************** **************************/
a=new char*[n]; // SET UP THE ROWS FOR ARRAY A[]
b = new float*[n]; // STEP 1: SET UP THE ROWS FOR ARRAY B[][]
for (j = 0; j < n; j++)
b[j] = new float[366];// STEP 2: SET UP THE COLUMNS FOR ARRAY B[][]
/************************************************** **************************/
for(i=0;i<n;i++)
{
char *word=new char[10];
numfile>>word;
a[i] = word;
}
/************ convert string to float ********/
float *c=new float [n];
for(i=0;i<n;i++)
c[i]=atof(a[i]);
/************************************************** **************************/
for (j=0;j<366;j++)
for (i=0;i<n;i++)
{
sum=0;
for (k=0;k<=count;k++)
{
sum=sum+c[k];
}
b[i][j]=sum;
count+=1;
}
/************************************************** **************************/
for (j=0;j<=366;j++)
for (i=0;i<=n;i++)
for (k=0;k<n-i;k++)
if(b[k][j]<b[k+1][j])
{
temp=b[k][j];
b[k][j]=b[k+1][j];
b[k+1][j]=temp;
}
/********** Export sort array to file **********/
for(i=0;i<20;i++)
for(j=0;j<183;j++)
{
outnumfile1<<b[i][j]<<"\t";
if(j==183-1)
outnumfile1<<endl;
}
for(i=0;i<20;i++)
for(j=184;j<=366;j++)
{
outnumfile2<<b[i][j]<<"\t";
if(j==183-1)
outnumfile2<<endl;
}
/************************************************** **************************/
delete [] a;
de_allocate(b);
}
/************************************************** **************************/
void de_allocate(float **b) {
for (int i = 0; i < 366; i++)
delete[] b[i]; // STEP 1: DELETE THE COLUMNS
delete[] b; // STEP 2: DELETE THE ROWS
}
/************************************************** *************************/