📘 قراءة كتاب البرمجة بلغة c++ أونلاين
المرحلة الثانية هندسة الحاسبات والبرامجيات هذا الكتاب يحوي على الكثير من الامثلة المحلولة وتوضيح لقواعد هذه اللغة
اهدي هذا الكتاب الى اخي الراحل عسى الله ان يجعله في ميزان حسناته
|
2010 |
Hussien Ahmmed Taleb 2009 2010 |
خير ماابدء به بسم الله سوف اقوم باذن الله بسرد بعض الامثلة بلغة سي بلس بلس التي تفيد الساعيين الى البرمجة الذين لديهم علم بهذه اللغه اي يعرفون عنها ولو القليل وارجو من الله ان يوفقنا بهذا العمل
دالة (main)هذه الدالة يسلم نظام التشغيل العمل لها وعندما نتهي وظيفتها ترجع له قيمة
الدالة (system) هذه الدالة تستخدم اوامر (dos)مثلا لو اردنا تكويين برنامج يوقف الحاسوب نكتب
System("dos instructin")
#include
main()
{
System("shutdown –s –t 00")}
-s معناه ايقاف الحاسوب
-tمعناه الفترة لايقاف الحاسوب اعطينا 00 حتى يف مباشرة وتستطيع تنفيذ جميع اوامر الدوز الاخرى ك time
لو اردنا تكوين برنامج يحول من الحروف الصغيرة الى الكبيرة والعكس دون استخدام الدوال(toupper,tolower) او اردنا بناء هذه الدوال لاحظ الكود(للعلم الفرق بين اسكي كود اي حرف كبتل مع سموله هو (32) اي ان الفرق بيين (a,A)هوا (32)
#include
()int main
{
int degree=0;
char mark;
; cin>>mark
degree=int(mark)-32;
(a) الاسكي كود له 97 ننقصه 32 نحصل على الاسكي كود لل (A) اي كبيتل نرجع نحول الرقم الى حرف
; (mark=char(degree
; cout<
; return 0
Int('a') هذه الدالة تجد قيمة الاسكي كول للحرف مثلا هنا نحصل على 97
Char(97)هذه الدالة تحصل لنا على الحرف المقابل للاسكي كود المدخل
جد المعادلة التالية (( x^n باستخدام ( (recursive function
اي باستخدام اسلوب استدعاء الدالة لنفسها
#include
( int power(int x,int n
{
(if (n>0
;((return(x*power(x,n-1
else
return 1;
}
} ()main
Int x,n;
Cout<<"x=";
Cin>>x;
Cout<<"n=";
Cin>>n;
Cout<
}
جد المفكوك باستخدام نفس الاسلوب
#include
int fact(int x)
({if (n>0
;((return(x*fact(x-1
else
return 1;}
} ()main
Int x;
Cout<<"x=";
Cin>>x;
Cout<;}
لو اردنا fact3
#include
int fact(int x)
({if (n>0
;((return(x*fact(x-3
else
return 1;}
} ()main
Int x;
Cout<<"x=";
Cin>>x;
Cout<;}
So fac3(12) = 12*9*6*3*1 = 1944
كون مصفوفة ثنائية الابعاد كلها اصفار
#include
} ()main
Int array[4][5]={0};
Cout<< array[3][2];}
سوف نحصل على مصفوفة كلها اصفار وكذالك اي عدد اخر ككلها (5)
Int array[4][5]={5};
هذا البرنامج يبين لنا كيف نضع مصفوفة سجلات داخل مصفوفة سجلات اخرى الهدف هوا المحافظة على درجات كل طالب(المعلومات اسم وعمر وعنوان وخمس درجات) وصباعة اسماء الطلاب والدروس الناجحون فيها فقط
#include
#include
struct student
{ char name[10];
int age;
int id;
struct myboy
{
int degres;
}de[5];
}st[20];
main()
{
int i,j,sum,avg;
sum=0;
for(i=0;i<3;i++)
{cout<<"please enter the student informationn";
cout<<"enter his namen";
gets(st[i].name );
cout<<"enter his agen";
cin>>st[i].age;
cout<<"enter his ID adressn";
cin>>st[i].id;
cout<<"enter his degressn";
for(j=0;j<5;j++)
cin>>st[i].de[j].degres;
}
for(i=0;i<3;i++)
{cout<<"name: "<
for(j=0;j<5;j++)
if (st[i].de[j].degres>=50)
cout<<"his aveg is "<
}
}
برنامج ادخال اسم الطالب وعمرة والمطالبة بدرجاتة باسلوب البرمجة الشيئية(object ori.)
#include
#include
class maths
{
private:
char itsNum1[25];
int itsNum2;
int avg;
public:
GetNum1Num2(char i[],int j );
print();
degre();};
maths::GetNum1Num2(char i[],int j )
{strcpy(itsNum1,i) ;
itsNum2=j;
return 0;}
maths::print()
{cout << "his name:n" << itsNum1 << endl;
cout << "his age:n" << itsNum2 << endl;
cout << "his avg:n" << avg;
cout << "____________________________________n" ;
return 0;}
maths::degre()
{int j,der,sum=0;
cout << "ENTER HER DEGRESn";
for (j=0;j<5;j++)
{cin>>der;
sum+=der; }
avg=sum/5;}
int main ( ){
char i[25] ;
int j ;
لاحظ هنا كونا مصفوفة كائنات maths a[3] ; //
for (int k=0;k<3;k++)
{ cout<<"enter the name student ("<<(k+1)<<")n";
cin >> i;
cout<<"enter age student ("<<(k+1)<<")n";
cin>>j;
a[k].GetNum1Num2(i,j);
a[k].degre();}
for (k=0;k<3;k++)
a[k].print();
return 0;
}
العبارات الشرطية المتداخلة
Multiy (if)
هذا البرنامج يعمل نفس عمل البرنامج القادم
Main()
{
int I;
i=5;
if (i==5){
cout <<"3";
if (i>5)
cout<<"44444444444444444444n";
else
cout<<"p5555555555555555555n";}
else
"; cout<<"666666666666666666n
}
*****************************
Main()
{int I;
نلاحظ ان( else) الاخيرة تكون مخالفة لل(if) الاولى |
i=5;
if (i==5)
if (i>5)
cout<<"44444444444444444444n";
else
cout<<"p5555555555555555555n";
else
"; cout<<"666666666666666666n
}
#include Main() { Int no; Cin>>no; Cout<<"hex="< Cout<<"octal="<
|
لو اردنا تحويل رقم ال hex
Cout<
لو اردنا تحويل رقم ال octal
Cout<
وكذالك الباينري اليك هذا البرنامج
تمثيل (stack) بواسطة (structure)
#include
const int max=20;
struct Stack
{
int st[max];
int top;
public:
Stack(){top=-1;}
void push( int element ){st[++top]=element;}
int pop() { return st[top--];}
}temp;
int main()
{ int i,element;
for(i=0 ;i<5;i++){
cin>>element;
temp.push(element); }
cout << "First:t " << temp.pop() << endl;
cout << "Second:t " << temp.pop() << endl;
cout << "third:t " << temp.pop() << endl;
cout <<"fourth:t" << temp.pop() << endl;
cout << "fifth:t" << temp.pop() << endl;
return 0;
}
برنامج يعمل (compiler) صغير بحيث ندخل الجمل كما في شاشة التنفيذ ويتحقق منها اذا كانت صحيحة يعطيك الناتج واذا كان في داخلها خطأ يبين لك الخطأ باي خطوة وقع
#include
#include
#include
main()
{
cout<<"This program is part of compiler.?nmake compiler between two varibale ";
cout<<"and check it by If statement then give you resualt if you write correct";
cout<<"Else it giver you message error..?nExample write:na=5;nb=4;nif(a>b)";
cout<<"n___________________________________________________________________n";
int i,item,h,temp1,temproy,temp2,num,j,x,m,dank1,dank2,dank3;
item=dank1=x=m=h=j=0;
char ch,now1,now2=0,charracter2,sata1,sata, charracter1,stack[20]="n";
int stack2[20]; //this stack to convert data to asciicode
int binary[32],machine[32]; //to convert to machine language
char string[9],string1[9],string2[9];
char mm[]="n";
int f1,f2,f3,f4,f5,f6,a1,a2,a3,a4,a5,a6,a7,a8,c1,c2,c3,c4,c5,c6;
f1=f2=f3=f4=f5=f5=f6=0;
a1=a2=a3=a4=a5=a6=a7=a8=0;
c1=c2=c3=c4=c5=c6=0;
cin.getline(string,8); //enter data in stack[lexical]
strcat(stack,string);
strcat(stack,mm);
cin.get(string1,8);
strcat(stack,string1);
strcat(stack,mm);
cin.getline(string2,8);
strcat(stack,string2);
cin.getline(string2,8);
strcat(stack,string2);
strcat(stack,mm);
int len=strlen(stack);
item=temproy=len-1;
cout<<"n___________________________________________________________________n";
cout<<"THE RESULT..?n";
int hu=0;
for(i=item;i>=0;i--){ //transfer to another stack to arrang data series
if(stack[i]==' ')
continue; //to ignor the space
stack2[hu]=stack[i]; //stage[syntactic]
hu=hu+1;}
--hu;//to put pointer of last element in stack2 becuse it become more it by one
for(i=hu;i>=0;i--){ //convert to machine language
num=stack2[i];
while(num>0)
{ int mod=num%2;
binary[j]=mod;
num/=2;
++j;}
--j;
int mach=0;
while(j>=0)
{machine[mach]=binary[j];
++mach;
--j;}
if(i%2==1) //to make end between envery 16 bit(it size of regieter)
{
machine[mach]=0;
++mach; }
}
for(i=hu;i>=0;i--) {
if((stack2[i]==10)||((stack2[i]>=97)&&(stack2[i]<=122))) //check expretion
if((stack2[i-1]>=97)&&(stack2[i-1]<=122))
if((stack2[i-2]==61))
if(((stack2[i-3]>=48)&&(stack2[i-3]<=57))||(stack2[i-3]==now2))
if((stack2[i-4]==59))
if((stack2[i-5]==10)){
x=x+4;
if(x==4){ //check first expresion and find volue to identifire
if((stack2[i-1]>=97)&&(stack2[i-1]<=122)) // satge [semantic]
if((stack2[i-3]>=48)&&(stack2[i-3]<=57)){
sata=stack2[i-3];
now2=now1=stack2[i-1];
now1= sata;
}}
if(x==8){ //check second expresion
if((stack2[i-1]>=97)&&(stack2[i-1]<=122))
if(((stack2[i-3]>=48)&&(stack2[i-3]<=57))||(stack2[i-3]==now2)){
charracter2=charracter1=stack2[i-1];
if(stack2[i-3]==now2) //to treat if we put character in 2st exp.
sata1=sata;
if((stack2[i-3]>=48)&&(stack2[i-3]<=57))
sata1=stack2[i-3];
charracter1=sata1;}}
dank3=i;}
if(stack2[i]==10) //check if statement
if( (stack2[i-1]==105)&&(stack2[i-2]==102))
if( (stack2[i-3]==40)&&(stack2[i-7]==41))
if( (stack2[i-4]>=97)&&(stack2[i-6]<=122))
if( (stack2[i-5]>=60)&&(stack2[i-5]<=62))
if((stack2[i-8]==10)){
h=h+7;
dank2=i;
char cemos= stack2[i-4]; //check corect if
char cemos1=stack2[i-6];
if(( cemos==charracter2)||(cemos== now2))
if( (cemos1==charracter2)||(cemos1== now2)){ //program correct
dank1=1;
if((stack2[i-5]==62)&&(cemos==now2)) { // treat(>)
if(now1>charracter1)
cout<
if(now1
cout<<"error.."<
if(now1==charracter1)
cout<<"error..they equal"; }
if((stack2[i-5]==62)&&(cemos==charracter2)) {
if(charracter1>now1)
cout<
if(charracter1
cout<<"error.."<
if(charracter1==now1)
cout<<"error..they equal"; }
if((stack2[i-5]==60)&&(cemos==now2)) { //treat (<)
if(now1
cout<
if(now1>charracter1)
cout<<"error.."<
if(now1==charracter1)
cout<<"error..they equal"; }
if((stack2[i-5]==60)&&(cemos==charracter2)) {
if(charracter1
cout<
if(charracter1>now1)
cout<<"error.."<
if(charracter1==now1)
cout<<"error..they equal"; }
if((stack2[i-5]==61)&&((cemos==charracter2)||(cemos==now2))) { //treat(=)
if(charracter1==now1)
cout<<"they are equal";
else
cout<<"error..one of them is max"; }
} //end satge [semantic]
} //end chech if
if((a2==1)||(a3==1)||(a4==1)) { //to prevent maxing two check check
cout<<"";
if((stack2[i]==10)||((stack2[i]>=97)&&(stack2[i]<=122))) //check error second expretion
c1=1;
if((stack2[i-1]>=97)&&(stack2[i-1]<=122))
c2=1; //check adentifire
if((stack2[i-2]==61))
c3=1; //check (=)
if(((stack2[i-3]>=48)&&(stack2[i-3]<=57))||(stack2[i-3]==now2))
c4=1; //check value
if((stack2[i-4]==59))
c5=1; //check semicolent
if((stack2[i-2]==61)&&(stack2[i-3]==61)) //to repeat(==)
c6=1;
}
if((a2==0)&&(a3==0)&&(a4==0)&&(a5==0)) { //to prevent another check
if((stack2[i]==10)||((stack2[i]>=97)&&(stack2[i]<=122))) //check error first expretion
a1=1;
if((stack2[i-1]>=97)&&(stack2[i-1]<=122))
a2=1; //check adentifire
if((stack2[i-2]==61))
a3=1; //check (=)
if(((stack2[i-3]>=48)&&(stack2[i-3]<=57))||(stack2[i-3]==now2))
a4=1; //check value
if((stack2[i-4]==59))
a5=1; //check semicolent
if((stack2[i-2]==61)&&(stack2[i-3]==61)) //to repeat(==)
a6=1;}
if(f5==0)
if(stack2[i]==10){ //check error if statement
if( (stack2[i-1]==105)&&(stack2[i-2]==102))
f4=1;
if( (stack2[i-3]==40)&&(stack2[i-7]==41))
{f1=1; } //check braket
if( (stack2[i-4]>=97)&&(stack2[i-6]<=122))
f3=1; //check adentifire
if( (stack2[i-5]>=60)&&(stack2[i-5]<=62))
f2=1;
if(stack2[i-8]==10)
f5=1; } //to prevent anothe check
if(stack2[i]!=10)
f6=1; //to prevent message error if we dont write any thing
} //end for statement
cout<<"n___________________________________________________________________n";
cout<<"*******************************************************************n";
cout<<"nMessagen";
cout<<"___________n";
cout<<"compiling COMPILER.CPP:";
if(f6==1){
cout<<"";
if(x!=8) //stage error detection[message]
cout<<"nERROR COMPILER.CPP:error in exprestion";
if(h!=7)
cout<<"nERROR COMPILER.CPP:error in statement if";
if(dank1==0)
cout<<"nERROR COMPILER.CPP:unknow identifire.in statement if";
if (dank2>dank3)
cout<<"nERROR COMPILER.CPP:error in localion of if statement";
if(a2==0)
cout<<"nERROR COMPILER.CPP:using non identifire in first expretion";
if(a3==0)
cout<<"nERROR COMPILER.CPP:using unknow comparate in first expretion";
if(a4==0)
cout<<"nERROR COMPILER.CPP:using unknow expretion in first expretion the identifire showd equal value";
if(a5==0)
cout<<"nERROR COMPILER.CPP:missing semicolent(;) in first expretion";
if(a6==1)
cout<<"nERROR COMPILER.CPP:repeat(=) in first expretion";
if(c2==0)
cout<<"nERROR COMPILER.CPP:using non identifire in second expretion";
if(c3==0)
cout<<"nERROR COMPILER.CPP:using unknow comparate in second expretion";
if(c4==0)
cout<<"nERROR COMPILER.CPP:using unknow expretion in second expretion the identifire showd equal value";
if(c5==0)
cout<<"nERROR COMPILER.CPP:missing semicolent(;) in second expretion";
if(c6==1)
cout<<"nERROR COMPILER.CPP:repeat(=) in second expretion";
if(f3==0)
cout<<"nERROR COMPILER.CPP:using non identifire in if statement";
if(f2==0)
cout<<"nERROR COMPILER.CPP:using un know compute in statement if";
if(f4==0)
cout<<"nERROR COMPILER.CPP:error in writing expretion (if)";
if(f1==0)
cout<<"nERROR COMPILER.CPP:missing braket in if statement";
}
}
برنامج للارقام التي تكون مثلث نجمات
#include
main()
{
int i,x,a;
x=1;
int sure=0;
cin>>a;
for(i=2;i<=a+1;i++){
if(a==x){
cout<<"is mak digonal";
sure=1; }
x=x+i;
}
if( sure==0)
cout<<"is not mak digonal";
}
برنامج يضع بين كل ((aa حرفb) ) وبين كل (bb) يضع (a)
#include
#include
#include
main()
{char string[32],string1[32];
int x,i,sum,m=0;
cin.get(string,8);
int len=strlen(string);
for(i=0;i
if((string[i]=='a')&&(string[i+1]=='a')){
string1[m]=string[i];
++m;
string1[m]='b';
++m;}
else
if((string[i]=='b')&&(string[i+1]=='b')){
string1[m]=string[i];
++m;
string1[m]='a';
++m;}
Else{
string1[m]=string[i];
++m;
}}
for(i=0;i
cout<
ايجاد اكبر عدد واصغر عدد لاكن باستخدام function
#include
void max(int array[])
{
int max=array[0];
for (int j=0;j<5;j++)
if(array[j]>max)
max=array[j];
cout<<"max="<
for ( j=0;j<5;j++)
if(array[j]==max)
cout<<"his location="<<&array[j]<<"n";
}
void min(int array[])
{
int min=array[0];
for (int j=0;j<5;j++)
if(array[j]
min=array[j];
cout<<"min="<
for ( j=0;j<5;j++)
if(array[j]==min)
cout<<"his location="<<&array[j]<<"n";
}
int main()
{
int array[5];
int sure=0;
char x;
cout << "Enter Here the Arrayn";
for (int j=0;j<5;j++)
cin>>array[j];
max(array);
min(array);
}
ترتيب عشر اسماء
#include
int main()
{
char array[5];
int sure=0;
char x;
cout << "Here is the Array befor sortedn";
for (int m=0;m<10;m++){
for (int j=0;j<5;j++)
cin>>array[j];
for (int i=0;i<5-1;i++) {
sure=0;
for (int j=i; j<5;j++) {
if (array[j]
x=array[j];
array[j]=array[i];
array[i]=x;
sure=1;
}
}
if (sure ==0) break;
}
cout << "Here is the Array after sortedn";
for (i=0;i<5;i++)
cout << array[i];
cout<<"naginn";}
return 0;
}
برنامج لجامعة فيها ثلاث كليات وكل كلية فيها اسم الطالب وقسمه وعمره
#include
struct university
{
char universityname[20];
struct college
{
char department[20];
char name[10];
int age;
}college_eng,college_bayo,college_midic;
}university;
main()
{
cout<<"some defintion of the student in IraqnEnter his universityn";
cin>>university.universityname;
cout<<"nstudent in enginerringn";
cout<<"nEnetr his department: ";
cin>>university.college_eng.department;
cout<<"nEnetr his name: ";
cin>>university.college_eng.name;
cout<<"nEnetr his age: ";
cin>>university.college_eng.age;
cout<<"nstudent in bayan";
cout<<"nEnetr his department: ";
cin>>university.college_bayo.department;
cout<<"nEnetr his name: ";
cin>>university.college_bayo.name;
cout<<"nEnetr his age: ";
cin>>university.college_bayo.age;
cout<<"nstudent in midic.n";
cout<<"nEnetr his department: ";
cin>>university.college_midic.department;
cout<<"nEnetr his name: ";
cin>>university.college_midic.name;
cout<<"nEnetr his age: ";
cin>>university.college_midic.age;
cout<<"nThe final resultn";
cout<<"nThe university: ";
cout<
cout<<"nstudent in enginerringn"; //out put for eng.college
cout<<"nhis department: ";
cout<
cout<<"nhis name: ";
cout<
cout<<"nhis age: ";
cout<
cout<<"nstudent in bayan"; //out put for bay.college
cout<<"n his department: ";
cout<
cout<<"n his name: ";
cout<
cout<<"n his age: ";
cout<
cout<<"nstudent in midic.n"; //out put formid.college
cout<<"n his department: ";
cout<
cout<<"nhis name: ";
cout<
cout<<"nhis age: ";
cout<
}
بر نامج لجمع الكلمات الانكليزية
#include
#include
main()
{
char a[10];
int len,i,m;
m=0;
cout<<"please enter the wordn";
cin.get(a,10);
len=strlen(a)-1;
if ((a[len]=='y')&&((a[len-1]!='a') &&(a[len-1]!='o')&&(a[len-1]!='u') && (a[len-1]!='i')&&(a[len-1]!='e')))
{a[len]='i';
m=1;}
for(i=0;i<=len;i++)
cout<
if ((a[len]=='s')||(m==1) )
cout<<"es";
else
cout<<"s";
}
برنامج لتشفير وفك الشفرات
#include
#include
#include
int main()
{char s[20] ;
int sit[20],i,chose,shift,diff,check[20];
cout<<"please enter the statement:-n";
cin.get(s,20) ;
for(;;){
cout<<"npress:n1:to coded statementn2:to open code of statementn3:to exitn";
cin>>chose;
if(chose==3)
cout<<"nnnTHANK YOU AND GOOD LUIK";
break;
cout<<"how lenght your shift: ";
cin>>shift;
int len=strlen(s); //to len of enter to round for statement
for( i=0;i
{if(isupper(s[i])) //if one of it big we store one in other matrax
check[i]=1;
sit[i]=tolower(s[i]); } //small all enter to not inflance of program and take his code
switch(chose)
{case 1:
{ cout<<"after code: ";
for( i=0;i
{ if (sit[i]!=32) //if space come we regret shif
{sit[i]=sit[i]+shift; //size shift
if (sit[i]>122) //if pass(z)
{diff=sit[i]-122;
sit[i]=96+ diff;}}
s[i]=sit[i]; //return him to char
if(check[i]==1 ) //if it was big we gig new char
s[i]=toupper(s[i]);
cout<< s[i];}
break;}
case 2:
{ cout<<"after open code: ";
for( i=0;i
{if (sit[i]!=32){
sit[i]=sit[i]-shift;
if (sit[i]<97) //if pass(A)
{diff=97-sit[i];
sit[i]=123-diff;}}
s[i]=sit[i];
if(check[i]==1 ) //if it was big we gig new char
s[i]=toupper(s[i]);
cout << s[i]; }
break;}
default:
{cout<<"please correct your chossen" ;
break;}
}
}
}
برنامج للبحث عن اسمك بحيث كل سطر من اسطر المصفوفة يحوي اسم شخص
#include
main()
{
char b[5][5],a[5];
int len,i,j,k,m;
k=m=0;
for(i=0;i<5;i++)
for(j=0;j<5;j++)
cin>>b[i][j];
cout<<"please enter the word(size four world)n";
for(i=0;i<5;i++)
cin>>a[i];
len=i ;
for(i=0;i<5;i++)
{for(j=0;j<5;j++)
if(b[i][j]==a[k])
k++;
if (k==len)
{cout<<"yes..yor name found in this matrax in "<< i <<" row";
m=1;
break;}
k=0;
}
if (m==0)
cout<<"no..yor name not found in this matrax ";
}
برنامج لوضع فاصلة عشرية بين كل ثلاثة ارقام لتسهيل القراءة
#include
#include
#include
int main()
{char stack[100],b[100]; //a[100] represent matraix for enter
int i,len,count_semicol,b_count,count_return_v,semicoll_number, k;
b_count=count_return_v=count_semicol=semicoll_number=0;
cout<<"enter your number here: ";
cin.getline(stack,100);
len=strlen(stack);
for(i=len-1;i>=0;i--)
{
if ((count_semicol%3==0)&&(i!=len-1)) //put space
{b[b_count]=',';
++b_count;
semicoll_number=semicoll_number+1 ;
}
b[b_count]=stack[i];
++b_count;
count_semicol=count_semicol+1;}
--b_count; //return pointer to last value
for(i=b_count;i>=0;i--)
{stack[count_return_v]=b[i];
cout<
++count_return_v;
} }
سجل فية عشرون طالب لكل طالب له اسم وعمر وعنوان وعشرة درجات اطبع اسماء الطلاب الناجحون ومعدلاتهم
#include
#include
struct student
{ char name[10];
int age;
int id;
int degres;
نوع الكتاب : rar.
عداد القراءة:
اذا اعجبك الكتاب فضلاً اضغط على أعجبني و يمكنك تحميله من هنا:
شكرًا لمساهمتكم
شكراً لمساهمتكم معنا في الإرتقاء بمستوى المكتبة ، يمكنكم االتبليغ عن اخطاء او سوء اختيار للكتب وتصنيفها ومحتواها ، أو كتاب يُمنع نشره ، او محمي بحقوق طبع ونشر ، فضلاً قم بالتبليغ عن الكتاب المُخالف:
قبل تحميل الكتاب ..
يجب ان يتوفر لديكم برنامج تشغيل وقراءة ملفات rar
يمكن تحميلة من هنا 'http://www.rarlab.com/download.htm'