PDA

View Full Version : کمک در نوشتن یک برنامه



arya_jal
دوشنبه 27 اسفند 1386, 15:05 عصر
با سلام خدمت شما دوستان عزیز

من در حال نوشتن برنامه ای هستم که درآن اعدادی از یک فایل خوانده می شوند وسپس در یک آرایه ذخیره می شوند ( inp[][]). در ادامه ستون اول آرایه با تمام ستون های دیگر مقایسه می شود مثلا ستون اول با ستون دوم مقایسه می شود هر کدام از ستونها که تعداد کمتری داده داشتند را انتخاب وتعداد آن را در آرایه N ذخیره می کنیم ستون کمتررا به عنوان b و دیگری را بعنوان r در نظر می گیریم سپس مجموع تمام درایه های هر ستون را تا N محاسبه می کنیم بدین ترتیب sqr (مجموع تمام درایه های ستون r ) وsqb (مجموع تمام درایه های ستون b تا Nامین داریه ) و sqrb (مجموع حاصلضرب هر درایه از ستون r با ستون b ) و sqr2 (مجموع مربعات هر ستون) را محاسبه می کنیم و سپس در فرمول r قرار می دهیم .

این را برای بقیه ستونها نیز ادامه می دهیم ( مثلا ستون 1 با 3 و 1 با 4 و...و1 با 50)

در ادامه همین کار را برای ستونهای بعدی نیز انجام می دهیم ( مثلا ستون 2 با 1 و 2با 3 و2با 4 و...و2با 50)

در ضمن حداکثر تعداد ستون 50 است و حداکثر تعداد سطر 60*366



من برنامه را نوشتم اما نمی دانم کجا مشکل دارد

لطفا مرا راهنمایی کنید.

با تشکر.

[SETFRAME]







#include<iostream.h>
#include<fstream.h>
#include<string.h>
#include<math.h>


