موقع طلبة جامعة البحرين

يمكنك تصفح الموقع كزائر ولكن ندعوك لتسجيل عضوية خاصة بك لتحصل على كافة الصلاحيات مثل تنزيل ملفات المكتبة وقراءة تعليقات هيئة التدريس وغيرها. يمكنك الحصول على عضوية مجانية بالضغط على زر تسجيل. إذا قمت بالتسجيل مسبقا فيمكنك الضغط على زر دخول.

تسجيل دخول
  • قسم المكتبة الجامعية مغلق مؤقتا بعد الاستهداف التي تعرضت له بعض خدمات أمازون في البحرين، جاري استرجاع الملفات ونقلها إلى سيرفرات جديدة وسيتم بعدها اعادة افتتاح المكتبة

ITCS112 - ITCS104 - ITCS102 للفصل الصيفي 2014 - 2015

السلام عليكم .. ممكن تشرحوون لنا جبتر 10 .. << وجزاكم الله خير ..<< ع الاقل تفهمونا ايش صاير فييييه << متوهقه حدي ...

بشكل عام جبتر 10 عبارة عن تطبيقات على المصفوفات
أو بمعنى آخر عمليات تجرى على المصفوفات
العمليات هي 1.البحث 2.الترتيب 3.الحذف 4.الإضافة
تكتب الأسطر البرمجية على شكل دوال تستدعى من الدالة الرئيسة

1.البحث Search
ينقسم لنوعين:
أ. البحث التسلسلي Sequential Search
و هو أبسط أنواع البحث و أسهل لكن أبطأ في إيجاد العنصر المطلوب البحث عنه
لأن الدالة تبحث عن كل عنصر من أول عنصر إلى العنصر المطلوب
في البداية تفحص أول عنصر يعني في الموقع 0- index 0 -إن كان هو العنصر المطلوب يوقف عملية البحث و إذا لا يروح للعنصر اللي بعده
ينطبق نفس الشيء على البحث في مصفوفة مرتبة Sequential Search in Ordered List
2.البحث الثنائي Binary Search
هو أسرع من النوع السابق لكنه معقد في كتابة الأسطر البرمجية
و هو يعتمد على تقسيم المصفوفة إلى جزئين
و تتوسطهم قيمة في الوسط
إن كانت القيمة المراد البحث عنها تساوي القيمة في الوسط يوقف البحث
أما إذا كانت أصغر يبحث في الجزء الأول من المصفوفة المقسمة
و إذا أكبر يبحث في الجزء الثاني منها
هذا النوع من البحث ما يشتغل إلا في مصفوفة مرتبة

2.الترتيب Sorting
أ.الترتيب الفقاعي Bubble Sort
هذا النوع من الترتيب يقارن كل قيميتن على التوالي
فإذا القيمة الأولى أكبر من الثانية يبدل بينهم
أما إذا كانت أصغر أو يساوي فيتركهم
و يكرر العملية و بعدها يرجع للبداية و العملية نفسها
يوقف لما تترتب المصفوفة
ب.الترتيب الانتقائي Selection Sort
في هذا النوع يبحث عن أصغر رقم في المصفوفة
حتى يبدله بأول عنصر في المصفوفة
بعدها يبحث عن ثاني أصغر عنصر و يبدله بثاني عنصر
و يكرر العلمية لما تترتب المصفوفة

3.الحذف Delete
تحذف الدالة العنصر المراد حذفه بعدها يحرك العناصر على لليسار و يقلل الحجم المستغل للعناصر

4.الإضافة Insert
تزيد الدالة الحجم المستغل للعناصر و تحرك العناصر لليمين من موقع محدد يضاف فيه عنصر معين
 
السلام عليكم .اخباركم . ممكن احد يساعدني في السوال مال الاسايمنت انا كتبت الفانكشن بس صراحتن توهقت في المين ماعرف اكتبه
write a function that takes an array, the size of the array, and a newitem. Your function should insert the newitem in the middle of the array. write a main to test your function
#include<iostream>
using namespace std;
void insert middle (int a[],int &&length, int newitem){
int pos =(length/2)
for (int i=length; i<lpos; i++)
a==a[i-1]
a[pos]=newitem;
length++
}
int main()
{
int newitem=0;
int length =0;
cin>>a
cout<<a
return 0;
}

