عکس را دیدم.
برای اینکه برنامه جناب دانیال را وارد کنی ...
ابتدا باز یک پروژه کنسولی بساز.
که باز کد پایه زیر را داریم:
کد:
#include <cstdlib>
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
system("PAUSE");
return EXIT_SUCCESS;
}
حالا مناطقی را من نام می برم که باید رعایت بشه.
اول منطقه include ها که در بالاترین قسمت است.
دوم منطقه ای بین اینکلودها و تابع main . تابع main منظور این قسمت است:
کد:
int main(int argc, char *argv[])
{
system("PAUSE");
return EXIT_SUCCESS;
}
یعنی همان خطی که کلمه main قرار دارد و تمام چیزی که بین دو کروشه بعدش قرار دارد.
سومین منطقه: بعد تابع main
حالا نگاه کن به برنامه دانیال عزیز.
خط اولش کد نیست. یا باید حذف بشه یا قبلش دو تا ممیز بگذاری تا به حالت comment در آید . این طوری:
بعدش باید ببینی چند تا اینکلود دارد و اگر برنامه تو این اینکلودها را ندارد اضافه کنی.
من این اینکلود را از برنامه ایشان اضافه کردم:
حالا می رسیم به منطقه میان اینکلودها و main در برنامه ایشان.
داریم:
کد:
int calc(int [],int dim);
void revmatrix( int [],int dim);
این دو خط معرفی دو تابع است که خود دو تابع بعد main آمده. البته فکر کنم بشه قبل main هم بیاد ولی رایج این طوری استفاده میشه و به نظر من هم این طوری بهتره چون main گم نمیشه. چون بعضی توابع صدها خط هستند.
این دو خط را هم در کامپایلر قبل main اضافه می کنیم.
دو تابع را هم بعد main اضافه می کنیم یعنی این قسمت را:
کد:
/////////////////calc function//////////
int calc( int matrix[ ], int dim )
{
int sum = 0, bul, x = 1;
for( int l = 0; l<( dim*dim );l += ( dim+1 ) )//ghotr asli
x *= matrix[l];
sum = x;
x = 1;
for( int c = 1;c<dim;c ++ )
{
bul=c;
for( int m = 0;m<dim;m ++ )
{
if( ( bul+1 )%dim != 0 )
{
x *= matrix[bul];
bul +=( dim + 1 );
}
else
{
x = x * matrix[bul];
bul += 1;
}
}//for m
sum += x;
x = 1;
}//for c
return sum;
}
////////////////////revmatriv determinan
void revmatrix(int matrix[ ],int dim)
{
int end,temp,counter;
for( int t = dim-1;t <= dim*dim;t = t + dim )
{
end=t;
counter = end -( dim-1 );
while( end > counter )
{
temp = matrix[end];
matrix[end] = matrix[counter];
matrix[counter] = temp;
++ counter;
-- end;
}
}
}
حالا می رسیم به داخل تابع main :
در برنامه ها قسمت اول معمولا محل تعریف متغیر هاست. البته قبل main هم میشه تعریف کرد فکر کنم که میشه متغیر گلوبال. که در همه توابع قابل دسترسی است.
اینها را هم بعلاوه بقیه کدهایش اضافه می کنیم. یعنی این قسمت را:
کد:
int matrix[1000];
int dim,temp;
double leftsum,rightsum;
cout<<" PLEASE ENTER MATRIX DIMENSION : ";
cin>>dim;
cout<<"\n\n\n";
for( int i = 0;i<( dim*dim );i ++ )
{
cout<<"ENTER ELEMAN : ";
cin>>temp;
matrix[i] = temp;
clrscr();
cout<<" PLEASE ENTER MATRIX DIMANTION : "<<dim;
cout<<"\n\n\n";
}//for i
if ( dim > 2 )
{
leftsum = calc( matrix , dim );
cout<<"LEFTSUM of the matrix = "<< leftsum <<"\n\n";
revmatrix( matrix , dim );
rightsum = calc( matrix ,dim );
cout<<"RIGHTSUM of the matrix = "<< rightsum <<"\n\n\n\n\n\n" ;
cout<<" ( DETERMINAN OF THE MATRIX = "<< leftsum - rightsum<<" )";
}
else
cout<<" ( DETERMINAN OF THE MATRIX = "<<(matrix[0] * matrix[3] - matrix[1] * matrix[2])<<" )";
ولی یک خط را من ندیده گرفتم.
یعنی این خط را:
چون این خط:
کار اون را انجام می دهد.
کل کد میشه این حالا:
کد:
#include <cstdlib>
#include <iostream>
#include <conio.h>
using namespace std;
int calc(int [],int dim);
void revmatrix( int [],int dim);
int main(int argc, char *argv[])
{
int matrix[1000];
int dim,temp;
double leftsum,rightsum;
cout<<" PLEASE ENTER MATRIX DIMENSION : ";
cin>>dim;
cout<<"\n\n\n";
for( int i = 0;i<( dim*dim );i ++ )
{
cout<<"ENTER ELEMAN : ";
cin>>temp;
matrix[i] = temp;
clrscr();
cout<<" PLEASE ENTER MATRIX DIMANTION : "<<dim;
cout<<"\n\n\n";
}//for i
if ( dim > 2 )
{
leftsum = calc( matrix , dim );
cout<<"LEFTSUM of the matrix = "<< leftsum <<"\n\n";
revmatrix( matrix , dim );
rightsum = calc( matrix ,dim );
cout<<"RIGHTSUM of the matrix = "<< rightsum <<"\n\n\n\n\n\n" ;
cout<<" ( DETERMINAN OF THE MATRIX = "<< leftsum - rightsum<<" )";
}
else
cout<<" ( DETERMINAN OF THE MATRIX = "<<(matrix[0] * matrix[3] - matrix[1] * matrix[2])<<" )";
system("PAUSE");
return EXIT_SUCCESS;
}
/////////////////calc function//////////
int calc( int matrix[ ], int dim )
{
int sum = 0, bul, x = 1;
for( int l = 0; l<( dim*dim );l += ( dim+1 ) )//ghotr asli
x *= matrix[l];
sum = x;
x = 1;
for( int c = 1;c<dim;c ++ )
{
bul=c;
for( int m = 0;m<dim;m ++ )
{
if( ( bul+1 )%dim != 0 )
{
x *= matrix[bul];
bul +=( dim + 1 );
}
else
{
x = x * matrix[bul];
bul += 1;
}
}//for m
sum += x;
x = 1;
}//for c
return sum;
}
////////////////////revmatriv determinan
void revmatrix(int matrix[ ],int dim)
{
int end,temp,counter;
for( int t = dim-1;t <= dim*dim;t = t + dim )
{
end=t;
counter = end -( dim-1 );
while( end > counter )
{
temp = matrix[end];
matrix[end] = matrix[counter];
matrix[counter] = temp;
++ counter;
-- end;
}
}
}
دکمه ((کامپایل و run )) را می زنیم:
خطا میده و میگه تابع clrscr تعریف نشده.
تابع clrscr کارش پاک کردن صفحه است و از توربو سی است نه dev c و از هدر conio.h فکر کنم برمی خیزد.
پس می رویم در گوگل می نویسیم:
dev c clear screen
که میاد:
کد:
system("cls");//clears the screen
جایگزین تابع قبلی می کنیم و باز ران می کنیم. که برنامه اجرا می شود.
حالا که clrscr حذف شد من #include <conio.h> را هم حذف می کنم چون فکر کنم برای clrscr اینکلود شده بوده. باز اجرا می کنم می بینم گیر نمیده. پس احتمالا حدس من درسته.
حالا برای اینکه کارت را راحت کنم یک پروژه کنسولی بساز و سلکت آل کن و کد زیر را جایگزین کن:
کد:
#include <cstdlib>
#include <iostream>
using namespace std;
int calc(int [],int dim);
void revmatrix( int [],int dim);
int main(int argc, char *argv[])
{
int matrix[1000];
int dim,temp;
double leftsum,rightsum;
cout<<" PLEASE ENTER MATRIX DIMENSION : ";
cin>>dim;
cout<<"\n\n\n";
for( int i = 0;i<( dim*dim );i ++ )
{
cout<<"ENTER ELEMAN : ";
cin>>temp;
matrix[i] = temp;
system("cls");//clears the screen
cout<<" PLEASE ENTER MATRIX DIMANTION : "<<dim;
cout<<"\n\n\n";
}//for i
if ( dim > 2 )
{
leftsum = calc( matrix , dim );
cout<<"LEFTSUM of the matrix = "<< leftsum <<"\n\n";
revmatrix( matrix , dim );
rightsum = calc( matrix ,dim );
cout<<"RIGHTSUM of the matrix = "<< rightsum <<"\n\n\n\n\n\n" ;
cout<<" ( DETERMINAN OF THE MATRIX = "<< leftsum - rightsum<<" )";
}
else
cout<<" ( DETERMINAN OF THE MATRIX = "<<(matrix[0] * matrix[3] - matrix[1] * matrix[2])<<" )";
system("PAUSE");
return EXIT_SUCCESS;
}
/////////////////calc function//////////
int calc( int matrix[ ], int dim )
{
int sum = 0, bul, x = 1;
for( int l = 0; l<( dim*dim );l += ( dim+1 ) )//ghotr asli
x *= matrix[l];
sum = x;
x = 1;
for( int c = 1;c<dim;c ++ )
{
bul=c;
for( int m = 0;m<dim;m ++ )
{
if( ( bul+1 )%dim != 0 )
{
x *= matrix[bul];
bul +=( dim + 1 );
}
else
{
x = x * matrix[bul];
bul += 1;
}
}//for m
sum += x;
x = 1;
}//for c
return sum;
}
////////////////////revmatriv determinan
void revmatrix(int matrix[ ],int dim)
{
int end,temp,counter;
for( int t = dim-1;t <= dim*dim;t = t + dim )
{
end=t;
counter = end -( dim-1 );
while( end > counter )
{
temp = matrix[end];
matrix[end] = matrix[counter];
matrix[counter] = temp;
++ counter;
-- end;
}
}
}