arya_jal
دوشنبه 27 اسفند 1386, 16: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/]
من در حال نوشتن برنامه ای هستم که درآن اعدادی از یک فایل خوانده می شوند وسپس در یک آرایه ذخیره می شوند ( 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/]