أنت هنا:برمجها»اللغة س»الدرس 8: المتسلسلات الحرفية
الدرس 8: المتسلسلات الحرفية الدرس 8: المتسلسلات الحرفية
قيم الموضوع
(1 تصويت)

 المتسلسلات الحرفية عبارة عن جداول لكن من نوع char، أي أنها تتكون من الحروف والرموز، ونظرا لأهميتها لم نشأ التطرق إليها مع الجداول لأنها تحتوي على قدر مهم من الدوال المعرفة في C تقوم بمعالجتها.. في هذه الفقرة سنتطرق إلى مختلف العمليات التي تعتني بالجمل والكلمات والحروف ...


1. التعريفات والحجز

التعريف

الكتابة الخوارزمية في C

حرف <اسم_المتغير>[<الطول>]

char <Variable> [<Length>];

أمثلة :

char NASSAB [20];
char ISME [20];
char JOMLA [300];

الحجز في الذاكرة

بما أن المتسلسلات الحرفية من النوع char فإن كل عنصر أي كل حرف من حروفها يأخذ ثمنا واحدا في الذاكرة، وبالتالي فإن حجم كل متسلسلة في الذاكرة هو عدد طولها في 1 (1 هو حجم النوع char).

 

ملاحظات

  1. كل متسلسلة منتهية بالرمز '0\'.

  2. '0\' يرمز إلى نهايتها (ويعني NUL).

  3. كل متسلسلة تحتوي على n حرف فإن العنصر الأخير يأخذه '0\'، وبالتالي يكون عدد حروفها المستعملة هو n-1.

 

مثال :

 char TXT[10] = "BONJOUR !";


2. طرق تهيئة المتسلسلات عند التعريف

هذه التعريفات متكافئة :

char JOMLA[] = {'s','a','l','a','m','\0'};

char JOMLA[] = "salam";

2.1 تعريفات خاطئة وأخرى صحيحة

2.2. أشكال مختلفة وملاحظات

  1. يمكن لكل متسلسلة أن توضع بين الرمزين " "

  2. المتسلسلة المنعدمة يعبر عنها كما يلي: ""

  3. يمكن استعمال الرموز التالية داخل المتسلسلات ('n\' و 't\' و 'v\' و ' "\ ' و ' '\ ' و ...)

  4. مثال : "هذه الجملة n\ مقسمة n\ إلى 3 أسطر."

  5. يمكن وضع الرمز'  داخل المتسلسلة، مثال : {'L','\'','a','s','t','u','c','e','\0'}

  6. يمكن وضع الرمز"  داخل المتسلسلة، مثال : "Affichage de\"guillemets\" \n"

  7. المتسلسة"salam "   "3alaikom"  تكافئ  "salam 3alaikom"

'x'

 هذا الشكل يمثل حرفا له قيمة ثابتة (الرقم ASCII لـ 'x' هو 120)

"x"

 هذا الشكل يمثل جملة متكونة من حرفين هما 'x' و '0\'

'x'

 يحجز في الذاكرة ثمن واحد فقط لأنه حرف واحد.

"x"

 يحجز في الذاكرة ثمنين لأنه متكون من حرفين.

"salamo"

 تـحجز في الذاكرة 7 أثمان لأنها متكونة من 6 أحرف بالإضافة إلى الرمز '0\'.

التمرين 8.1

من أي الكتابات التالية مكتوبة بالشكل الصحيح؟ إن كان هناك خطأ فقم بإصلاحه مع تبيان لكل متسلسلة حرفية عدد الأثمان المطلوبة حفظها في الذاكرة.

a) char a[] = "one\ntwo\nthree\n";
b) char b[12] = "one two three";
c) char c[] = 'abcdefg';
d) char d[10] = 'x';
e) char e[5] = "five";
f) char f[] = "This " "sentence" "is broken";
g) char g[2] = {'a', '\0'};
h) char h[4] = {'a', 'b', 'c'};
i) char i[4] = "'o'";


2.3. الدخول إلى أو استعمال عناصر المتسلسلة

