PDA

View Full Version : مبتدی: ادغام چند برنامه در یک برنامه



thedarkhbk
سه شنبه 09 خرداد 1391, 22:36 عصر
:بوس: من یه مشکل دارم من چند تا برنامه نوشتم در رابطه با ماتریس ها
ضرب جمع معکوس ترانهاده تفریق و دترمینان
میخوام کاری کنم که تو یه برنامه جدید این برنامه ها فراخوانی شه یعنی یه لیست بدم به user
بعد انتخاب کنه مثلا شماره یک جمع
اما مشکل اینه که نمیدونم چطور برنامه هارو در یه برنامه دیگه فراخوانی کنم یکی کمک کنه:بوس:

shahmohammadi
سه شنبه 09 خرداد 1391, 22:47 عصر
سلام.
توابعي رو كه قبلا نوشته بوديد، در فايل سرآيندي به نامِ مثلا MyMatrix.h ذخيره كنيد. بعد اين فايل رو در پوشه اي كه فايل .c يا .cpp تون قرار داره copy past كنيد و بعد در برنامه‌تون در اولش بنويسيد:
#include "MyMatrix.h"
بعد توابعي رو كه براي جمع و ضرب و غيره نوشته بوديد، توي برنامه تون صدا بزنيد.
در ضمن در فايل سرآيندي كه گفتم تابع main برنامه قبلي تون نباشه و فقط توابعي كه نوشتيد باشه.
موفق باشيد.

r.khodabakhshi
سه شنبه 09 خرداد 1391, 22:56 عصر
سلام.به نظر من شما اون برنامه ها رو با پسوند h. ذخیره کن بعد بیا داخل برنامه اصلی اونا رو فراخونی کن،البته باید یکم تغییرات اعمال کنی یعنی باید توابع رو توی اون فایل تعریف کنی.مثلا به کد زیر توجه کن:

test.h

#ifndef myt_H
#define myt_H

int sum(int a , int b)
{
return a+b;
}
#endif



test1.cpp

include "test.h"
using namespace std;

int main()
{
int m = 0;
m = sum(4,2);
cout << m;
return 0;
}

جواب 6

thedarkhbk
سه شنبه 09 خرداد 1391, 23:45 عصر
سلام.به نظر من شما اون برنامه ها رو با پسوند h. ذخیره کن بعد بیا داخل برنامه اصلی اونا رو فراخونی کن،البته باید یکم تغییرات اعمال کنی یعنی باید توابع رو توی اون فایل تعریف کنی.مثلا به کد زیر توجه کن:

test.h

#ifndef myt_H
#define myt_H

int sum(int a , int b)
{
return a+b;
}
#endif



test1.cpp

include "test.h"
using namespace std;

int main()
{
int m = 0;
m = sum(4,2);
cout << m;
return 0;
}

جواب 6



آقا شرمنده اینا برای چیه
#ifndef myt_H
#define myt_H

#endif

thedarkhbk
چهارشنبه 10 خرداد 1391, 00:07 صبح
#define print cout<<
#define read cin>>

#include "SUMOFMATRIX .h"
/*#include "SUB OF MATRIX.h"
#include "INV OF MATRIX.h"
#include "DET OF MATRIX.h"
#include "TAR OF MATRIX.h" */
int main ()
{
int x;
print "HI DEAR USER :)" "\nPLEASE JUST ENTER THE NUMBER OF OPARATION YOU NEEDED FROM THE LIST ";
print " 1. SUB OF TWO MATRIXS\n";
print " 2. SUM OF TWO MATRIXS\n";
print " 3. INVERSE OF MATRIX\n";
print " 4. DETERMINANT OF MATRIX\n";
read x;
clrscr();

if ( x==1)
SUBOFMATRIX ();


getch();
return 0;
}


برنامه اصلی

