استخدام الـ pointer لقراءة الـ Array

-أكتب برنامج يقرأ من المستخدم سلسلة من char وأحفظها داخل Array ،ثم أطبع محتوى الـ Array كاملًا ولكن قم بتغيير كل vowel letter وضع في مكانه – ، وأخيرًا أطبع عدد الـ vowel letters التي في السلسلة . أستخدم الـ pointer للمرور على محتوى الـ Array.

الحل:

#include <iostream>
using namespace std;

void main()
{
  char ar[20];
  char *ptr = ar;
  int i = 0;

  cout << "Enter a list of characters ";
  cin >> ar;

 for (; *ptr != '\0'; ptr++)
 {
     if (*ptr == 'a' || *ptr == 'u' || *ptr == 'i' || *ptr == 'e' || *ptr == 'o')
    {
       *ptr = '_';
      i++;
    }//end if
 }//end for


 cout << "There are " << i << " vowel letters" << endl;
 cout << ar << endl; //print the array content

 system("pause");

}

البحث داخل Two Dimensional Array

-أكتب برنامج يحوي 2D Array مكوّن من 10 صفوف و 10 أعمدة، ثم أكتب 4 functions تؤدي التالي:

1-تقوم بتعبئئة الـ array بأرقام صحيحة.

2-تقوم بإيجاد أكبر رقم في صف محدد أو عمود محدد.

3-تقوم بإيجاد أصغر رقم في صف محدد أو عمود محدد.

4-تقوم بإيجاد أكبر رقم في القطر.

كل function تقوم بطباعة النتيجة ، ماعدا أول function فهي لتعبئة الـ array فقط .

في Main function أطبع قائمة للمستخدم تحوي التالي:

a.Find the largest number in a specific row or column
b.Find the smallest number in a specific row or column
c.Find the largest number in the diagonal
.d.Exit

  يستمر عرض القائمة مرة بعد أخرى إلى ان يختار المستخدم الخروج.

الحل:

في الحل التالي اخترت تعبئة الـ array بجدول الضرب من 1 إلى 10 ، وبإمكانك استخدام random function تقوم بتعبئته في كل مرة بأرقام جديدة ، أو أي خيار آخر يمكنك استخدامه .

  
 #include <iostream>
using namespace std;

void Read(int a[][10]);
void Large(int a[][10], int, char);
void Small(int a[][10], int, char);
void diagonal(int a[][10], char);


void main()
{
   int a[10][10];
   int x;
   char c, ch;
   Read(a);

 do{
     cout << "\nChoose from the following menu:" << endl;
     cout << "a.Find the largest number in a specific row or column" << endl;
     cout << "b.Find the smallest number in a specific row or column" << endl;
     cout << "c.Find the largest number in the diagonal" << endl;
     cout << "d.Exit" << endl;
     cin >> ch;
 switch (ch)
 {
   case 'a':
   case 'A':
 { 
      //read the choice , Column or Row 
     cout << "Where do you want to search? Enter 'c' for column or 'r'for row: ";
    cin >> c;
  
    //validate input
       if (c != 'c' && c != 'r' && c != 'C' && c != 'R')
 do{
      cout << "..Wrong input!..Enter again\n";
      cout << "Where do you want to search? Enter 'c' for column or 'r'for row: ";
      cin >> c;
 } while (c != 'c' && c != 'r' && c!='C' && c != 'R' );

     //read the number of the specific row or column
      cout << "Enter the number of column or row from 0 to 9: ";
      cin >> x;

    //validate input
       if (x>9 || x<0)
 do{
     cout << "..Wrong input!..Enter again\n";
     cout << "Enter the number of column or row from 0 to 9: ";
     cin >> x;
 } while (x>9 || x<0);

    Large(a, x, c); //call the function to find large
    break;
 
 }//End case A

 case 'b':
 case 'B':
 {
     // read the choice, Column or Row
     cout << "Where do you want to search? Enter 'c' for column or 'r'for row: ";
     cin >> c;

 //validate input
    if (c != 'c' && c != 'r' && c != 'C' && c != 'R')
 do{
      cout << "..Wrong input!..Enter again\n";
      cout << "Where do you want to search? Enter 'c' for column or 'r'for row: ";
      cin >> c;
   } while (c != 'c' && c != 'r' && c != 'C' && c != 'R');

     //read the number of the specific row or column
     cout << "Enter the number of column or row from 0 to 9: ";
     cin >> x;

     //validate input
        if (x>9 || x<0)
 do{
       cout << "..Wrong input!..Enter again\n";
       cout << "Enter the number of column or row from 0 to 9: ";
       cin >> x;
 } while (x>9 || x<0);

      Small(a, x, c);
      break;

 }//End case B

 case 'c':
 case 'C':
 {          //read the choice
    cout << "Where do you want to search? Enter 'L' for Lift corner or 'R'for right corner: ";
    cin >> c;

     //validate input
        if (c != 'L' && c != 'R' && c != 'r' && c != 'l')
 do{
       cout << "..Wrong input!..Enter again\n";
       cout << "Where do you want to search? Enter 'L' for Lift corner or 'R'for right corner: ";
      cin >> c;
 } while (c != 'L' && c != 'R' && c!='r' && c!='l');

       diagonal(a, c); //call the function
       break;
 }//End case C

 case 'd':
 case 'D':
 {  cout << "Thanks.." << endl;
    break;
 }//End Case D

 default: cout << "Wrong choice" << endl;

  } //End switch
} while (ch != 'd' && ch != 'D');

 system("pause");
}


void Read(int a[][10])
{
 //initialize by The multiplication table
 for (int i = 0; i<10; i++)
 {
         for (int j = 0, k = 1; j<10; j++, k++)
          a[i][j] = k*(i + 1);
 }//End for
}//End fun Read