إن استعمال عناصر المتسلسلة شبيه باستعمال عناصر الجدول، ويتم بنفس الطريقة.

مثال : نعتبر التعريف التالي  :   char txt[16] = "salamo 3alaikom";

txt[0] يمثل الحرف 's'
txt[1] يمثل الحرف 'a'
txt[2] يمثل الحرف 'l'
txt[3] يمثل الحرف 'a'
وهكذا ....

نريد تغيير الحرف 'o' بالحرف 'i'، يكفي إذن أن نكتب  txt[5] = 'i'

فيصبح المتغير txt يساوي  "salami 3alaikom"

 

2.4 جدول ASCII

في الواقع إن الحاسوب لا يعرف أي حرف من الحروف، لا الحروف اللاتينية ولا الحروف أو الأرقام العربية.

يوجد في bios جدول متكون من 256 خانة ، وكل خانة يمكنك وضع أية مصفوفة تمثل الحرف الذي تريده...

المهم : هذا الجدول يحتوي على حروف مهيأة سابقا وهي الحرف اللاتينية والرموز والأرقام العربية، وكل حرف أو رمز أو رقم عربي له رقم يسمى الرقم ASCII، وهي كالتالي:

Table ascii DOS    مثال 1 :حدد الرقم ASCII للحرف A

من خلال الجدول نجد انه هو: 41h

مثال 2: حدد الرقم ASCII للرقم 1

من خلال الجدول نجد انه هو: 31h

مثال 3: حدد الرقم ASCII للحرف a

من خلال الجدول نجد انه هو: 61h

مثال 4: حدد الرقم ASCII للرمز !

 من خلال الجدول نجد انه هو: 21h

مثال 5: حدد الرقم ASCII للرمز الفراغ

من خلال الجدول نجد انه هو: 20h

ملاحظات :

20h : هو رقم الفراغ  '  '

0dh : هو رقم الرجوع إلى السطر  ' n\ '

0ah : هو رقم الرجوع إلىبداية  السطر  'r\'

00h : هو رقم المنعدم  ' nul '

 

2.4. أسبقية الحروف

من خلال جدول ASCII نستنتج بأن الحروف والرموز والأرقام هي في الواقع عبارة عن أرقام، ومن خلال هذا نستنج بأن كل واحد منها أكبر من الآخر من حيث الترتيب حسب الرقم ASCII.

ومنه نقول بأنه مثلا:

  1. 'A' أصغر من 'B' و 'B' أصغر من 'C' وهكذا ...

  2. 'a' أصغر من 'b' و 'b' أصغر من 'c' وهكذا ...

  3. '0' أصغر من '1' و '1' أصغر من '2' وهكذا ...

  4. 'A' أصغر من 'a' و 'B' أصغر من 'b' وهكذا ...

  5. عموما لدينا الترتيب التالي :. . . <0<1<2< ... <9< . . . A<B<C< ... <Z< ...<a<b<c< ... <z< . . .

 

2.4.1 مقارنة متسلسلتين أو جملتين قاموسيا

أمثلة:

"ABC" قبل "BCD" 'A'<'B' لأن
"ABC" قبل "B" 'A'<'B' لأن
"Abc" قبل "abc" 'A'<'a' لأن
"ab" قبل "abcd" لأن "" قبل "cd"
" ab" قبل "ab" ' '<'a' لأن

 

لا تنس أن الفراغ '  ' رقمه ASCII هو 20h أي 32 بالنظام العشري.

مثال :

char C;
....
if (C>='0' && C<='9') printf("Numero\n", C);
if (C>='A' && C<='Z') printf("Uppercase\n", C);
if (C>='a' && C<='z') printf("Lowercase\n", C);

2.4.2 تحويل الحروف اللاتينية الكبيرة إلى الصغيرة والعكس

char C;
....
/* تحويل من الكبير إلى صغير*/
if (C>='A' && C<='Z') C = C-'A'+'a';
/* تحويل من الصغير إلى كبير*/
if (C>='a' && C<='z') C = C-'a'+'A';


3. التعامل الفعلي مع المتسلسلات الحرفية