#define print cout<<
#define read cin>>
int sub()
{
int mat1[50][50],mat2[50][50];
int m,n,i,j,taf;
print "PLEASE ENTER LINES OF THE MATRIX :";
read m;
print "PLEASE ENTER COLUMNS OF THE MATRIX :";
read n;
print "PLEASE FILL THE FIRST MATRIX'S COLUMNS AND LINES\n";
for(i=0;i<m;i++)
for(j=0;j<n;j++)
{
print "mat1 ["<<i<<"]["<<j<<"]:";
read mat1 [i][j];
}
print "PLEASE FILL THE SECOND MATRIX'S COLUMNS AND LINES\n";
for(i=0;i<m;i++)
for(j=0;j<n;j++)
{
print "mat2 ["<<i<<"]["<<j<<"]:";
read mat2 [i][j];
}
print "SUBTRACTION OF TWO MATRIX\n";
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
taf=(mat1[i][j]-mat2[i][j]);
print taf<<"\t";
}
print endl;
}
getch();
return 0;
}

فایل فرعی

آقا ارور میده میگه نمیتونه بخونه

shahmohammadi
چهارشنبه 10 خرداد 1391, 01:08 صبح
فايل اصلي:
اشكال اصلي برنامه تون اينجاست كه براي نام فايل نبايد فاصله بگذاريد.
منظورم از توضيحات پست قبل اين بود كه همه ي توابع رو در يه فايل قرار بديد. توابع sum تفريق و دترمينان و .. رو در فايل matrix.h قرار بديد و براي اجراشون نام تابعشون رو صدا بزنيد نه نام فايل سرآيند رو:
#define print1 cout<<
#define read1 cin>>
#include <iostream.h>

#include "matrix.h"

int main ()
{
int x;
print1 "HI DEAR USER :)" "\nPLEASE JUST ENTER THE NUMBER OF OPARATION YOU NEEDED FROM THE LIST ";
print1 " 1. SUM OF TWO MATRIXS\n";
print1 " 2. SUB OF TWO MATRIXS\n";
print1 " 3. INVERSE OF MATRIX\n";
print1 " 4. DETERMINANT OF MATRIX\n";
read1 x;
clrscr();

if ( x==2)
sub();


getch();
return 0;
}

فايل سرآيند:
#define print1 cout<<
#define read1 cin>>
#include <conio.h>
#include <iostream.h>
int sub()
{
int mat1[50][50],mat2[50][50];
int m,n,i,j,taf;
print1 "PLEASE ENTER LINES OF THE MATRIX :";
read1 m;
print1 "PLEASE ENTER COLUMNS OF THE MATRIX :";
read1 n;
print1 "PLEASE FILL THE FIRST MATRIX'S COLUMNS AND LINES\n";
for(i=0;i<m;i++)
for(j=0;j<n;j++)
{
print1 "mat1 ["<<i<<"]["<<j<<"]:";
read1 mat1 [i][j];
}
print1 "PLEASE FILL THE SECOND MATRIX'S COLUMNS AND LINES\n";
for(i=0;i<m;i++)
for(j=0;j<n;j++)
{
print1 "mat2 ["<<i<<"]["<<j<<"]:";
read1 mat2 [i][j];
}
print1 "SUBTRACTION OF TWO MATRIX\n";
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
taf=(mat1[i][j]-mat2[i][j]);
print1 taf<<"\t";
}
print1 endl;
}
getch();
return 0;
}
در فايل ماتريس ساير توابع رو هم قرار بديد.

shahmohammadi
چهارشنبه 10 خرداد 1391, 01:16 صبح
آقا شرمنده اینا برای چیه
#ifndef myt_H
#define myt_H

#endif
اينها اختياري هست. ولي خوب بهتره كه بگذاريم.
مثلا ما كه اومديم يك بار iostream رو در برنامه اصلي و يك بار هم در فايل سرآيند اينكلود كرديم، اگه در فايل سرآيند iostream.h از اين عبارت استفاده نشده بود برنامه مون ارور مي گرفت كه توابعي كه داخل اين فايلند دو بار تعريف شدند. اين دستورات از تعريف مجدد توابع جلوگيري مي كنه.