ممكن احد يساعدني؟
 
السلام عليكم .اخباركم . ممكن احد يساعدني في السوال مال الاسايمنت انا كتبت الفانكشن بس صراحتن توهقت في المين ماعرف اكتبه
write a function that takes an array, the size of the array, and a newitem. Your function should insert the newitem in the middle of the array.write a main to test your function
#include<iostream>
using namespace std;
void insert middle (int a[],int &&length, int newitem){
int pos =(length/2)
for (int i=length; i<lpos; i++)
a==a[i-1]
a[pos]=newitem;
length++
}
int main()
{
int newitem=0;
int length =0;
cin>>a
cout<<a
return 0;
}

ممكن احد يساعدني؟


في شغلات واجد غلط :nosweat:
كود:
void insert_middle (int a[],int &length, int newitem)
{
	int pos =(length/2);
	for (int i=length; i>pos; i--)
		a[i]=a[i-1];
	a[pos]=newitem;
	length++;
}
int main()
{
	int a[10]={1,2,3,4,5,6},size=6,item;
	cout<<"Enter Number: ";
	cin>>item;
	insert_middle(a,size,item);
	for (int i=0;i<size;i++)
		cout<<a[i]<<" ";
	cout<<endl;
	return 0;
}
 
سلاام ,, سااعدوني في حل الاسايمنت
Write a function named insertAtPosition that takes an array of integers (x), the number of elements in the array (len) passed by reference, a positive integer (pos), and an integer number (value). The function should insert the value at the position specified by pos.
الي حليته :
PHP:
void insertAtPosition(int x[], int length, int pos){	int temp;	for(int i=length-1 ; i>=pos; i--)	{		temp=x[i+1];		x[i+1]=x[i];		x[i]=temp;	}	length++;	}
 
سلاام ,, سااعدوني في حل الاسايمنت
Write a function named insertAtPosition that takes an array of integers (x), the number of elements in the array (len) passed by reference, a positive integer (pos), and an integer number (value). The function should insert the value at the position specified by pos.
الي حليته :
PHP:
void insertAtPosition(int x[], int length, int pos)
{   
 int temp;
for(int i=length-1 ; i>=pos; i--)  
  {      
  temp=x[i+1]; 
       x[i+1]=x[i];   
     x[i]=temp; 
   }   
 length++;
    }
 
سلاام ,, سااعدوني في حل الاسايمنت
Write a function named insertAtPosition that takes an array of integers (x), the number of elements in the array (len) passed by reference, a positive integer (pos), and an integer number (value). The function should insert the value at the position specified by pos.
الي حليته :
PHP:
void insertAtPosition(int x[], int length, int pos)
{   
 int temp;
for(int i=length-1 ; i>=pos; i--)  
  {      
  temp=x[i+1]; 
       x[i+1]=x[i];   
     x[i]=temp; 
   }   
 length++;
    }

كود:
void insertAtPosition(int x[], int length, int pos,int value)
{   
	int temp;
	for(int i=length-1 ; i>=pos; i--)  
	{      
		x[i+1]=x[i];
	}
	x[pos]=value;
	length++;
}
 
كود:
void insertAtPosition(int x[], int length, int pos,int value)
{   
    int temp;
    for(int i=length-1 ; i>=pos; i--)  
    {      
        x[i+1]=x[i];
    }
    x[pos]=value;
    length++;
}