تحتوي مكتبات C  على مجموعة من الدوال التي تتعامل أو هي متخصصة فقط لمعالجة الجمل والكلمات والحروف، وأهم هذه المكتبات هي كالتالي :

  1. <stdio.h>
  2. <string>
  3. <stdlib>
  4. <ctype>
 
3.1. دوال المكتبة <stdio.h>
 

3.1.1 دوال الكتابة أو الإظهار على الشاشة

 

3.1.1.1 الدالة ()printf

كما هو معتاد الدالة ()printf تقوم بكتابة المعطيات على الشاشة.

ولكتابة جملة على الشاشة نستعمل الرمز s% لتعيين أن المتغير عبارة عن متسلسلة حرفية

مثال :

النتيجة على الشاشة

   
    char NOM[] = "salam, fifio";
:salam, fifio: -> printf(":%s:", NOM);
:salam, fifio: -> printf(":%5s:", NOM);
:   salam, fifio: -> printf(":%15s:", NOM);
:salam, fifio   : -> printf(":%-15s:", NOM);
:salam: -> printf(":%.5s:", NOM);

 

3.1.1.1 الدالة ()puts

بكل اختصار الدالة ()puts  تكافئ الدالة printf("%s\n",  )

مثال :   puts(TXT);     تكافئ    printf("%s\n",TXT);

أمثلة :

char TEXTE[] = "ligne 1.";
puts(TEXTE);
puts("ligne 2.");

3.1.2 دوال القراءة من لوحة المفاتيح

3.1.2.1 الدالة ()scanf

كما هو معتاد الدالة ()scanf  تقوم بقراءة المعطيات من لوحة المفاتيح.

ولقراءة جملة من لوحة المفاتيح نستعمل الرمز s% لتعيين أن المتغير عبارة عن متسلسلة حرفية.

مثال :

char PLACE[25];
int DAY, MONTH, YEAR;
printf("Enter place and birthdate : \n");
scanf("%s %d %d %d", PLACE, &DAY, &MONTH, &YEAR);

كما نلاحظ أن الدالة ()scanf تحتاج إلى عناوين المتغيرات حيث نضيف الرمز & إلى كل متغير، إلا في حالة المتسلسلة فيكفي أن نضع اسم متغير المتسلسلة بدون معقوفتين [ ] لأنه يعبر عن عنونها في الذاكرة.

 

3.1.2.2 الدالة ()gets

بكل اختصار الدالة ()gets  تكافئ الدالة scanf("%s",  )

مثال :    gets(TXT);     تكافئ    scanf("%s",TXT);

أمثلة :

int MAXI = 1000;
char LINE[MAXI];
puts("Jomla men fadlek");
gets(LINE);


التمرين 8.2

أنجز شفرة تمكن من قراءة 5  كلمات  من لوحة المفاتيح باستعمال الدالة ()scanf  مرة واحدة.

الكلمات الخمس تحفظ في 5 متغيرات :M5 ،....،M1.

أظهرهن على الشاشة بالشكل المعاكس.

مثال :

voici une petite phrase ! !                                                 
phrase petite une voici                                                      

التمرين 8.3

أنجز شفرة تمكن من قراءة  نص كامل (لا يتجاوز 200 حرف) وقم بحفظه في متغير TXT ، وأظهر ما يلي:

أ) طول النص L .

ب) عدد مرات الذي ذكر فيها الحرف 'e'  في النص.

ج) أظهر النص مقلوبا بكامله على الشاشة ، دون تغيير محتوى المتغير TXT.

د) من خلال تغييرمحتوى المتغير TXT ، اقلب النص بكامله وأظهره على الشاشة.

مثال :

voici une petite phrase ! !                                                 
esarhp etitep enu iciov                                                      

التمرين 8.4

أنجز شفرة تمكن من قراءة  نص كامل (لا يتجاوز 200 حرف) وقم بحفظه في متغير TXT ، ثم احذف كل مثيلات الحرف 'e'  مع الاحتفاظ بالحروف الأخرى. التعديلات يجب أن تكون في المتغير TXT نفسه.