void main()
{
ifstream input("in.txt");
ofstream output("out.txt");
void de_allocate(double **,int);


cout<<"\n\nSoftware Is Runnig...";
cout<<"\nAllocate For Arrays Is Runnig...";
int i,j,k,index[50];
int** N;
N = new int*[50]; //allocate for N[i][j] Array
for (j = 0;j < 50;j++)
N[j] = new int[50];

double sqr,sqb,sqrb,sqr2,sqb2;
//allocate for r[i][j] Array
double** r;
r = new double*[50];
for (j = 0; j < 50; j++)
r[j] = new double[50];

for (i = 0; i < 50; i++)
for (j = 0; j < 50; j++)
r[i][j] = -1;
//allocate for a[i][j] Array
double** a;
a = new double*[50];
for (j = 0; j < 50; j++)
a[j] = new double[50];

for (i = 0; i < 50; i++)
for (j = 0; j < 50; j++)
a[i][j] = -1;
//allocate for b[i][j] Array
double** b;
b = new double*[50];
for (j = 0; j < 50; j++)
b[j] = new double[50];

for (i = 0; i < 50; i++)
for (j = 0; j < 50; j++)
b[i][j] = -1;
//allocate for inp[i][j] Array
double** inp;
inp = new double*[60*366];
for (j = 0; j < 60*366; j++)
inp[j] = new double[50];

cout<<"\nAllocate For Arrays End Succesfull...";
cout<<"\nFile is Opening And Reading Your Data";

for (i = 0; i < 60*366; i++)
{
for (j = 0; j < 50; j++)
{
char *word=new char[10];
input>>word;
inp[i][j] = atof(word);
}
}
cout<<"\nFile Is Close";
// meghdar har soton
for (i = 0; i < 50; i++)
{
index[i] = 0;
j = 0;
while (inp[j][i] != -1)
{
++j;
++index[i];
}
}

// mohasebeh 0 ta 49
cout<<"\n\nData Is Proccesing... As 0 to 49";
for (i = 0; i < 49; i++)
{
sqr = sqb = sqrb = sqr2 = sqb2 = 0;
for (j = i+1; j < 50; j++)
{
if (index[i] > index[j])
{
N[i][j] = index[i];
for (k = 0; k < N[i][j]; k++)
{
sqr += inp[k][i];
sqb += inp[k][j];
sqr2 += (inp[k][i]*inp[k][i]);
sqb2 += (inp[k][j]*inp[k][j]);
sqrb += (inp[k][i]*inp[k][j]);
}
}
else
{
N[i][j] = index[j];
for (k = 0; k < N[i][j]; k++)
{
sqr += inp[k][j];
sqb += inp[k][i];
sqr2 += (inp[k][j]*inp[k][j]);
sqb2 += (inp[k][i]*inp[k][i]);
sqrb += (inp[k][i]*inp[k][j]);
}
}
cout<<"\nCalculate r["<<i<<"]["<<j<<"]";
r[i][j] = ((N[i][j]*sqrb)-(sqr*sqb))/(sqrt((N[i][j]*sqb2)-(sqb*sqb))*sqrt((N[i][j]*sqr2)-(sqr*sqr)));
//mahasebeh a ,b
if (r[i][j] > 0.6)
{
cout<<"\n\tCalculate a["<<i<<"]["<<j<<"]"<<"\t\tCalculate b["<<i<<"]["<<j<<"]";
a[i][j] = ((N[i][j]*sqrb)-(sqr*sqb))/((N[i][j]*sqb2)-(sqb*sqb));
b[i][j] = ((sqr*sqb2)-(sqrb*sqb))/((N[i][j]*sqb2)-(sqb*sqb));
}
}
}
cout<<"\n\nData Is Proccesed... As 0 to 49";

// mohasebeh 1 ta 0
cout<<"\n\nData Is Proccesing... As 1 to 0";
for (i = 1; i < 50; i++)
{
sqr = sqb = sqrb = sqr2 = sqb2 = 0;
for (j = 0; j < i; j++)
{
if (index[i] > index[j])
{
N[i][j] = index[i];
for (k = 0; k < N[i][j]; k++)
{
sqr += inp[k][i];
sqb += inp[k][j];
sqr2 += (inp[k][i]*inp[k][i]);
sqb2 += (inp[k][j]*inp[k][j]);
sqrb += (inp[k][i]*inp[k][j]);
}
}
else
{
N[i][j] = index[j];
for (k = 0; k < N[i][j]; k++)
{
sqr += inp[k][j];
sqb += inp[k][i];
sqr2 += (inp[k][j]*inp[k][j]);
sqb2 += (inp[k][i]*inp[k][i]);
sqrb += (inp[k][i]*inp[k][j]);
}
}
r[i][j] = ((N[i][j]*sqrb)-(sqr*sqb))/(sqrt((N[i][j]*sqb2)-(sqb*sqb))*sqrt((N[i][j]*sqr2)-(sqr*sqr)));
//mahasebeh a ,b
if (r[i][j] > 0.6)
{
a[i][j] = ((N[i][j]*sqrb)-(sqr*sqb))/((N[i][j]*sqb2)-(sqb*sqb));
b[i][j] = ((sqr*sqb2)-(sqrb*sqb))/((N[i][j]*sqb2)-(sqb*sqb));
}
}
}
cout<<"\n\nData Is Proccesed... As 1 to 0";
for (i = 0;i < 50;i++)
for (j = 0;j < 50;j++)
output<<r[i][j]<<"\t";

cout<<"\nArrays de_allocate is running...";
de_allocate(r,50);
de_allocate(a,50);
de_allocate(b,50);
de_allocate(inp,60*366);

cout<<"\nArrays de_allocate is end...";
}

/************************************************** *************************/

void de_allocate(double **mat,int row) {
for (int i = 0; i < row; i++)
delete[]mat[i]; // STEP 1: DELETE THE COLUMNS

delete[] mat; // STEP 2: DELETE THE ROWS
}
/************************************************** **************************/













[SETFRAME/]

arya_jal
سه شنبه 06 فروردین 1387, 15:04 عصر
با عرض سلام خدمت دوستان عزیز
اگر امکان دارد به مشکل من هم رسیدگی کنید