الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

ماهو الكود الصحيح؟

بدأه سرمد الليل في 26 مايو 2010 · 27 رد · 2,237 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

ماهو الكود اللى يقرا ويخزن مصفوفه مكونه من 10 اعمده وصفوف ومن ثم يعكس اقطارها مستخدمنا فنكشن وبوينتر

هذا شكل لها

قبل

4326

9234

1209

7643

بعد

3327

9024

1329

6644

محاولتى :

#include<iostream>
using namespace std;
void reverse(int t[20][10])
{ int i,j=0,a,k=9,b=0;
for(i=0;i<10;i++)
	 {
		 a= *(*(t+i)+j);
		  *(*(t+i)+j)=*(*(t+(k-j))+(k-i));
		 *(*(t+(k-j))+(k-i))=a;
		 j++;
	 }

int main()
{
	int t[10][10];

cin>>t[10][10];

	reverse(t);
	for(i=0;i<10;i++)
	{
		for(j=0;j<10;j++)
			cout<<*(*(t+i)+j)<<" ";
	cout<<"\n";
	}
return 0;}






_____________________________________________________________


وكيف احول هذا الداله من من فنكشن عادى الى Recursive function]


int Calculate(int num,int power)
{
	int x=0,number=0;
	if(power!=0)
	{
		x = 1;
		for (int i=1; i <=power; i++)
			x = x*2;
		number=num*x;
	}
	else
	{
		x=1;
		number=num*x;
	}
	return number;

تم تعديل هذه المشاركة بواسطة سرمد الليل في 26 مايو 2010 في 19:40

#2

???

#3

هذه دالة تقلب عناصر القطرين.

void reverse(int **arr,int n){
int t1,t2;

for(int i=0;i<n/2;i++){
t1=arr; 
arr=arr[n-i-1][n-i-1];
arr[n-i-1][n-i-1]=t1;
t2=arr[n-i-1]; 
arr[n-i-1]=arr[n-i-1];
arr[n-i-1]=t2;
}





}
tvquran_6.gif

#4

ماعرفت شلون اصيغ الداله بطريقه تحل لى السوال وكل ماحاولت يطلع فيه خطا

#include<iostream>

using namespace std;

const int rows =10;

const int columns=10;

void reverse(int **arr,int n)

{int t1,t2;

for(int i=0;i<n/2;i++)

{t1=arr;

arr=arr[n-i-1][n-i-1];

arr[n-i-1][n-i-1]=t1;

t2=arr[n-i-1];

arr[n-i-1]=arr[n-i-1];

arr[n-i-1]=t2;} }

int main(){

int arr[rows][columns];

cout<<"pleas enter arry" ;

cin>>arr[rows][columns];

reverse( **arr, 10);

return 0;

}

وعندى سوال ليش نستخدم ** بدل * انا درست ان البوينتر ستار واحد بس

#5

هذه الكود

#include <iostream>
using namespace std;


void reverse(int **arr,int n){
int t1,t2;

for(int i=0;i<n/2;i++){
t1=arr; 
arr=arr[n-i-1][n-i-1];
arr[n-i-1][n-i-1]=t1;
t2=arr[n-i-1]; 
arr[n-i-1]=arr[n-i-1];
arr[n-i-1]=t2;
}





}
int main ()
{
int **arr;
int N;
cout<<"Enter Number N=";cin>>N;


arr=new int*[N];
for(int i=0;i<N;i++)
arr=new int[N];

for(int r=0;r<N;r++){
for(int c=0;c<N;c++){
//cout<<"["<<r<<"]["<<c<<"]=";cin>>arr[r][c]; //for enter user
arr[r][c]=rand()%9+1; 	//for random
}}
for(int r=0;r<N;r++){
for(int c=0;c<N;c++){
cout<<arr[r][c]<<" ";
}
cout<<endl;
}
cout<<endl<<endl;
reverse(arr,N);

for(int r=0;r<N;r++){
for(int c=0;c<N;c++){
cout<<arr[r][c]<<" ";
}
cout<<endl;
}




}

هذا الكود أقراءه على مهل وعدل فيه بما يناسبك

لاحظ السطرين

//cout<<"["<<r<<"]["<<c<<"]=";cin>>arr[r][c]; //for enter user

arr[r][c]=rand()%9+1; //for random

اذا كنت تريد من المستخدم ادخال البيانات شيل التعليق من امام الاول وضعه اما الثاني

2
tvquran_6.gif

#6

الله يجزاك خير

___________________________________________________

هذى الداله كيف احولها من فنكشن عاديه الى Recursive function

int Calculate(int num,int power)

{

int x=0,number=0;

if(power!=0)

{

x = 1;

for (int i=1; i <=power; i++)

x = x*2;

number=num*x;

}

else

{

x=1;

number=num*x;

}

return number

{

#7

ماهو عمل الدالة بالضبط ؟ او الصيغة الرياضيه لها

tvquran_6.gif

#8
سرمد الليل كتب:

هذى الداله كيف احولها من فنكشن عاديه الى Recursive function

int Calculate(int num,int power)
{
int x=0,number=0;
if(power!=0)
{
x = 1;
for (int i=1; i <=power; i++)
x = x*2;
number=num*x;
}
else
{
x=1;
number=num*x;
}
return number
{

الدالة توحي أنها توجد الـpower لكن الكود فيه خطأ :ph34r: ,

على العموم , هذا الكود يوجد الـ power ..

int Calculate(int num,int power)
{
if(power==0)
return 1  ;
return (Calculate(num,power-1)*num);
}

أتمنى يكون المطلوب ,

بالتوفيق ,

تم تعديل هذه المشاركة بواسطة إشراقــه فجــر في 26 مايو 2010 في 20:33

سبحآن الله وبحمده .. سبحآن الله العظيم .. ,

#9

يا أخي سرمد, من فضلك إستخدم ال tag الخاص بالكود

#10
{هويدي} كتب:

يا أخي سرمد, من فضلك إستخدم ال tag الخاص بالكود

بصراحه مااعرف طريقه استخدامه

#11

هل الدالة معطاه لك في السؤال ام أنت من كتبها ؟

tvquran_6.gif

#12

اخت اشراقه

تحويلك للداله غير من عمالها وغير الاوت بوت

اخ فهد الكود الاتوب مو مو حل للسوال لانه يطلع ارقام كيثيره وعدها يطبع اكبر رقمين

لا هذى داله فى كود

وهذا هو الكود بالكامل

#include <iostream>

using namespace std;

int Calculate(int num,int power)

{

int x=0,number=0;

if(power!=0)

{

x = 1;

for (int i=1; i <=power; i++)

x = x*2;

number=num*x;

}

else

{

x=1;

number=num*x;

}

return number;

}

bool check(int num)

{

int mo=0;

bool flag=true;

while(num>=1)

{

mo=num%10;

if(mo!=0 && mo!=1)

{

flag=false;

}

num/=10;

}

return flag;

}

int main()

{

int binary=0,power=0,number=0;

bool flag=false;

while(flag==false)

{

"cout <<"Enter the number :";

cin>>binary;

flag = check(binary);

if(flag==true)

{

while(binary>=1)

{

number+=Calculate(binary%10,power);

binary/=10;

++power;

}

int bas=1+number;

cout <<"\n\n"<<binary<<"in base 2 is "<< number<<"in base "<<bas<<endl;

}

else

cout << "\n\nError the number 0s and 1s.\n\n" << endl;

}

return 0;

}

#13

هذا تحويل لها جرب الكود:

int Calculate(int num,int power)
{
 return (power!=0)? Calculate(num,power-=1)*2: num;
}
tvquran_6.gif

#14

ايه هذا التحويل صحيح الله يجزاك خير

ولكن مصفوفه عكس الاقطارالمكونه من 10 اعمده وصفوف لماستطيع التوصل لحلها

#15
اقتباس
ولكن مصفوفه عكس الاقطارالمكونه من 10 اعمده وصفوف لماستطيع التوصل لحلها

راجع مشاركة رقم 5

tvquran_6.gif

#16

طيب هذا الكود الاوت بوت مايوصل الى حل السوال يطلع اوت بوت مختلف

#17

الكود التالى يقوم بتبديل قيم عناصر القطر الرئيسى بالثانوى و قيم القطر الثانوى بالرئيسى داخل مصفوفه مربعه 10x10

#include <iostream>
#include <iomanip>
using namespace std;

int main()
{
	int mat[10][10], swap;
	int i, j;

	for(i=0; i<10; i++)
		for(j=0; j<10; j++)
		{
#ifdef USER_ADD_VAL
			printf("mat[%d][%d]=", i, j);
			scanf("%d",&mat[j]);
#else
			static int x = 0;
			x++;
			mat[j] = x;
#endif
		}

		printf("your input matrix is:\n\n");
		for(i=0; i<10; i++)
		{
			for(j=0; j<10; j++)
				cout << setw(5) << mat[j];

			cout << endl;
		}


		for (i=0; i<10; i++)
		{
			swap = *(*mat + i*11);
			*(*mat + i*11) = *(*mat + (i+1)*9);
			*(*mat + (i+1)*9) = swap;
		}

		printf("\nyour matrix after swapping diagonals:\n\n");
		for(i=0; i<10; i++)
		{
			for(j=0; j<10; j++)
				cout << setw(5) << mat[j];

			cout << endl;
		}

		getchar();
		return 0;
}

لجعل المستخدم يدخل عناصر المصفوفه بنفسه قم بتعريف الماكرو USER_ADD_VAL قبل الداله main و إذا تركت الكود على الوضع الحالى سيتم ملء عناصر المصفوفه بالأرقام من 1 و حتى 100

لفهم كيفية عمل المؤشرات راجع موضوع كيفية إسناد قيم مصفوفة ثنائية إلى مصفوفة أحادية و بالأخص المشاركه الخامسه و التى تحتوى على تفصيل و شرح الكود.

و الله ولى التوفيق

تم تعديل هذه المشاركة بواسطة Muhammad alaa في 27 مايو 2010 في 01:37

مدونتي: C++ Tips and Tricks

#18

بصراحه الكود اللى كتبته صعب جدا وانا مافهمته لانى مبتدئه

والاوت بوت حقه تطلع ارقام كثيره يعنى غير مفهومه

انا حاولت محاوله

#include <iostream>

using namespace std;

void reverseDiagonal(int a[10][10],int b[10][10]){

{for(int c=9;c<=0;c--)

for(int r=9;r<=0;r--)

b[c][r]=a[c][r];}

{for(int c=9;c<=0;c--)

for(int r=0;r>2;r++)

b[c][r]=a[c][r];

}

int main(){

const int s1=10,s2=10;

cin>> a[d];

reverseDiagonal( a[10][10], b[10][10]);

return 0;

}

#19

السلام عليكم .

جرب هذا الكود يطلب من المستخدم أدخال المصفوفه ثم يظهرها ويظهر اثر الدالة عليها

#include <iostream>
using namespace std;


void reverse(int *arr[],int n){
int t1,t2;

for(int i=0;i<n/2;i++){
t1=arr; 
arr=arr[n-i-1][n-i-1];
arr[n-i-1][n-i-1]=t1;
t2=arr[n-i-1]; 
arr[n-i-1]=arr[n-i-1];
arr[n-i-1]=t2;
}





}
int main ()
{
int **arr;
const int N=10;



arr=new int*[N];
for(int i=0;i<N;i++)
arr=new int[N];
cout<<"Enter Matrix 10*10:\n";
for(int r=0;r<N;r++){
for(int c=0;c<N;c++){
cin>>arr[r][c]; //for enter user

}}

cout<<endl<<endl;
for(int r=0;r<N;r++){
for(int c=0;c<N;c++){
cout<<arr[r][c]<<" ";
}
cout<<endl;
}
cout<<endl<<endl;
reverse(arr,N);

for(int r=0;r<N;r++){
for(int c=0;c<N;c++){
cout<<arr[r][c]<<" ";
}
cout<<endl;
}


cin.get();cin.get();

}
1
tvquran_6.gif

#20

مافى فايده

#21
for (i=0; i<10; i++)
                {
                        swap = *(*mat + i*11);
                        *(*mat + i*11) = *(*mat + (i+1)*9);
                        *(*mat + (i+1)*9) = swap;
                }

الكود السابق هو المسئول عن تبديل قيم عناصر القطر الرئيسى بالمصفوفه و التى تتكون من 10 صفوف و 10 أعمده، (و يستخدم المؤشرات كما طلب :ph34r: ).

شرح تلك السطور موجود

بالموضوع كيفية إسناد قيم مصفوفة ثنائية إلى مصفوفة أحادية داخل المشاركه الخامسه.

و الله ولى التوفيق

مدونتي: C++ Tips and Tricks

#22
سرمد الليل كتب:

مافى فايده

أختي سرمد , ما أدري وش المشكلة عندك .. لأن الأكواد سليمة ,

هذا كودجميل جداً :P , لكن ليس بمستوى أكواد الأخوة :ph34r: ,

#include <iostream>
using namespace std ;
void reverse(int *a[],int len){
int  **b ;
int i,n;
b=new int*[len];
for(int i=0;i<len;i++)
b=new int[len];
for(i=0, n=len-1 ; i<len,n>=0; i++,n--)
{
b=a;
b[n]=a[n];
}
for(i=0, n=len-1 ; i<len ,n>=0; i++,n--)
{
a=b[n][n];
a[n]=b[n];
}
}
int main()
{
int **a;
int len ;
cin>>len ;
a=new int*[len];
for(int i=0;i<len;i++)
a=new int[len];
for(int i=0 ; i<len ; i++)
for(int j=0 ; j<len ; j++)
cin>>a[j];
cout<<endl ;
for(int i=0 ; i<len ; i++){
for(int j=0 ; j<len ; j++)
cout<<a[j]<<" ";
cout<<endl;
}
cout<<endl ;
reverse(a,len);
for(int i=0 ; i<len ; i++){
for(int j=0 ; j<len ; j++)
cout<<a[j]<<" ";
cout<<endl;
}
return 0;
}

سبحآن الله وبحمده .. سبحآن الله العظيم .. ,

#23

فقط وضح اين تكمن لديك المشكله .

هل الكود لا يعمل.

إذا كان يعمل ماذا تريد منه بالضبط .

اذا كان هناك خطأ وضح ماهو الخطأ.

جميع الاكواد بالمشاركات ليس بها مشكل.

tvquran_6.gif

#24

اخت اشراقه لما ادخل عناطر المصفوفه يرجع يطبع وينقص عامود واحد

اخ فهد والله مدرى بس لما يطلع الاوت بوت يطلع ارقام متلخبطه كثيره يعنى اوت بوت مو مفهوم

طيب هذى كود لو استعمل داله rond يصير اسهل من اليوزر يدخل ميه رقم صح؟

ولو اكتب الكود بدون بوينتر يصير اسهل صح؟

#include <iostream>

using namespace std;

#define row 10

#define col10

int jimmy [col][row];

int n,m;

int main ()

{

int Revers[col*2]={0};

int item=1;

for (n=0;n<col;n++)

for (m=0;m<row;m++)

{

jimmy[n][m]=item;

item++;

}

int index=0,lenght=4,index01=1;

for(n=0;n<row;n++)

{

if(n<=lenght)

{

Revers[index]=jimmy[n][n];

Revers[index01]=jimmy[n][lenght];

}

else

{

Revers[index]=jimmy[n][lenght];

Revers[index01]=jimmy[n][n];

}

index=index+2;

index01=index01+2;

lenght--;

}

for (n=0;n<(col*2);n++)

cout << Revers[n] << " ";

int j=9,z=4;

for(n=0;n<col;n++)

{

if(n<col/2)

{

jimmy[n][n]=Revers[j];

jimmy[n][z]=Revers[j-1];

}

else

{

jimmy[n][n]=Revers[j-1];

jimmy[n][z]=Revers[j];

}

j=j-2;

z--;

}

cout << endl;

cout << endl;

for (n=0;n<col;n++)

{

for (m=0;m<row;m++)

{

cout << jimmy[n][m] << " ";

item++;

}

cout << endl;

}

return 0;

}

تم تعديل هذه المشاركة بواسطة سرمد الليل في 27 مايو 2010 في 16:53

#25

بالنسبة للظهور بشكل غير منظم فهو أمر طبيعي عندما تدخل أرقام ليست بنفس الطول

جرب أدخال الرقام فقط بين 0 و 9 سيظهر لك مرتب

طبعا تستطيع تعديل الكود ليناسب اي طول

الاكواد لديك عدل كما تشاء بها لتصل الي ماتريد

tvquran_6.gif

مواضيع مشابهة