مثال :

Cette ligne contient quelques lettres e.                         
Ctt lign contint qulqus lttrs .                                             

 

3.2. دوال المكتبة <string>

هذه المكتبة لها دور كبير في معالجة المتسلسلات الحرفية.

قبل التطرق إلى بعض دوال هذه المكتبة نشير أن استعمال الحرف:

<j>  يمثل جملة
<g>  يمثل جملة
<n>  يمثل عدد
   

الدالة

الوصف

 

  strlen(<j>) 

  تمكن من معرفة طول المتسلسلة دون عد الرمز '\0'

 

  strcpy(<j>, <g>)

  نسخ <g> في <j>

 

  strcat(<j>, <g>)

  إضافة <g> في آخر <j>

 

  strcmp(<j>, <g>)

  لمقارنة <j> و <g>  قاموسيا حيث تكون النتيجة

 
سالبة إذا كانت <j> قبل <g>
0 إذا كانت <j> تساوي <g>
موجبة إذا كانت <j> تلي أو بعد <g>

  strncpy(<j>, <g>, <n>)

  نسخ <n> حرف من <g> في <j>  

  strncat(<j>, <g>, <n>)

  إضافة <n> حرف من <g> في آخر <j>  

احذر من أن تكتب مثلا في داخل المشروع ما يلي   ;A="SALAM 3ALAIKOM"

ويمكن تعويض ذلك بأن نكتب :  strcpy(A, "SALAM 3ALAIKOM"); 

أما إضافة جملة أو جزءا منها في آخر أخرى لا يتم عن طريق العامل + كما في الخوارزم أو اللغة Pascal بل نستعمل إحدى الدالتين ()strcat أو()strncat.

 


التمرين 8.5

أنجز شفرة تمكن من قراءة  اسم  ونسب المستعمل  وأظهر الطول العام لاسمه الكامل دون عد الفراغ الذي يفصل اسمه عن نسبه.

استخدم الدالة()strlen .

مثال :

First and last name:
Omar benkhatab
Hello Omar benkhatab !
Your name is composed of 13 characters.


التمرين 8.6

أنجز شفرة تمكن من قراءة جملتين (أو كلمتين)CH1 و CH2 ، ثم قارنهما قاموسيا وأظهر النتائج على الشاشة:

مثال:

chaine 1: ABC
chaine 2: abc
"ABC" precede "abc"


التمرين 8.7

أنجز شفرة تمكن من قراءة جملتين (أو كلمتين) CH1 و CH2 ، ثمقم بأخذ المقطع الأول لكل من CH1 و CH2 واجعلهما في متسلسلة حرفية ثالثة  CH3.
أظهر النتائج على الشاشة :

أ) استعمل الدوال المخصصة لذلك والمنتمية إلى <string.h>.

ب) استعمل للقراءة والكتابة الدالتين ()gets و ()puts .


التمرين 8.8

"خاص لمن يفهم اللغة الفرنسية"

أنجز شفرة تمكن من قراءة  فعل للمجموعة الأولى (يعني منتهي بـ 'er') وأظهر على الشاشة صرف هذا الفعل في الحاضر "présent" .

تأكد من أن الفعل الذي تم إدخاله منتهي بـ  'er' قبل الصرف.

استعمل الدوال ()gets  و ()puts   و ()strcat   و ()strlen.

مثال:

Verbe : fêter
je fête
tu fêtes
il fête
nous fêtons
vous fêtez
ils fêtent


3.3. دوال المكتبة <stdlib>

تحتوي هذه المكتبة على دوال تقوم بتحويل الأعداد إلى متسلسلات وكذلك العكس.

3.3.1  تحويل المتسلسلات إلى أعداد

توجد في C ثلاث دوال أساسية تقوم بهذا التحويل وهي كالتالي :

atoi(<j>)

  تقوم بتحويل الجملة <j> إلى عدد ذي النوع int

atol(<j>)

  تقوم بتحويل الجملة <j> إلى عدد ذي النوع long

atof(<j>)

  تقوم بتحويل الجملة <j> إلى عدد ذي النوع double