الحل يبين ليي صحيح مافيه مشكلة. بس نقطة بسيطة ان الـ length لازم يكون passed by reference. يعني في الدكليريشن مال الفنكشن بيكون جدي اعتقد :
(void insertAtPosition(int x[], int &length, int pos,int value

أنا مادري عن المقرر لان ما ادرسه بعدي. بس الاري شلون تقدر تزيد عدد الالمنتس داخله و اهو العدد لازم يكون const ؟ يعني اهو الاري في الميموري حسب اللي شفت في الكتاب اعتقد يكون sequence ورا بعض. يعني اذا زيدت العدد مال الاري في الرن تايم بيصير اوفررايت للي بعده في الميموري. انا جربت الكود عشان اتأكد. أشتغل بس بعدين طلع ليي ايرور ان في corruption في الاري أو شي جدي. مو لازم نستخدم الـ vector type في هالحالة ؟
 
الحل يبين ليي صحيح مافيه مشكلة. بس نقطة بسيطة ان الـ length لازم يكون passed by reference. يعني في الدكليريشن مال الفنكشن بيكون جدي اعتقد :
(void insertAtPosition(int x[], int &length, int pos,int value

أنا مادري عن المقرر لان ما ادرسه بعدي. بس الاري شلون تقدر تزيد عدد الالمنتس داخله و اهو العدد لازم يكون const ؟ يعني اهو الاري في الميموري حسب اللي شفت في الكتاب اعتقد يكون sequence ورا بعض. يعني اذا زيدت العدد مال الاري في الرن تايم بيصير اوفررايت للي بعده في الميموري. انا جربت الكود عشان اتأكد. أشتغل بس بعدين طلع ليي ايرور ان في corruption في الاري أو شي جدي. مو لازم نستخدم الـ vector type في هالحالة ؟

ما أنتبهت لسالفة الرفرنس بس عدلت الكود :RpS_tongue: محد شاف:RpS_lol:
اما عن سالفة طول الأري السؤال يقول " number of elements in the array " يعني مو لازم يكون العدد هو الطول
بس في نوعية بتاخذها في مقرر 104 " Dynamic Array " هذي طولها مو لازم ثابت :smile2:
الـ vector هذا كلاس بارز فيه فنكشنات تستخدمها .. بتتعلمون في 215 شلون تصير بعد :whistling:
 
ما أنتبهت لسالفة الرفرنس بس عدلت الكود :RpS_tongue: محد شاف:RpS_lol:
اما عن سالفة طول الأري السؤال يقول " number of elements in the array " يعني مو لازم يكون العدد هو الطول
بس في نوعية بتاخذها في مقرر 104 " Dynamic Array " هذي طولها مو لازم ثابت :smile2:
الـ vector هذا كلاس بارز فيه فنكشنات تستخدمها .. بتتعلمون في 215 شلون تصير بعد :whistling:
أها جدي يعني. عن الداينامك اري للحين ما اعرف عنه ف ما عندي أي فكرة. يلا نعيش و نشوف ههههه. و شكرا ع التوضيح :smile:
 
اذا ماعليكم امر بغيت تجوفون لي الايرور :tears:

هاي سؤال الجزئية الي فيها ايرور



Write a function SortbyID which uses bubble sort to sort array Employees
according to their IDs in descending
order. Use Function printData to check your results.









PHP:
#include
<iostream>

#include
<string>

using
 namespace std;


struct
 nameType

{

	
string fn,ln;

};


struct
 dateType

{

	
int dd,mm,yy;

};


struct
 EInfoType

{


	
long ID;

	
nameType name;

	
int sal;

	
dateType dob;


};


void
 getData(EInfoType E[], int size)

{

	
for(int i=0;i<size;i++)

	{

		cout<<
"Enter ID : ";

		cin>>
E[i].ID;

		cout<< 
"Enter First name followed by Last name : ";

		cin>>
E[i].name.fn>> E[i].name.ln;

		cout<<
"Enter SAlary  : ";

		cin>>
E[i].sal;

		cout<<
"Enter Birthday dd mm yy : ";

		cin>>
E[i].dob.dd>>E[i].dob.mm>>E[i].dob.yy;

	}


}


void
 printData(EInfoType E[], int size)

{

	
for(int i=0;i<size;i++)

	{

		cout<<
"EmployeeID : "<< E[i].ID<<endl;

		cout<<
"Employee name : " <<E[i].name.fn<<" "<< E[i].name.fn<<endl;

		cout<<
"Employee SAlary  : "<<E[i].sal<<endl;

		cout<<
"Employee Birthday : "<<E[i].dob.dd<<"/"<<E[i].dob.mm<<"/"<<E[i].dob.yy<<endl;

	}


}


void
 printLowSalary(EInfoType E[], int size)

{

	cout<<
"List of Emplyees with Salaries less than 200 BD :"<<endl;

	
for (int i=0;i<size; i++)

		
if(E[i].sal<200)

		{

			cout<<
E[i].ID<<"\t"<<E[i].name.ln<<endl;

			

		}


 

}


 

void
 SortbyID(EInfoType E[] , int size )

{

    

    
int temp;


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

    
for(int j=0;j<size-i;j++)

    
if (EInfoType E[j+1]>EInfoType E[j]);  

   {

        temp=
EInfoType E[j];

        
EInfoType E[j]=EInfoType E[j+1];

        
EInfoType E[j+1]=temp;

        

   }


 

}


int
 main()

{

	
EInfoType list[20];

	
int size;

	

	cout<<
"Enter How amny Emplyes you want to enter (<20)";

	cin>>size;


	getData(list,size);


 

	printData(list,size);


 

	printLowSalary(list,size);

	

	SortbyID(list,size);

	

	  system(
"pause");

    
return 0;

    }  


 
 
اذا ماعليكم امر بغيت تجوفون لي الايرور :tears:

هاي سؤال الجزئية الي فيها ايرور



Write a function SortbyID which uses bubble sort to sort array Employees
according to their IDs in descending
order. Use Function printData to check your results.









PHP:
#include
<iostream>

#include
<string>

using
 namespace std;


struct
 nameType

{

    
string fn,ln;

};


struct
 dateType

{

    
int dd,mm,yy;

};


struct
 EInfoType

{


    
long ID;

    
nameType name;

    
int sal;

    
dateType dob;


};


void
 getData(EInfoType E[], int size)

{

    
for(int i=0;i<size;i++)

    {

        cout<<
"Enter ID : ";

        cin>>
E[i].ID;

        cout<< 
"Enter First name followed by Last name : ";

        cin>>
E[i].name.fn>> E[i].name.ln;

        cout<<
"Enter SAlary  : ";

        cin>>
E[i].sal;

        cout<<
"Enter Birthday dd mm yy : ";

        cin>>
E[i].dob.dd>>E[i].dob.mm>>E[i].dob.yy;

    }


}


void
 printData(EInfoType E[], int size)

{

    
for(int i=0;i<size;i++)

    {

        cout<<
"EmployeeID : "<< E[i].ID<<endl;

        cout<<
"Employee name : " <<E[i].name.fn<<" "<< E[i].name.fn<<endl;

        cout<<
"Employee SAlary  : "<<E[i].sal<<endl;

        cout<<
"Employee Birthday : "<<E[i].dob.dd<<"/"<<E[i].dob.mm<<"/"<<E[i].dob.yy<<endl;

    }


}


void
 printLowSalary(EInfoType E[], int size)

{

    cout<<
"List of Emplyees with Salaries less than 200 BD :"<<endl;

    
for (int i=0;i<size; i++)

        
if(E[i].sal<200)

        {

            cout<<
E[i].ID<<"\t"<<E[i].name.ln<<endl;

            

        }


م€€

}


م€€

void
 SortbyID(EInfoType E[] , int size )

{

    

    
int temp;


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

    
for(int j=0;j<size-i;j++)

    
if (EInfoType E[j+1]>EInfoType E[j]);  

   {

        temp=
EInfoType E[j];

        
EInfoType E[j]=EInfoType E[j+1];

        
EInfoType E[j+1]=temp;

        

   }


م€€

}


int
 main()

{

    
EInfoType list[20];

    
int size;

    

    cout<<
"Enter How amny Emplyes you want to enter (<20)";

    cin>>size;


    getData(list,size);


م€€

    printData(list,size);


م€€

    printLowSalary(list,size);

    

    SortbyID(list,size);

    

      system(
"pause");

    
return 0;

    }  


م€€

عندج جم غلط في الكود مالج خيو. عدلتهم لج في الكود اللي تحت. بكتب ويش اللي غيرته و ليش :smile:


كود:
void SortbyID(EInfoType E[] , int size ){    
EInfoType temp;
    for(int i=0;i<size-1;i++){
        if ( E[i].ID > E[i+1].ID){
            temp= E[i+1];
            E[i+1] = E[i];
            E[i] = temp;
        }
    }
}


1-أول شي الـ temp لاحظي هني ان مو int. و هالشي لان انا بخزن فيه EInfoType مؤقتا مو بس رقم واحد نفس اذا نتعامل مع أري يتكون من integers. يعني عموما اذا تبين تسوين temp خليه من نفس نوع الأري اللي تتعاملين وياه. في هالحالة EInfoType.


2-الـ bubble sort يقارن بين كل عنصر في الأري و العنصر اللي بعده (أو قبله. نفس الشي على حسب الذوق:RpS_lol:). يعني تحتاجين for loop واحد بس تقارنين داخله الأيدي مال و الأيدي مال [i+1]. و لاحظي التبديل بين العنصرين في الأري باستخدام الtemp شلون. (يخربط شوي :RpS_sleep:)


3-عشان تستخدمين معلومات داخل مثلا struct او class أو array ما تحتاجين تكتبين الـ data type كل مرة. يعني عشان اشوف الأيدي مال الموظف الأول ما أكتب EInfoType E[0].id بس أكتب E[0].id.


بس لاحظي الكود شوفيه بتعرفين ويش صاير و شلون. بالتوفيق :smile2:
 
عندج جم غلط في الكود مالج خيو. عدلتهم لج في الكود اللي تحت. بكتب ويش اللي غيرته و ليش :smile:


كود:
void SortbyID(EInfoType E[] , int size ){    
EInfoType temp;
    for(int i=0;i<size-1;i++){
        if ( E[i].ID > E[i+1].ID){
            temp= E[i+1];
            E[i+1] = E[i];
            E[i] = temp;
        }
    }
}


1-أول شي الـ temp لاحظي هني ان مو int. و هالشي لان انا بخزن فيه EInfoType مؤقتا مو بس رقم واحد نفس اذا نتعامل مع أري يتكون من integers. يعني عموما اذا تبين تسوين temp خليه من نفس نوع الأري اللي تتعاملين وياه. في هالحالة EInfoType.


2-الـ bubble sort يقارن بين كل عنصر في الأري و العنصر اللي بعده (أو قبله. نفس الشي على حسب الذوق:RpS_lol:). يعني تحتاجين for loop واحد بس تقارنين داخله الأيدي مال و الأيدي مال [i+1]. و لاحظي التبديل بين العنصرين في الأري باستخدام الtemp شلون. (يخربط شوي :RpS_sleep:)


3-عشان تستخدمين معلومات داخل مثلا struct او class أو array ما تحتاجين تكتبين الـ data type كل مرة. يعني عشان اشوف الأيدي مال الموظف الأول ما أكتب EInfoType E[0].id بس أكتب E[0].id.


بس لاحظي الكود شوفيه بتعرفين ويش صاير و شلون. بالتوفيق :smile2:





مشكور اخوي جزاك الله خير (=
 
عندج جم غلط في الكود مالج خيو. عدلتهم لج في الكود اللي تحت. بكتب ويش اللي غيرته و ليش :smile:


كود:
void SortbyID(EInfoType E[] , int size ){    
EInfoType temp;
    for(int i=0;i<size-1;i++){
        if ( E[i].ID > E[i+1].ID){
            temp= E[i+1];
            E[i+1] = E[i];
            E[i] = temp;
        }
    }
}


1-أول شي الـ temp لاحظي هني ان مو int. و هالشي لان انا بخزن فيه EInfoType مؤقتا مو بس رقم واحد نفس اذا نتعامل مع أري يتكون من integers. يعني عموما اذا تبين تسوين temp خليه من نفس نوع الأري اللي تتعاملين وياه. في هالحالة EInfoType.


2-الـ bubble sort يقارن بين كل عنصر في الأري و العنصر اللي بعده (أو قبله. نفس الشي على حسب الذوق:RpS_lol:). يعني تحتاجين for loop واحد بس تقارنين داخله الأيدي مال و الأيدي مال [i+1]. و لاحظي التبديل بين العنصرين في الأري باستخدام الtemp شلون. (يخربط شوي :RpS_sleep:)


3-عشان تستخدمين معلومات داخل مثلا struct او class أو array ما تحتاجين تكتبين الـ data type كل مرة. يعني عشان اشوف الأيدي مال الموظف الأول ما أكتب EInfoType E[0].id بس أكتب E[0].id.


بس لاحظي الكود شوفيه بتعرفين ويش صاير و شلون. بالتوفيق :smile2:


جان تعدم السالفة :RpS_lol:
لازم فور لوب ثنتين


اذا ماعليكم امر بغيت تجوفون لي الايرور

هاي سؤال الجزئية الي فيها ايرور

جذي تصير الفنكشن :smile2:

كود:
void SortbyID(EInfoType E[] , int size )
{
	EInfoType temp;
    for(int i=1;i<size;i++)
    for(int j=0;j<size-i;j++)
    if ( E[j+1].ID> E[j].ID) 
	{
		temp= E[j];
        E[j]= E[j+1];
		E[j+1]=temp;
	}
}
 
PHP:
#include <iostream>
#include <string>
using namespace std;

struct nameType{
string firstName, lastName;
};

struct dateType{
int day,month,year;
};

struct personalInfoType {
long ID;
nameType name;
int salary;
dateType DateOfBirth;
};

void getData(personalInfoType Employee[], int numEmployee){   
    for(int i=0;i<numEmployee;i++){
        cout<<"Enter ID: ";
        cin>>Employee[i].ID;

        cout<<"Enter First name followed by Last name: ";
        cin>>Employee[i].name.firstName>>Employee[i].name.lastName;

        cout<<"Enter Salary: ";
        cin>>Employee[i].salary;

        cout<<"Enter Birthday(day-month-year): ";
        cin>>Employee[i].DateOfBirth.day;
        cin>>Employee[i].DateOfBirth.month;
        cin>>Employee[i].DateOfBirth.year;
    }
}


void printData(personalInfoType Employee[], int numEmployee){    
    for(int i=0;i<numEmployee;i++){
        cout<<"EmployeeID: "<<Employee[i].ID<<endl;
        cout<<"Employee name: " <<Employee[i].name.firstName<<" "<<Employee[i].name.lastName<<endl;
        cout<<"Employee Salary: "<<Employee[i].salary<<endl;
        cout<<"Employee Birthday: "<<Employee[i].DateOfBirth.day<<"-"<<Employee[i].DateOfBirth.month<<"-"<<Employee[i].DateOfBirth.year<<endl;
    }
}

void IncreaseLowSalary (personalInfoType Employee[], int numEmployee)
{
    for (int i=0;i<numEmployee; i++)
        if(Employee[i].salary<200){
            cout<<Employee[i].salary + 55;
        }
}

void SortByID(personalInfoType Employee[], int numEmployee){    
personalInfoType temp;

for(int i=1;i<numEmployee-1;i++)
    for(int i=0;i<numEmployee-1;i++){
        if ( Employee[i].ID > Employee[i+1].ID){
            temp= Employee[i+1];
            Employee[i+1] = Employee[i];
            Employee[i] = temp;
        }
    }
}


int main(){

personalInfoType Employee[20];
int numEmployee;

cout<<"How many employee you want to enter, should <20  ";
cin>>numEmployee;

getData(Employee, numEmployee);
printData(Employee, numEmployee);
IncreaseLowSalary(Employee, numEmployee);
SortByID(Employee, numEmployee);

system("pause");
return 0;
}


ليش اذا كان اقل من 200 .. ما يزيد 55 وقت يطبع؟
^ في فنكشن void IncreaselowSalary
 
جان تعدم السالفة :RpS_lol:
لازم فور لوب ثنتين




جذي تصير الفنكشن :smile2:

كود:
void SortbyID(EInfoType E[] , int size )
{
    EInfoType temp;
    for(int i=1;i<size;i++)
    for(int j=0;j<size-i;j++)
    if ( E[j+1].ID> E[j].ID) 
    {
        temp= E[j];
        E[j]= E[j+1];
        E[j+1]=temp;
    }
}

أي صح كان عندي غلط :RpS_lol:
انا سويت iteration واحد بس, المفروض للين تترتب. بس الفور لوب الاولى ممكن تبدلها بـ while لوب و تخلي flag. بحيث ان اذا اللستة ترتبت تسوي break. جدي يكون أسرع.
الحلين صح :RpS_sleep:

كود:
void SortbyID(EInfoType E[] , int size ){    EInfoType temp;
bool switched = false;
     do{
    switched = false;
    for(int i=0;i<size-1;i++){
            if ( E[i].ID > E[i+1].ID){
                   temp= E[i+1];
                    E[i+1] = E[i];
                    E[i] = temp;
                switched = true;
        }
    }while(switched);
    //no switch made.list is sorted
}
 
PHP:
#include <iostream>
#include <string>
using namespace std;

struct nameType{
string firstName, lastName;
};

struct dateType{
int day,month,year;
};

struct personalInfoType {
long ID;
nameType name;
int salary;
dateType DateOfBirth;
};

void getData(personalInfoType Employee[], int numEmployee){   
    for(int i=0;i<numEmployee;i++){
        cout<<"Enter ID: ";
        cin>>Employee[i].ID;

        cout<<"Enter First name followed by Last name: ";
        cin>>Employee[i].name.firstName>>Employee[i].name.lastName;

        cout<<"Enter Salary: ";
        cin>>Employee[i].salary;

        cout<<"Enter Birthday(day-month-year): ";
        cin>>Employee[i].DateOfBirth.day;
        cin>>Employee[i].DateOfBirth.month;
        cin>>Employee[i].DateOfBirth.year;
    }
}


void printData(personalInfoType Employee[], int numEmployee){    
    for(int i=0;i<numEmployee;i++){
        cout<<"EmployeeID: "<<Employee[i].ID<<endl;
        cout<<"Employee name: " <<Employee[i].name.firstName<<" "<<Employee[i].name.lastName<<endl;
        cout<<"Employee Salary: "<<Employee[i].salary<<endl;
        cout<<"Employee Birthday: "<<Employee[i].DateOfBirth.day<<"-"<<Employee[i].DateOfBirth.month<<"-"<<Employee[i].DateOfBirth.year<<endl;
    }
}

void IncreaseLowSalary (personalInfoType Employee[], int numEmployee)
{
    for (int i=0;i<numEmployee; i++)
        if(Employee[i].salary<200){
            cout<<Employee[i].salary + 55;
        }
}

void SortByID(personalInfoType Employee[], int numEmployee){    
personalInfoType temp;

for(int i=1;i<numEmployee-1;i++)
    for(int i=0;i<numEmployee-1;i++){
        if ( Employee[i].ID > Employee[i+1].ID){
            temp= Employee[i+1];
            Employee[i+1] = Employee[i];
            Employee[i] = temp;
        }
    }
}


int main(){

personalInfoType Employee[20];
int numEmployee;

cout<<"How many employee you want to enter, should <20  ";
cin>>numEmployee;

getData(Employee, numEmployee);
printData(Employee, numEmployee);
IncreaseLowSalary(Employee, numEmployee);
SortByID(Employee, numEmployee);

system("pause");
return 0;
}


ليش اذا كان اقل من 200 .. ما يزيد 55 وقت يطبع؟
^ في فنكشن void IncreaselowSalary

بلى يزيد، أول حاجا بيطبع المعلومات عادي
بعدين يطلع رقم بروحه بدون كلام قبله جرب حط
endl قبل وبعد الفنكشن وبتشوف الرقم :smile2:
 
أي صح كان عندي غلط :RpS_lol:
انا سويت iteration واحد بس, المفروض للين تترتب. بس الفور لوب الاولى ممكن تبدلها بـ while لوب و تخلي flag. بحيث ان اذا اللستة ترتبت تسوي break. جدي يكون أسرع.
الحلين صح :RpS_sleep:

كود:
void SortbyID(EInfoType E[] , int size ){    EInfoType temp;
bool switched = false;
     do{
    switched = false;
    for(int i=0;i<size-1;i++){
            if ( E[i].ID > E[i+1].ID){
                   temp= E[i+1];
                    E[i+1] = E[i];
                    E[i] = temp;
                switched = true;
        }
    }while(switched);
    //no switch made.list is sorted
}

بعد غلط :whistling:
فرضا اول رقمين ما غيرهم بيطلع من الوايل لوب .. وباقي اللسته ما ترتبت :nosweat:
 
بلى يزيد، أول حاجا بيطبع المعلومات عادي
بعدين يطلع رقم بروحه بدون كلام قبله جرب حط
endl قبل وبعد الفنكشن وبتشوف الرقم :smile2:

اي صح وانا اقول شسالفة..ما انتبهت له عدل لان ما حطيت اند لاين :nosweat:
 
PHP:
#include <iostream>
#include <string>
using namespace std;

struct nameType{
string firstName, lastName;
};

struct dateType{
int day,month,year;
};

struct personalInfoType {
long ID;
nameType name;
int salary;
dateType DateOfBirth;
};

void getData(personalInfoType Employee[], int numEmployee){   
    for(int i=0;i<numEmployee;i++){
        cout<<"Enter ID: ";
        cin>>Employee[i].ID;

        cout<<"Enter First name followed by Last name: ";
        cin>>Employee[i].name.firstName>>Employee[i].name.lastName;

        cout<<"Enter Salary: ";
        cin>>Employee[i].salary;

        cout<<"Enter Birthday(day-month-year): ";
        cin>>Employee[i].DateOfBirth.day;
        cin>>Employee[i].DateOfBirth.month;
        cin>>Employee[i].DateOfBirth.year;
    }
}


void printData(personalInfoType Employee[], int numEmployee){    
    for(int i=0;i<numEmployee;i++){
        cout<<"EmployeeID: "<<Employee[i].ID<<endl;
        cout<<"Employee name: " <<Employee[i].name.firstName<<" "<<Employee[i].name.lastName<<endl;
        cout<<"Employee Salary: "<<Employee[i].salary<<endl;
        cout<<"Employee Birthday: "<<Employee[i].DateOfBirth.day<<"-"<<Employee[i].DateOfBirth.month<<"-"<<Employee[i].DateOfBirth.year<<endl;
    }
}

void IncreaseLowSalary (personalInfoType Employee[], int numEmployee)
{
    for (int i=0;i<numEmployee; i++)
        if(Employee[i].salary<200){
            cout<<Employee[i].salary + 55;
        }
}

void SortByID(personalInfoType Employee[], int numEmployee){    
personalInfoType temp;

for(int i=1;i<numEmployee-1;i++)
    for(int i=0;i<numEmployee-1;i++){
        if ( Employee[i].ID > Employee[i+1].ID){
            temp= Employee[i+1];
            Employee[i+1] = Employee[i];
            Employee[i] = temp;
        }
    }
}


int main(){

personalInfoType Employee[20];
int numEmployee;

cout<<"How many employee you want to enter, should <20  ";
cin>>numEmployee;

getData(Employee, numEmployee);
printData(Employee, numEmployee);
IncreaseLowSalary(Employee, numEmployee);
SortByID(Employee, numEmployee);

system("pause");
return 0;
}


ليش اذا كان اقل من 200 .. ما يزيد 55 وقت يطبع؟
^ في فنكشن void IncreaselowSalary

جربت الكود شغال زي الفل. القصة (اعتقد) ان اللي يزيد الراتب يطبع الرقم سيدا بدون شي و طبعا وراه "Press any key...." ف يمكن ما شفته انت. لأن شغال أوكي عندي :smile2:
و بعد ما أدري انا بس مو لازم تزيد الراتب نفسه بدل انك تسوي ليه أوتبت + 50. يعني مو لازم Employee.salary += 50 و بعدين الأوتبت؟
 
بعد غلط :whistling:
فرضا اول رقمين ما غيرهم بيطلع من الوايل لوب .. وباقي اللسته ما ترتبت :nosweat:

لا أوكي. لأن هو ما بيرتب رقمين بعدين يجيك الكوندشن. أهو بيفتر ع اللستة كاملة داخل الفور لوب. بعدين بعد ما يخلص بيطلع ع الوايل و بيجيك اذا الفور سووت تغيير أو لا.إذا ما سوت يعني اللستة مرتبة ف بيطلع. :whistling:
 
عودة
أعلى أسفل