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

مالخطأ في برنامجي

بدأه سيف سوف في 9 يوليو 2011 · 5 رد · 716 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله وبركاته

أريد معرفة مالخطأ في برنامجي هذا والذي هوعبارة عن ترتيب جدول بخوارزمية الفقاعة Bubble

:sad: :sad: :sad:

#include<stdio.h>
#include<conio.h>
main()
{int min,i,j;
int t[4]={12,15,36,28};
for( i=0;i<4;i++ )
{ min=t;
for( j=1;i<3;j++ )
{
 if(min>t[j])
{
min=t[j];
t[j]=t;
t=min;
}
}
}      
for( i=0;i<4;i++ )
{
printf("t[%d]=%d",t);     
}     
getch();          
      }

قال الحسن البصري -رحمه الله : إياك والتسويف ، فإنك بيومك ولست بغدك، فإن يكن غداً لك فكن في غد كما كنت في اليوم ، وإن لم يكن لك غد لم تندم على ما فرطت في اليوم .

#2

رتب اولا الكود اخي ليسهل قرائته

#include<stdio.h>
#include<conio.h>
main()
{
	int min,i,j;
	int t[4]={12,15,36,28};
	for( i=0;i<4;i++ )
	{
		min=t;
		for( j=1;i<3;j++ )
		{
			 if(min>t[j])
			{
				min=t[j];
				t[j]=t;
				t=min;
			}
		}
	} 
	for( i=0;i<4;i++ )
	{
		printf("t[%d]=%d",t);     
	}
	getch();          
}

other ESTJ thing

اقتباس
Help Me To Help You

0xBAD00DAD.png

#3

حسناً، الخطأ الذي يمنع برنامجك من العمل هو:

for( j=1;i<3;j++ )

لأنك تقوم بزيادة j إلى اللانهاية حيث أنك تعتمد في شرط استمرار الحلقة على كون i < 3، وهذا سيظل محققاً دائماً لأنك لا تقوم بزيادة قيمة i داخل هذه الحلقة.

يوجد أيضاً في الكود بعض الأخطاء المنطقية، قمت بالتعديل المناسب بإذن الله:

#include<iostream>
using namespace std;

int main()
{
        int i, j;
	char a;
        int t[4]= {47,15,36,28};        
	for(i= 0; i < 3; i++)
        {
                for(j= i + 1; j < 4; j++)
                {
                         if(t > t[j])
                        {
				int temp;
                                temp= t[j];
                                t[j]= t;
                                t= temp;
                        }
                }
        } 
        for(i= 0; i < 4; i++)
        {
                cout<< t<< endl;
        }
	cin>> a;        
	return 0;          
}

لاحظ أنك لا تحتاج إلى متغير min، فقط تحتاج لمتغير مساعد temp أثناء تبديل القيم.

ملاحظة: استعملت مكتبة iostream وكائناتها لأنني لا أجيد التعامل مع المكتبات التي كنت تستعلمها، فليس من الضرورة أن تقوم بتغيير هذه الأمور.

بالتوفيق :)

2

هذه الجملة خاطئة  :wacko: 


#4
Abboodd كتب:

حسناً، الخطأ الذي يمنع برنامجك من العمل هو:

for( j=1;i<3;j++ )

لأنك تقوم بزيادة j إلى اللانهاية حيث أنك تعتمد في شرط استمرار الحلقة على كون i < 3، وهذا سيظل محققاً دائماً لأنك لا تقوم بزيادة قيمة i داخل هذه الحلقة.

يوجد أيضاً في الكود بعض الأخطاء المنطقية، قمت بالتعديل المناسب بإذن الله:

#include<iostream>
using namespace std;

int main()
{
        int i, j;
	char a;
        int t[4]= {47,15,36,28};        
	for(i= 0; i < 3; i++)
        {
                for(j= i + 1; j < 4; j++)
                {
                         if(t > t[j])
                        {
				int temp;
                                temp= t[j];
                                t[j]= t;
                                t= temp;
                        }
                }
        } 
        for(i= 0; i < 4; i++)
        {
                cout<< t<< endl;
        }
	cin>> a;        
	return 0;          
}

لاحظ أنك لا تحتاج إلى متغير min، فقط تحتاج لمتغير مساعد temp أثناء تبديل القيم.

ملاحظة: استعملت مكتبة iostream وكائناتها لأنني لا أجيد التعامل مع المكتبات التي كنت تستعلمها، فليس من الضرورة أن تقوم بتغيير هذه الأمور.

بالتوفيق :)

بارك الله فيك يا أخي على الاجابة

لكني أقصد بالمتغير min أني أعتبر أصغر عنصر في الجدول موجود في الخانة الأولى ثم أبدأ بالمقارنة مع الخانات الاخرى فإن وجدت مثلا أن الخانة 2 يوجد فيها عدد أقل من الخانه الأولى أقوم بالتغير بين الخانة الأولى والثانية وهكذا فهل أستطيع عمل ذالك بهذا الكود

:) :) :)

قال الحسن البصري -رحمه الله : إياك والتسويف ، فإنك بيومك ولست بغدك، فإن يكن غداً لك فكن في غد كما كنت في اليوم ، وإن لم يكن لك غد لم تندم على ما فرطت في اليوم .

#5

نعم لا مشكلة أعد المتغير min كما كان، لكني لا أرى له فائدة حقيقية هنا.

بالتوفيق :)

هذه الجملة خاطئة  :wacko: 


#6

شكرااا على مساعدتي ولقد تمكنت بفضلكم من اتمام برنامجي واصبح بهذا الشكل

#include<stdio.h>
#include<conio.h>
main()
{int min,i,j;

int t[4]={12,15,36,28};

   for( i=0;i<3;i++)
{         
       min=t;
       for( j=i+1;j<4;j++ )
            {
                  if(min>t[j])
                      {
                           min=t[j];
                           t[j]=t;
                            t=min;
                                      }
                                            }
                                                }      
  for( i=0;i<4;i++ )
{
        printf("t[%d]=%d \n",i,t);     
}     
   getch();        
        }

:) :) :lol:

1

قال الحسن البصري -رحمه الله : إياك والتسويف ، فإنك بيومك ولست بغدك، فإن يكن غداً لك فكن في غد كما كنت في اليوم ، وإن لم يكن لك غد لم تندم على ما فرطت في اليوم .

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