مثال :

char  txt[6]="12345";

int  n;

n=atoi(txt);     ; أصبح n يساوي القيمة 12345

printf("%s  =  %d",txt,n);

قوانين التحويل:

  1. الفراغات يتم تجاهلها

  2. يتوقف التحويل عند أول حرف لا يمكن تحويله كـ z و g و ...

  3. بالنسبة لمتسلسلة لا يمكن تحويلها، تكون النتيحة في هذه الحالة هي 0.

 

3.3.2  تحويل الأعداد إلى متسلسلات

توجد في C ثلاث دوال أساسية تقوم بهذا التحويل وهي كالتالي :

itoa (<n_int>, <j>, <b>)
ltoa (<n_long>, <j>, <b>)
ultoa (<n_uns_long>, <j>, <b>)

حيث :

n_int

 يمثل عدد ذي النوع int يجب تحويله.

n_long

 يمثل عدد ذي النوع long  يجب تحويله.

n_uns_long

 يمثل عدد ذي النوع unsigned long  يجب تحويله.

b

 هو أساس التحويل (2...36)

j

 الجملة التي سيتم وضع العدد المحول فيها (طولها القصوي هو 17 حرف)


التمرين 8.9

لتكن الأوامر التالية :

char STR[200];
puts("Number :");
gets(STR);
printf("Entree = %s \n", STR);
printf("integer = %d \n", atoi(STR));
printf("long = %ld \n", atol(STR));
printf("double = %f \n", atof(STR));

ما هي القيم التي ستظهر على الشاشة إذا تم إدخال ما يلي:

1) 123
2) -123
3) - 123
4) 123.45
5) 12E3
6) 1234f5
7) -1234567
8) 123e-02
9) -0,1234


التمرين 8.10

أنجز شفرة قصيرة باستعمال الدالة ()ltoa  تقوم بمعالجة نتائج التمرين 3.3 .


 

3.4. دوال المكتبة <ctype>

tolower(<c>) تقوم بتحويل الحرف <c> إلى صغير إذا كان <c> حرفا كبيرا
toupper(<c>) تقوم بتحويل الحرف <c> إلى كبير إذا كان <c> حرفا صغيرا

مثال :

char c='a';

c=toupper(c);   /*c='A'*/

c=tolower(c);    /*c='a'*/

 

الدالة

ترجع قيمة تخالف 0

isupper(<c>)

  إذا كان <c> كبيرا ('A'...'Z')

islower(<c>)

  إذا كان <c> صغيرا ('a'...'z')

isdigit(<c>)

  إذا كان <c> رقما  ('0'...'9')

isalpha(<c>)

  إذا كان islower(<c>) أو isupper(<c>)

isalnum(<c>)

  إذا كان isalpha(<c>) أو isdigit(<c>)

isxdigit(<c>)

  إذا كان <c> إذا كان حرف ينتمي إلى النظام الستعشري

 

  ('0'...'9' أو 'A'...'F' أو 'a'...'f')

isspace(<c>)

  إذا كان <c> فراغا أي (' ', '\t', '\n', '\r', '\f')

 


4. جدول المتسلسلات الحرفية

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

 

4.1 التعريفات والتهيئة والحجز

مثال للتعريف : char JOUR[7][9];                      

مثال للتهيئة :

char JOUR[7][9]= {"lundi", "mardi", "mercredi",
                  "jeudi", "vendredi", "samedi",
                  "dimanche"};

الحجز في الذاكرة :

من خلال هذا المثال نلاحظ أن الجدول JOUR يحجز  7*9*1 = 63  ثمنا في الذاكرة.

 

4.2 استعمال أو الدخول إلى عناصر جدول المتسلسلات

نعتبر المثال التالي :

char yawm[7][9]= {"Itnayne", "Tholataa", "Arbe3a",
                  "Khamiss", "Jomo3a", "Sabte", "Ahad"};
int I = 4;
printf("Alyawm howa %s !\n", yawm[I]);

ستكون النتيجة على الشاشة كالتالي :

Alyawm howa  Jomo3a !