void Large(int a[][10], int x, char c)
{
   int large;
 if (c == 'r' || c=='R')
 {
     large = a[x][0];
     for (int i = 1; i<10; i++)
    {
        if (a[x][i]>large)
        large = a[x][i];
    }//End for
    cout << "\nThe largest number in row # " << x << "is: " << large << endl;
 }//End if

 else
 {
        large = a[0][x];
     for (int i = 1; i<10; i++)
 {
       if (a[i][x]>large)
       large = a[x][i];
 }
       cout << "\nThe largest number in column # " << x << "is: " << large << endl;

 }//End else
}//End fun large

void Small(int a[][10], int x, char c)
{
     int small;
 if (c == 'r' || c=='R')
 {
     small = a[x][0];
      for (int i = 1; i<10; i++)
   {
          if (a[x][i]<small)
          small = a[x][i];
   }//end for
     cout << "\nThe smallest number in row # " << x << "is: " << small << endl;
 }//End if
 else
 {
       small = a[0][x];
       for (int i = 1; i<10; i++)
    {
            if (a[i][x]<small)
            small = a[i][x];
    }//End for
    cout << "\nThe smallest number in column # " << x << "is: " << small << endl;
 }//End else
}//End fun small

void diagonal(int a[][10], char c)
{
 if (c == 'L' || c=='l')
 {
    int large = a[0][0];
   for (int i = 1; i<10; i++)
 {
     if (a[i][i]>large)
    large = a[i][i];
 }
    cout << "\nThe largest number in diagonal is: " << large<<endl;
 }//end if
 else
 {
    int large = a[0][9];
    for (int i = 1, j = 8; i<10; i++, j--)
 {
      if (a[i][j]>large)
      large = a[i][j];
 }
 cout << "\nThe largest number in diagonal is: " << large << endl;
 }//End else
}//end fun

قراءة وطباعة Two Dimensional Array

-أكتب برنامج يحوي 2D Array من خمسة أعمدة وخمسة صفوف ، ثم أملأ أول صف وأول عمود بالبيانات التالية :

 

                        Fiber      Sugre         Fat           salt

Top flake
cornabix
otabix
ultrabran

ثم أقرأ من المستخدم البيانات وأملأ بها الـ Array ، وأخيرًا أطبع محتوى الـ Array باستخدام Function خاصة للطباعة .

الحل:

#include &lt;iostream&gt;
#include &lt;string&gt;
using namespace std;

void print(const string[][5]);

void main()
{
string a[5][5];

//initialize first row
a[0][0] = " ";
a[0][1] = "Fiber";
a[0][2] = "Sugre";
a[0][3] = "Fat";
a[0][4] = "salt";

//initialize first column
a[1][0] = "Top flake";
a[2][0] = "cornabix";
a[3][0] = "otabix ";
a[4][0] = "ultrabran";

for (int j = 1; j&lt;5; j++)
{
for (int i = 1; i&lt;5; i++)
{
cout &lt;&lt; "Enter..column by column";
cin &gt;&gt; a[i][j];
}
}

print(a);
cout &lt;&lt; endl;
system("pause");

}

void print(const string a[][5])
{
cout &lt;&lt; endl;

for (int i = 0; i&lt;5; i++)
{
for (int j = 0; j&lt;5; j++)
cout &lt;&lt; a[i][j] &lt;&lt; "\t";
cout &lt;&lt; endl ;
}
}

Array بدون تكرار العناصر

– أكتب برنامج يقرأ من المستخدم 10 أرقام ثم أحفظها في ِarray ، ولكن يجب أن لايكرر المستخدم أي رقم يعني أن تكون العناصر مختلفة ، ثم أطبع محتوى الـ array.

الحل:

#include <iostream>
using namespace std;

void main()
{
 int a[10];

 //read first element
   cout << "Enter a number: ";
   cin >> a[0];

 for (int i = 1 , j = 0; i<10; i++, j++)
 {
    cout << "Enter a number :";
    cin >> a[i];

 //validate the input
       for (int r = 1; r <= i; r++)
   {
        if (a[i] == a[i - r]) //if not valid

     do{
          cout << "...wrong input!....\nEnter a number: ";
          cin >> a[i];
       } while (a[i] == a[j]);

   }//end inner for loop

 }//end outer for loop

//print the array content
  for (int i = 0; i<10; i++)
  cout << a[i] << " ";
 
 cout << endl;
 system("pause");
}

الجذر التربيعي للعدد الصحيح

-أكتب برنامج يقرأ من المستخدم رقم صحيح موجب ، ثم يقوم بإيجاد الجذر التربيعي له إذا كان مربع كامل ، إذا لم يكن مربع كامل يقوم بطباعة عبارة خطأ للمستخدم.

*مربع كامل : عدد صحيح يكون مساويا لمربع عدد صحيح ما، مثال 9 و 4 و 16 … الخ.

الحل:

#include <iostream>
using namespace std;

void main()
{
  int num;
  bool flag = false;

  cout<<"Enter a positive number: ";
  cin >> num;


 for (int i = num; i >0; i--)

   if (i*i == num)
 
     { cout << "The root is " << i << endl; flag = true; break; }

 if (!flag) 
   cout << "The number is not a square number! " << endl;

 system("pause");
}

Function Return Enum

مثال لدالّة الـ Return Type لها هو متغيّر من تعريف المبرمج (enum).

#include <iostream>
using namespace std;

enum color { red, blue };

//function prototype
color fun();


int main()
{
 color f;
 f = fun();

 system("pause");
 return 0;

}
color fun()
{
 return red;
}