مسألة 1: نريد تعويض كلمة "Khamiss" بكلمة "Khamis"

في هذه الحالة نستعمل الدالة strcpy ونكتب إذا :  strcpy(yawm[3],"Khamis")

مسألة 2: نريد إظهار الحروف الأولى للأيام فقط.

الحل :

for(I=0; I<7; I++)
   printf("%c ", yawm[I][0]);

ستكون النتيجة على الشاشة كالتالي :

I   T   A   K   J   S   A


التمرين 8.11

أنجز شفرة تمكن من قراءة  10 كلمات وأحفظهم جميعا في جدول للمتسلسلات الحرفية. ثم رتبهم قاموسيا باستعمال الدالتين ()strcpy و ()strcmp. أظهر على الشاشة الجدول الذي تم ترتيبه. استعمل طرق الترتيب التي تعجبك (أنظر إلى تمارين الفقرة 8).


التمرين 8.12

أنجز شفرة تمكن من قراءة عدد بين 1 و 7 وأظهر اسم اليوم الذي يوافقه.

"Itnyne"

 1

"Tholataa"

 2

. . .

 

"Ahad"

 7

 


التمرين 8.13

أنجز شفرة تمكن من قراءة 5  كلمات  من لوحة المفاتيح باستعمال الدالة ()scanf  مرة واحدة.

الكلمات الخمس تحفظ فيجدول للمتسلسلات الحرفية.

أظهرهن على الشاشة بالشكل المعاكس.

مثال :

voici une petite phrase !
! phrase petite une voici


التمرين 8.14

"خاص لمن يفهم اللغة الفرنسية"

أعد كتابة التمرين 8.8  (الصرف) باستعمال جدولين للمتسلسلات الحرفية.

 

SUJ

pour les sujets

TERM

pour les terminaisons

استخدم الدوال التالية : ()printf  و ()scanf  و ()strlen.


 

تمارين تطبيقية

قم بحل التمارين الآتية بدون استعمال الدوال المخصصة لـ <string.h> أو <stdlib.h> أو <ctype.h>


التمرين 8.15

أنجز شفرة تمكن من قراءة كلمتين من لوحة المفاتيح حيث يتم بعد ذلك تحديد ترتيبهما قاموسيا فبما بينهما فقط.


التمرين 8.16

أنجز شفرة تمكن من قراءة كلمة أو جملة CH من لوحة المفاتيح وقم بتحويل الحروف الصغيرة إلى حروف كبيرة وعكس ذلك.التحويل يكون في CH .أظهر النتائج على الشاشة.


التمرين 8.17

أنجز شفرة تمكن من قراءة كلمة أو جملة  من لوحة المفاتيحتحتوي على الأرقام العربية من '0' إلى '9' وربما بعض الرموز والحروف الأخرى، وقم بمناقشة هذه الجملة كأنها عدد صحيح موجب في النظام العشري. ومن أجل التحويل ، استعمل الدوال المنتمية إلى <ctype.h> ، بعد ذلك قم بحفظ النتيجة في متغير ذي النوع long . يجب على التحويل أن يتوقف عندما يصادف أول حرف أو رمز لا يمثل رقما عربيا.


التمرين 8.18

أنجز شفرة تمكن من قراءة كلمة أو جملة  من لوحة المفاتيحتحتوي على الأرقام العربية من '0' إلى '9' ومن 'A' إلى 'F'  وربما بعض الرموز والحروف الأخرى، وقم بمناقشة هذه الجملة كأنها عدد صحيح موجب في النظام الستعشري. ومن أجل التحويل ، استعمل الدوال المنتمية إلى <ctype.h> ،وعلما أن التحويل يتجاهل كل  الرموز والحروف الأخرى غير المنتمية إلى النظام الستعشري،  بعد ذلك قم بحفظ النتيجة في متغير ذي النوع long .أظهر النتائج على الشاشة بالشكل العشري  و الستعشري.


التمرين 8.19

باستعمال المبدأ المطروح في التمرين 8.17 ، أنجز شفرة تمكن من قراءة كلمة أو جملة  من لوحة المفاتيحتحتوي على الأرقام العربية من '0' إلى '9' وربما بعض الرموز والحروف الأخرى، وقم بمناقشة هذه الجملة كأنها عدد حقيقي موجب أو سالب في النظام العشري. بعد ذلك قم بحفظ النتيجة في متغير ذي النوع double .استعمل جملة مناسبة إن كان هناك خطأ .

طريقة :

استعمل متغير سمه SIG لحفظ إشارة القيمة. حول جميع الرموز الرقمية (قبل وبعد النقطة العشرية) إلى قيمة عددية N. عدد أو أحسب الأعشار (يعني المواقع بعد النقطة العشرية) بمساعدة متغير سمه DEC واحسب القيمة الجذرية كما يلي   : 

( N = N * SIG / pow(10, DEC

 أمثلة :

-1234.23400

-1234.234

Erreur!

-123 45

Erreur!

123.23.

123.012300

+00123.0123

 


التمرين 8.20

باستعمال المبدأ المطروح في التمرين 8.19 ، أنجز شفرة تمكن من قراءة كلمة أو جملة  من لوحة المفاتيحتحتوي على الأرقام العربية من '0' إلى '9' وربما بعض الرموز والحروف الأخرى، وقم بمناقشة هذه الجملة كأنها عدد حقيقي موجب أو سالب باستعمال الأس. بعد ذلك قم بحفظ النتيجة في متغير ذي النوع double .استعمل جملة مناسبة إن كان هناك خطأ .

طريقة :

استعمل متغير سمه SIGE لحفظ إشارة الأساس.استعمل متغير آخر  سمه EXP  لحفظ قيمة الأساس. أحسب  قيمة الأساس بمساعدة SIGE و DEC و EXP. أحسببعد ذلك القيمة N بحيث : ( N = N * SIG / pow(10, DEC

أمثلة :

-1234.234000

-1234.234

Erreur!

-1234. 234

123400.000000

123E+02

1.230000

123E-02

123.400000

123.4e

-1212.340000

-12.1234e02

Erreur!

123.4e3.4

121.200000

12.12E1

Erreur!

12.12 E1


التمرين 8.21

أنجز شفرة تمكن منإزالة الجملة OBJ من المتسلسلة الحرفية SUJ .

أمثلة :

ALPHONSE

PHON

ALSE

PIERRE

EI

PIERRE

TOTALEMENT

T

OTALEMENT

HELLO

 

HELLO


التمرين 8.22

أنجز شفرة تمكن من تبديل الجملة CH1  بالجملة CH2في المرة الأولى فقط  بالمتسلسلة الحرفية SUJ .

أمثلة :

ALOYSE

ALPHONSE

OY

PHON

PEIRRE

PIERRE

EI

IE

PARTERRE

PIERRE

ARTE 

IE

PIERRE

PIERRE 

IE

EI

FINALEMENT

TOTALEMENT

FIN

TOT

HELLO

HELLO

TTT

 

التمرين 8.23

أنجز شفرة تمكن من تبديل الجملة CH1 ومثيلاتها بالجملة CH2بالمتسلسلة الحرفية SUJ .

أمثلة :

ALOYSE

ALPHONSE

OY

PHON

BONTONTE

BANANE

ONT

AN

YOYALEMENY

TOTALEMENT

Y

T

HELLO

HELLO

TTT

 

HEO

HELLO

 

L

 


 تأليف

المؤلف الأصلي: فرديريك فابر (Frédéric FABER)

البريد الإلكترونيعنوان البريد الإلكتروني هذا محمي من روبوتات السبام. يجب عليك تفعيل الجافاسكربت لرؤيته.

الموقع الإلكتروني http://www.ltam.lu/cours-c

ترجمة بتصرف: محمد عبد الرحمان


 

مقالات أخرى من نفس الفئة « الدرس 7: الجداول الدرس 9: المؤشرات »

أضف تعليقا


إصنعها يريد أن يتأكد أنك لست روبوتا، لذلك أحسب ما يلي:

كود امني
تحديث