حل تمرین کتاب برنامه نویسی به زبان ++C عین الله جعفرنژاد قمی
در این بخش به حل تمرین کتاب برنامه نویسی به زبان ++C عین الله جعفرنژاد قمی می پردازیم. کتاب برنامه نویسی به زبان ++C تالیف مهندس عین الله جعفرنژاد قمی یکی از کتاب های مرجع در زبان برنامه نویسی سی پلاس پلاس ++C می باشد که اکثر دانشجویان و علاقه مندان در حوزه برنامه نویسی از آن استفاده می کنند. کتاب حاضر در انتهای هر فصل تمرینات را برای کار معرفی کرده که اکثراً برنامه های ساده ای می باشند. لذا در این پست قرار هست تمرینات این کتاب بصورت کامل همراه با کد برای شما عزیزان ارائه شود.
تمرین شماره 1
برنامه ای بنویسید که دو مقدار اعشاری را از ورودی خوانده و تفاضل و حاصلضرب و حاصل تقسیم آنها را محاسبه کرده به خروجی ببرد. برنامه وقتی خاتمه می یابد که هر دو عدد اعشاری صفر باشند.
حل تمرین شماره 1
#include <iostream.h> #include <conio.h> #include <math.h> int main(){ float a , b ,result ; cout << "please enter 2 float number \n"; cout << " enter a : "; cin >> a ; cout << " enter b : "; cin >> b ; while (a!=0 || b!=0){ result = (a*b)-(a/b); cout << " result = " << result ; cout << "\n please enter 2 float number "; cout << " enter a : "; cin >> a ; cout << " enter b : "; cin >> b ; } getch(); return 0 ; }
تمرین شماره 2
بر نامه ای بنویسید که با استفاده از حلقه های تودرتو خروجی زیر را تولید کند.
$$$$$$
$$$$$$
$$$$$$
$$$$$$
حل تمرین شماره 2
#include <iostream.h> #include <conio.h> int main(){ int i , j ; for (i=0 ; i<4 ; i++){ for (j=0 ; j<6 ; j++){ cout << '$'; } cout << '\n'; } getch(); return 0 ; }
تمرین شماره 3
برنامه ای بنویسید که ضرایب معادله درجه دوم را از ورودی گرفته، معادله را حل کند.
a x ^ 2 + b x + c = 0
حل تمرین شماره 3
#include <iostream.h> #include <conio.h> #include <math.h> int main(){ int a,b,c; int d; double r1,r2; cout << "enter 3 number (a,b,c) for ax^2+bx+c \n" ; cout << " please enter a :" ; cin >> a ; cout << " please enter b :" ; cin >> b ; cout << " please enter c :" ; cin >> c ; d= (b*b) - (4*a*c); if (d>0){ r1=((-b)-sqrt(d))/(2*a); r2= ((-b)+sqrt(d))/(2*a); cout << "r1 : " << r1 <<'\t'<< "r2 : " << r2; } else if (d==0){ r1 = (-b)/(2*a); cout << " r1,r2 : " << r1; } else if (d<0) cout << " rishe nadarim " ; getch(); return 0 ; }
تمرین شماره 4
برنامه ای بنویسید که عددی از 1 تا 7 را خوانده، روزی از هفته را که معادل با آن است را در خروجی چاپ کند.
حل تمرین شماره 4
# include <iostream.h> # include <conio.h> int main(){ int x; cout << "please enter number 1 - 7 for days : " ; cin >> x; switch (x) { case 1 : cout << "saturday"; break; case 2 : cout << "sunday"; break; case 3 : cout << "monday"; break; case 4 : cout << "tusday"; break; case 5 : cout << "thirsday"; break; case 6 : cout << "wendsday"; break; case 7 : cout << "friday"; break; default : cout << " this number not corect becuase 1 - 7 "; break; } getch(); return 0; }
تمرین شماره 5
برنامه ای بنویسید که حاصل عبارت زیر را محاسبه کند ( n < 10 ).
1 + (1/2!) + (1/3!) + … + (1/n!)
حل تمرین شماره 5
# include <iostream.h> # include <conio.h> int main(){ int i , num ; long int fact = 1 ; float sum = 0 ; clrscr(); cout << "Enter one number for factoriel : " ; cin >> num ; for (i=1 ; i<=num ; i++ ) { fact *= i ; sum += (1/(float)fact) ; } cout << "\nsum : " << sum ; getch(); return 0; }
تمرین شماره 6
برنامه ای بنویسید که شماره کارمندی و حقوق تعدادی از کارکنان موسسه ای را دریافت کرده، براساس تعرفه زیر، مالیات حقوق آنها را محاسبه کند و به خروجی ببرد. سپس مشحص کند، بیشترین دریافتی مربوط به کدام کارمند است.
از مالیات معاف 400،000 > حقوق
10 درصد مالیات نسبت به مازاد 500،000 > حقوق > 400،001
15 درصد مایات نسبت به مازاد 700،000 > حقوق > 500،001
17 درصد مالیات نسبت به مازاد 700،000 < حقوق
حل تمرین شماره 6
# include <iostream.h> # include <conio.h> long int main(){ int i , n ; long int number , maxnumber, price , acord ; float salary , tax , maxsalary = 0 ; cout << " please tell sum employers : " ; cin >> n ; for (i = 1 ; i <=n ; i++ ) { cout << "\n please number employer : " ; cin >> number ; cout << "\n please salary employer : " ; cin >> price ; if (price <= 400000) { cout << "\n salary is " << price ; cout << " \n ----------------------------------" ; } else if ( 400000 < price && price < 500001 ) { acord = price - 400000; tax = (10 * acord)/ 100 ; salary = tax + price ; cout << "\n salary is " << salary ; cout << " \n ----------------------------------" ; } else if ( 500000 < price && price < 700001 ) { acord = price - 400000; tax = (15 * acord)/ 100 ; cout << "tax " << tax ; salary = tax + price ; cout << "\n salary is " << salary ; cout << " \n ----------------------------------" ; } else if ( price > 700000 ) { acord = price - 400000; tax = (17 * acord)/ 100 ; salary = tax + price ; cout << "\n salary is " << salary ; cout << " \n ----------------------------------" ; } if (price > maxsalary){ maxsalary = salary ; maxnumber = number ; } } cout << " \n ====================================" ; cout << " \n maixmum salary is : " << maxsalary ; cout << " \n maixmum salary number is : " << maxnumber ; getch(); return 0; }
تمرین شماره 7
برنامه ای بنویسید که تعداد n جمله از سری فیبوناچی را تولید کند.
1 1 2 3 5 8 13 …
حل تمرین شماره 7
#include <iostream.h> #include <conio.h> int main(){ int x=1 , g = 1 , z , k , n ; clrscr(); cout << " how many number for fibonachi ? : " ; cin >> n ; n -= 2 ; cout << x << " " << g << " " ; z = x + g ; cout << z << " " ; for (k = 1 ; k <= n -1 ; k++ ){ x = g ; g = z ; z = x + g ; cout << z << " " ; } getch() ; return 0 ; }
تمرین شماره 8
برنامه ای بنویسید که کارکتری را که نشان دهنده رنگی است، از ورودی خوانده به شما بگوید که چه رنگی را می خواهد انتخاب کند. مثلاٌ: کاربر حرف ‘r’ را وارد کرد برنامه به او بگوید که دوست دارد رنگ قرمز را انتخاب کند . برای تمام موارد حروف کوچک و بزرگ کنترل شود.
حل تمرین شماره 8
#include <stdio.h> #include <iostream.h> #include <conio.h> int main(){ char ch , x='y' ; while (x=='y'){ cout << " please enter r,g,b,w,y for color : "; cin >> ch ; switch (ch) { case 'R' : case 'r' : cout << " red \n" ; break; case 'G' : case 'g' : cout << " Grean \n"; break; case 'B' : case 'b' : cout << " black \n"; break; case 'W' : case 'w' : cout << " White \n"; break; case 'Y' : case 'y' : cout << " Yellow \n"; break; default : cout << " This is not into list color " ; } cout << "please enter Y/N for continu : " ; cin>>x; } getch() ; return 0 ; }
تمرین شماره 9
برنامه ای بنویسید که خروجی زیر را در صفحه نمایش چاپ کند.
*
**
***
****
*****
******
حل تمرین شماره 9
#include <iostream.h> #include <conio.h> int main(){ int i , j ; for (i = 1 ; i<=6 ; i++ ) { for ( j = 1 ; j<=i ; j++ ) { cout << "*"; } cout << "\n" ; } getch() ; return 0 ; }
تمرین شماره 10
برنامه ای بنویسید که اعدادی را از ورودی خوانده تشخیص دهد آیا اعداد مورد نظر، کامل هستند یا خیر. عددی کامل است که مجموع مقسوم علیه های آن ( به جزء خودش ) برابر با آن عدد باشد . پس از بررسی هر عدد، برنامه باید از کاربر سوال کند که می خواهد به کارش ادامه دهد یا خیر؟
حل تمرین شماره 10
#include <iostream.h> #include <conio.h> int main(){ int n ,i, s=1,x=1; char z; while (x){ cout << " please enter 1 number for compelet number : "; cin >> n; for (i=2;i<n;i++){ if ((n%i)==0){ s+=(n/i); } } if (n==s){ cout <<" number is complet : " << n; } else { cout << "not complete"; } cout << " \n do you want to continue y/n : " ; cin >> z ; if (z=='y') continue; else x=0; } getch(); return 0 ; }
تمرین شماره 11
برنامه ای بنویسید که شماره دانشجویی و معدل تعداد n دانشجو را از ورودی خوانده ، دانشجویی را که دومین معدل را از نظر بزرگی دارد پیدا کند و به خروجی ببرد.
حل تمرین شماره 11
#include <iostream.h> #include <conio.h> int main(){ int n , i; long int number , number1 = 0 , number2 = 0 ; float ave=0 , maxave = 0 , twoave = 0; cout << "please n student : " ; cin >> n ; for (i=0 ; i<n ; i++) { cout << " please number student : " ; cin >> number ; cout << " please average student : " ; cin >> ave ; if (ave > 20 ) { cout << " please enter average <= 20 : " ; cin >> ave ; } if ( ave > maxave ) { twoave = maxave ; maxave = ave ; number2 = number1 ; number1 = number ; } else if (ave > twoave ){ twoave = ave ; number2 = number ; } } cout << " maxaverage is " << maxave << " number student " << number1 ; cout << "\n twoaverage is " << twoave << " number student " << number2; getch() ; return 0 ; }
حل تمرین کتاب برنامه نویسی به زبان ++C عین الله جعفرنژاد قمی
تمرین شماره 12
تابعی بنویسید كه یك اشاره گر ار نوع صحیح و عدد صحیح n را به عنوان پارامتر پذیرفته، حافظه ای برای n عدد صحیح تخصیص دهد و آدرس آن را به برنامه برگرداند.
حل تمرین شماره 12
#include<iostream.h> #include<conio.h> #include<string.h> void allocatemem(int *p, int n); int main(){ int *p, n , i; clrscr() ; cout << " Enter Count: " ; cin >> n; allocatemem(p, n); cout << "Memory Allocated."; getch(); return 0 ; } //******************************************************************** void allocatemem(int *p, int n){ p = new int [n]; }
تمرین شماره 13
تابعی بنویسید كه یك رشته و یك مقدار عددی را به عنوان آرگومان پذیرفته ،تعدادی از كاراكترهای این رشته را با این عدد مشخص می شوند در رشته دیگر قرار داده، برگرداند. سپس برنامه ای بنویسید كه از آن استفاده كند.
حل تمرین شماره 13
#include<iostream.h> #include<conio.h> #include<string.h> void find(char *str, int n, char *out); int main(){ char *str, *out; int n; str = new char[100]; out = new char[100]; clrscr() ; cout << " Enter String: " ; cin.get ( str , 100 ) ; cout << " Enter Number: " ; cin >> n; find(str, n, out); cout << "Output is : " << out; getch(); return 0 ; } //******************************************************************** void find(char *str, int n, char *out){ int x, i, count; int digits[20]; for (i=0 ; n > 0 ; i++){ x = n % 10; n = n /10; digits[i] = x; } count = i; for (i = 0 ; *str ; str++) for (int j= count - 1; j >= 0 ;j--) if ((*str - 48) == digits[j]){ *(out + i) = *str; i++; } *(out + i) = '\0'; }
تمرین شماره 14
برنامه ای بنویسیدكه دو رشته را از ورودی خوانده، یكی را در دیگری كپی كند.
حل تمرین شماره 14
#include<iostream.h> #include<conio.h> #include<string.h> int main(){ char *str1, *str2, *savestr1; str1 = new char[100]; str2 = new char[100]; clrscr() ; cout << " Enter String1: " ; cin.get ( str1 , 100 ) ; cout << " Enter String2: " ; cin.get (); cin.get ( str2 , 100 ) ; //str1 -> str2 savestr1 = str1; for (int i = 0; *str1; i++) *(str2 + i) = *str1++; *(str2 + i) = '\0'; cout << "String1 is :" << savestr1 << "\n"; cout << "String2 is : " << str2; getch(); return 0 ; }
تمرین شماره 15
برنامه ای بنویسید كه رشته ای را از ورودی خوانده، فقط آن رشته هایی را كه با حروف ‘b’ شروع می شوند در خروجی چاپ كند و به جای آخرین رشته، فقط كلید Enter را فشار دهید.
حل تمرین شماره 15
#include<iostream.h> #include<conio.h> #include<string.h> int main(){ char *name; name = new char[100]; clrscr() ; do { cout << " Enter String: " ; cin.get(); cin.get ( name , 100 ) ; if (*name == 'b') cout << name << "\n"; } while (*name); return 0 ; }
تمرین شماره 16
برنامه ای بنویسید كه رشته عددی را حاوی نقطه اعشار است از ورودی خوانده، آن را به عدد اعشاری تبدیل كند عنوان مثال ،رشته “42/123 ” رابه عدد 42/123 تبدیل نماید. تابعی برای خواندن رشته، تابعی برای تبدیل و تابعی برای نوشتن عدد در خروجی بنویسید. پارامترها از طریق فراخوانی با ارجاع به توابع ارسال شوند.
حل تمرین شماره 16
#include<iostream.h> #include<conio.h> #include<string.h> #include<math.h> void input(char * str); void ascii_to_double(char * str, double * value); void output(double *f) ; int main(){ char str[20]; double f; clrscr() ; input(str); ascii_to_double(str, &f); output(&f); getch(); return 0 ; } //************************************************************ void input(char *str){ cout << " Enter String (number) : " ; cin.get ( str , 20 ) ; } void ascii_to_double(char * str, double * value){ int flag = 0 , i = 0; *value = 0 ; while (*str){ if (*str == '.') flag = 1; else if (*str >= '0' && *str <= '9') if (flag == 0 ) *value= (*value * 10) + (*str -48); else *value= *value + (*str -48) / pow(10, ++i); else { cout << "invalid char"; break; } str++; } } void output(double *f){ cout << " Number is : " ; cout << *f; }
تمرین شماره 17
برنامه ای بنویسید كه سه مقدار عددی را به عنوان آرگومان پذیرفته، به تابعی ارسال كند و تابع بزرگترین مقدار آنها را پیدا كند. برنامه باید تعداد آرگومان ها را كنترل كند.
حل تمرین شماره 17
#include<iostream.h> #include<conio.h> #include<stdlib.h> int max( int a, int b , int c); int main(int argc , char *argv[]){ clrscr(); if (argc <= 3) { cout << "Wrong number of parameters"; getch(); exit; } cout << max(atoi(argv[1]), atoi(argv[2]), atoi(argv[3])); getch () ; return 0 ; } int max( int a, int b , int c) { int max = a; if (b > max) max = b; if (c > max) max= c; return max; }
تمرین شماره 18
برنامه ای بنویسید كه رشته ای را از ورودی خوانده، به تابعی ارسال كند و تابع آن را به طور معكوس به خروجی ببرد.
حل تمرین شماره 18
#include<iostream.h> #include<conio.h> #include<string.h> void invers (char *str) ; int main(){ char str[100]; clrscr(); cout << " Enter string : " ; cin.get (str , 100 , '.') ; invers (str) ; getch () ; return 0 ; } void invers ( char *str){ char *savestr = str; while (*str) str++; for ( str--; str >= savestr ; str--) cout << *str; }
تمرین شماره 19
برنامه ای بنویسید كه نام و شماره تلفن تعدادی از مشتریان مخابرات را از ورودی خوانده، در آرایه هایی ذخیره نماید. شماره تلفن ها در آرایه عددی و نام مشتریان در آرایه ای از اشلاره گرهای رشته ای ذخیره شوند. سپس نامی از ورودی خوانده شده شماره تلفن وی را مشخص كرده، در خروجی چاپ كند. برناممه باید برای ادامه كار، از كاربر سوال كند. اگر كاربر جواب منفی داد، برنامه خاتمه پیدا می كند. توابعی برای خواندن اطلاعات، جستجو و چاپ نتایج جستجو بنویسید.
حل تمرین شماره 19
#include<iostream.h> #include<conio.h> #include<string.h> void input(char **names, int *numbers, int n) ; int search(char **names, int n, char *name) ; void output(int *numbers, int index) ; int main(){ char **names, name[21]; int *numbers, n, index; char key; clrscr() ; cout << " Enter Count : " ; cin >> n; names = new char * [n]; numbers = new int [n]; input (names , numbers, n); do { cout << " Enter Name For Search: " ; cin.get (); cin.get ( name , 20 ) ; index = search(names, n, name); if (index != -1){ output(numbers, index); cout << " For a new search press <y>\n" ; } else cout << " Not Found, for a new search press <y>\na" ; key = getch(); } while (key == 'y'); return 0 ; } //************************************************************ void input(char **names, int *numbers, int n){ char *name; for (int i = 0; i < n; i++){ name = new char [21]; cout << " Enter Name : " ; cin.get(); cin.get ( name , 20 ) ; *(names + i) = name; cout << " Enter Phone Number : " ; cin >> *(numbers + i); } } int search(char **names, int n, char *name){ for (int i = 0; i < n; i++){ if (strcmp( *(names + i) , name) == 0) return i; } return -1; } void output(int *numbers, int index){ cout << " Phone Number is : " ; cout << *(numbers + index); }
تمرین شماره 20
برنامه ای بنویسید كه رشته ای را خوانده مجموع ارقام موجود در رشته را محاسبه و چاپ كند.
حل تمرین شماره 20
#include<iostream.h> #include<conio.h> void separat ( char a[] , char b[] , int len ) ; void change ( char b[] , int arr[] , int len ) ; void sum ( int arr[] , int len ) ; int main(){ const int k=11 ; char a[k] , b[k] ; int arr[k] ; clrscr() ; cout << " Enter string : " ; cin.get ( a , k ) ; separat ( a , b , k ) ; change ( b , arr , k ) ; sum ( arr , k ) ; getch() ; return 0 ; } //********************************************************* void separat ( char a[] , char b[] , int len ){ int i , j=0 ; for ( i=0 ; i<len ; i++ ){ if ( a[i] >= '0' && a[i] <='9' ){ b[j] = a[i] ; j++ ; } else { b[j] ='0' ; j++ ; } } } //********************************************************** void change ( char b[] , int arr[] , int len ){ int i ; for ( i=0 ; i<len ; i++ ){ arr[i] = b[i] - 48 ; } } //*********************************************************** void sum ( int arr[] , int len ){ int i , p=0 ; for ( i=0 ; i<len ; i++ ){ p += arr[i] ; } cout << " sum = " << p ; }
تمرین شماره 21
برنامه ای بنویسیدكه رشته ای را خوانده موارد زیر را مشخص كند:
الف) تعداد حروف كوچك ب) تعداد حروف بزرگ ج) تعداد حروف صدادار د) تعداد ارقام موجود در رشته
حل تمرین شماره 21
#include<iostream.h> #include<conio.h> main(){ char a[100]; int l1=0,l2=0,l3=0,s=0; clrscr(); cout<<"print your string:\n"; cin>>a; for(int i=0;a[i];i++){ if(a[i]>='a'&&a[i]<='z')l1++; if(a[i]>='A'&&a[i]<='Z')l2++; if(a[i]>='0'&&a[i]<='9')l3++; s++; } cout<<" "<<l1<<" "<<l2<<" "<<l3<<" "<<s; getch(); return 0; }
حل تمرین کتاب برنامه نویسی به زبان ++C عین الله جعفرنژاد قمی
تمرین شماره 22
برنامه ی بنویسید كه با خواندن تعدادی عدد از ورودی، آنها را در آرایه قرار دهد. سپس كلیه عناصر آرایه را بر عنصر وسط تقسیم كند. اگر عنصر وسط صفر باشد، بر عنصر بعد از عنصر وسط تقسیم كند.
حل تمرین شماره 22
#include <iostream.h> #include <conio.h> void action(int a[],int loc,int n); //************************************************ int main() { int i,mid,n,a[100],sign=-1; clrscr(); cout << endl << " Enter n:" ; cin >> n; mid=n/2; for(i=0;i<n;i++) { cout << endl << " Enter a[" << i+1 << "]:"; cin >> a[i]; } for(i=0;i<=mid;i++) { if ( a[mid+(sign*i)]!=0) { action(a,mid+(sign*i),n); break; } if (sign==1) i--; sign=-sign; } if(i>mid) cout << endl << "All element are zero"; getch(); return 0; } //************************************************ void action(int a[],int loc,int n) { int i; for (i=0;i<n;i++) cout << endl << a[i] << " / " << a[loc] << " =" << (float) a[i]/a[loc]; }
تمرین شماره 23
برنامه ای بنویسید كه رشته ای را از ورودی خوانده، تمام كلمات چهار حرفی آن را باكلمه love جایگزین كند. مثلاً رشته I hate you,you doer باید به رشته I love you, you love تبدیل شود.
حل تمرین شماره 23
#include<iostream.h> #include<conio.h> #include<string.h> void Replace( char a[] , char b[]) ; int main(){ const int k=100; char a[k], b[k]; clrscr() ; cout << " Enter string : " ; cin.get ( a , k ) ; strcat(a, " "); Replace( a , b) ; cout << b; getch() ; return 0 ; } //************************************************************ void Replace( char a[] , char b[]){ char word[25]; int i , j = 0, p = 0 ; b[0] = 0; for ( i=0 ; i<strlen(a) ; i++ ) { if ( a[i] == ' '){ word[j] = 32; word[j + 1] = 0; if ((i - p) == 4) strcat(b , "love "); else strcat(b , word); p = i + 1; j = 0; } else { word[j] = a[i]; j++; } }
تمرین شماره 24
برنامه ای بنویسید كه دو رشته s1 و s2 را از ورودی خوانده، رشته s1 را در رشته s2 جست و جو كند. خواندن رشته ها توسط تابع اصلی و جست وجو رشته توسط تابعی انجام شود.
حل تمرین شماره 24
#include<iostream.h> #include<conio.h> #include<stdlib.h> void search(char a[],char b[],int ,int ); void main(){ const int k=20,p=5; char a[k],b[p]; clrscr(); cout << "enter your strigs:"; cin >> a >> b; search(a,b,k,p); } void search(char a[],char b[],int k,int p){ for(int len=1;b[len];len++); for(int i=0;i<k;i++){ for(int j=0;j<len & i+j<k; j++){ if(a[i+j]!=b[i]) break ; if(j==len-1){ cout<<"found."; getch(); exit(0); } } } cout<<"not found."; getch(); }
تمرین شماره 25
برنامه ای بنویسید كه رشته ای را از ورودی خوانده، مشخص كند كه آیا رشته از هر دو طرف كه در نظر گرفته شود یكسان است یاخیر . مثلاً رشته “beeb ” چنین خاصیتی دارد.
حل تمرین شماره 25
#include<iostream.h> #include<conio.h> #include<stdlib.h> int main(){ const int n=21 ; char arr[n] ; clrscr() ; int i , j=0 , count=0 ; cout << " Enter string : " ; cin.get ( arr , n ) ; for ( i=0 ; arr[i] ; i++ ){ count ++ ; } int help=count; do { count -- ; if ( arr[j] == arr[count] ) j++ ; else{ cout << "no" ; getch() ; exit(0); } cout << "yes" ; }while ( j < help/2 ) ; cout<<"yes"; getch() ; return 0 ; }
حل تمرین کتاب برنامه نویسی به زبان ++C عین الله جعفرنژاد قمی
تمرین شماره 26
برنامه ای بنویسید كه رشته ای را كه به نقطه ختم می شود از ورودی خوانده، كاركترهای موجود در رشته را به همراه تعداد دفعات تكرار آنها به خروج ببرد.
حل تمرین شماره 26
#include<iostream.h> #include<conio.h> #include<string.h> void Calc( char a[]) ; int main(){ const int k=100; char a[k]; clrscr() ; cout << " Enter string : " ; cin.get ( a , k , '.') ; Calc( a ) ; getch() ; return 0 ; } //************************************************************ void Calc( char a[]){ int ar[30]; int i; char c; for ( i=0 ; i<30 ; i++ ) ar[i] = 0; for ( i=0 ; i<strlen(a) ; i++ ) ar[ (a[i] - 97)]++; for ( i=0 ; i<30 ; i++ ) if (ar[i] != 0) { c = i + 97; cout << c << " " << ar[i] << "\n"; } }
تمرین شماره 27
برنامه ای بنویسید كه تعداد عدد را از ورودی خوانده، آنها را به طور مرتب در آرایه ای قرار دهد (دقت داشته باشید كه اعدد در موقع قرار گرفتن در آرایه، به طور صعودی مرتب باشند)، سپس آرایه مرتب را به خروجی ببرد.
حل تمرین شماره 27
#include<iostream.h> #include<conio.h> void input ( int [] , int ) ; void bubble ( int [] , int ) ; void output ( int [] , int ) ; int main(){ const int k = 10 ; int arr[k] ; clrscr() ; cout << " Enter arrey : " ; input ( arr , k ) ; bubble ( arr , k ) ; output ( arr , k ) ; getch() ; return 0 ; } void input ( int arr[] , int k ){ int i ; for ( i=0 ; i<k ; i++ ){ cin >> arr[i] ; } } void bubble ( int arr[] , int k ){ int i , j , temp ; for ( i=k-1 ; i>0 ; i-- ){ for ( j=0 ; j<i ; j++ ){ if ( arr[j] > arr[j+1] ){ temp = arr[j] ; arr[j] = arr[j+1] ; arr[j+1] = temp ; } } } } void output ( int arr[] , int k ){ int i ; for ( i=0 ; i<k ; i++ ){ cout << arr[i] ; } }
تمرین شماره 28
برنامه ای بنویسید كه یك عدد 20 رقمی را باعدد 20 رقمی صحیح دیگر جمع كند برای این منظور، هر یک از دو عدد را به صورت رشته ای از ورودی بخوانید. سپس هر كاراكتر را به رقم معادل آن تبدیل كرده در یک عنصر آرایه قرار دهد و هر عدد را به همین روش در آرایه ذخیره نماید( هر عدد در یك آرایه ). سپس حاصل جمع این آرایه دو عدد 20 رقمی را محاسبه كرده، در خروجی چاپ كنید. تابعی برای خواندن رشته ها، تابعی برای تبدیل كاراكتر به رقم، تابعی برای انجام عمل جمع و تابعی برای چاپ عدد بنویسید.
حل تمرین شماره 28
#include<iostream.h> #include<conio.h> const int n = 20; void input ( char a[] , char b[] , int len ); void chang ( char a[] , char b[] , int len , int arr1[], int arr2[]); void sum ( int a[] , int b[] , int len , int c[]); void output ( int c[] , int len ); void main(){ char a[n + 1] , b[n + 1] ; int arr1[n], arr2[n], arr3[n + 1]; clrscr() ; input ( a , b , n ) ; chang ( a , b , n , arr1, arr2); sum ( arr1 , arr2 , n , arr3); output ( arr3 , n + 1 ); getch() ; } //******************************************************** void input ( char a[] , char b[] , int len ){ cout << " Enter number 1 : " ; cin >> a ; cout << " Enter number 2 : " ; cin >> b ; } //********************************************************* void chang ( char a[] , char b[] , int len , int arr1[], int arr2[]){ int i; for ( i=0 ; i<len ; i++ ){ arr1[i] = a[i] - 48; arr2[i] = b[i] - 48; } } //********************************************************* void sum ( int a[] , int b[] , int len , int c[]){ int m , temp = 0; do{ len--; m = a[len] + b[len] + temp ; if ( m > 9 ) { c[len + 1] = m - 10 ; temp = 1 ; } else{ c[len + 1] = m; temp = 0 ; } } while ( len != 0 ) ; c[0] = temp; } //********************************************************** void output ( int c[] , int len ){ int i ; if (c[0] != 0) cout << c[0]; for ( i=1 ; i<len ; i++ ){ cout << c[i] ; } }
تمرین شماره 29
برنامه ای بنویسید که عناصر دو آرایه 5 عنصری را که همگی از نوع صحیح هستند از ورودی خوانده، آنها را به روش حبابی مرتب کند و سپس این دو آرایه را به طور مرتب در هم ادغام نماید. تابعی برای اخذ ورودی، تابعی برای مرتب سازی، تابعی برای ادغام و تابعی برای چاپ ارایه ها بنویسید.
حل تمرین شماره 29
#include<iostream.h> #include<conio.h> void input ( int [] , int ) ; void bubble ( int [] , int ) ; void ed ( int a[] , int b[] , int c[] , int ) ; void output ( int c[] , int n ) ; int main(){ int a[5] , b[5] , c[10] ; clrscr() ; input ( a , 5 ) ; input ( b , 5 ) ; bubble ( a , 5 ) ; bubble ( b , 5 ) ; ed ( a , b , c , 10 ) ; output ( c , 10 ); getch(); return 0 ; } //*************************************************************** void input ( int a[] , int k ){ int i ; cout << " Enter array : " << '\n' ; for ( i=0 ; i<k ; i++ ){ cin >> a[i] ; } } //**************************************************************** void bubble ( int a[] , int k ){ int i, j ,temp ; for ( i=k-1 ; i>0 ; i-- ){ for ( j=0 ; j<i ; j++ ){ if ( a[j] > a[j+1] ){ temp = a[j]; a[j] = a[j+1] ; a[j+1] = temp ; } } } } //**************************************************************** void ed ( int a[] , int b[] , int c[] ,int k ){ int i=0 ; for ( i=0 ; i<k/2 ; i++ ){ c[i] = a[i] ; c[i+ (k/2) ]= b[i] ; } bubble ( c , 10 ) ; } //************************************************************** void output ( int c[] , int n ){ int i ; for ( i=0 ; i<n ; i++ ){ cout << c[i] ; } getch() ; }
حل تمرین کتاب برنامه نویسی به زبان ++C عین الله جعفرنژاد قمی
تمرین شماره 30
برنامه ای بنویسید که شماره دانشجویی تعدادی از دانشجویان را از ورودی خوانده، در آرایه ای قرار دهد و سپس آرایه را به روش انتخابی به طور صعودی مرتب کند مرتب سازی به روش انتخابی انجام می شود:
کوچکترین عنصر آرایه پیدا شده، جای آن با عنصر اول آرایه عوض می شود. این روند تا مرتب سازی کامل آرایه ادامه می یابد. پس از مرتب سازی نتیجه را در خروجی چاپ کنید. سه تابع به کار ببرید، تابعی برای خواندن عناصر آرایه، تابع برای مرتب سازی و تابع برای چاپ عناصر آرایه.
حل تمرین شماره 30
#include <iostream.h> #include <conio.h> //---------- input ------------- void input(int *number,int n){ int i; for (i=0; i<n;i++){ cout<<"please number student : " ; cin>>*(number+i); if (*(number+i)>20){ cout << " please enter number betwin 0 - 20 \n"; i-=1; } } } //---------- sort ------------- void sort(int *number,int n){ int k,i,j; for (i=0;i<n;i++){ for (j=0;j<n;j++){ if (number[i]<number[j]){ k=number[i]; number[i]=number[j]; number[j]=k; } } } } //---------- print ------------- void print(int *number,int n){ int i; for (i=0;i<n;i++){ cout<<*(number+i)<<'\t'; } } //---------- main ------------- int main(){ int *number,n; cout << " please student sum : "; cin>>n; number=new int [n]; input(number,n); sort(number,n); print(number,n); getch(); return 0; }
تمرین شماره 31
برنامه ای بنویسید که عدد صحیح n را از ورودی خوانده تمام اعداد اول قبل از آن عدد را با استفاده از تعریف زیر تعیین کرده به خروجی ببرد:
عددی اول است که بر هیچکدام از اعداد اول قبل از خودش قابل قسمت نباشد.
حل تمرین شماره 31
#include <iostream.h> #include <conio.h> int main(){ int number,i,m,count=0; cout<< "please one number : " ; cin>>number; cout<<"addade aval : "<<'\t'; for (i=1;i<number;i++){ for (m=2; m<=i ; m++){ if (i%m==0) count++; } if (count==1) cout<<i<<'\t'; count=0; } getch(); return 0; }
تمرین شماره 32
برنامه ای بنویسید که عدد اعشاری را از ورودی خوانده ، هر یک از قسمت های صحیح و اعشاری آن را به صورت یک عدد صحیح به خروجی ببرد. به عنوان مثال، عدد 42/13 به صورت دو عدد صحیح 13 و 42 به خروجی برود.
حل تمرین شماره 32
#include<iostream.h> #include<conio.h> main(){ long double a; clrscr(); cout<<"enter a number:"; cin>>a; long int a1; a1=(long int)a; a=a-(long double)a1; long int b=0; int i=0; while(a>0.0001&&i<5&&a<0.9999){ a*=10; b=b*10+(long int)a; a-=(long double)(long int)a; i++; } if(a>0.9999)b++; cout<<" "<<a1<<" "<<b; getch(); return 0; }
تمرین شماره 33
برنامه ای بنویسید که یک عدد اعشاری مثل 21/643 را خوانده، وارون آن را بیابد. وارون این عدد 346/12 است.
حل تمرین شماره 33
#include <stdlib.h> #include <stdio.h> #include<string.h> /*-----------------------------------*/ int main(void) { int g=10; double n; char s[25]; /*-----------------------------------*/ n = 48699.2047; gcvt(n,g,s); printf("------------------------------varoonge-------------------------\n"); printf("namaysh = %s\n", strrev(s)); }
تمرین شماره 34
برنامه ای بنویسید که سال تولد کاربر را از ورودی خوانده، مشخص کند که او چند سال، چند ماه، چند روز، چند ساعت، چند دقیقه و چند ثانیه عمر کرده است .
حل تمرین شماره 34
#include<iostream.h> #include<conio.h> int main(){ int x,y,s,m,r,h,d,f; cout<<"enter a number of sale tavalod:"; cin>>x; cout<<"enter a number of sale hazer:"; cin>>y; s=y-x; m=(y-x)*12; r=(y-x)*365; h=(y-x)*8760; d=(y-x)*525600; f=(y-x)*31536000; cout<<"s="<<s<<"m="<<m<<"r="<<r<<"h="<<h<<"d="<<d<<"f="<<f; getch(); return 0; }
تمرین شماره 35
برنامه ای بنویسید که دو عدد صحیح مثبت را از ورودی خوانده ، آنها را به روش تفریق بر هم تقسیم نماید.
حل تمرین شماره 35
include <iostream.h># # include <conio.h> int main(){ int a,b,c=0; cout << " Enter tow number "; cin >> a >> b; while (a>=b){ a = a - b; c += 1; } cout << " KHAREJ GHESMAT = " << c; cout << " BAGHI MANDE = " << a; getch(); return 0; }
تمرین شماره 36
برنامه ای بنویسید که فاصله ای بر حسب فوت و اینچ گرفته، معادل آن را برحسب متر و سانتیمتر بیان کنید. هر فوت 3048/0 متر، یک متر 100 سانتیمتر و هر فوت 12 اینچ است. حداقل از سه تابع استفاده کنید ، یکی برای ورودی، یکی برای انجام محاسبات و دیگری برای خروجی.
حل تمرین شماره 36
# include <iostream.h> # include <conio.h> void input1(float fot,float inch); void hsb(float fot,float inch); void output1 (float metr,int sw); float fot,inch,metr; int main(){ input1(fot,inch); getch(); return 0; } void input1(float fot,float inch){ cout << "Enter for foot "; cin >> fot; cout << "Enter for INCH "; cin >> inch; hsb(fot,inch); } void hsb(float fot,float inch){ metr = fot * 0.3048; output1 (metr,1); metr = (inch * (0.3048 / 12))*100; output1 (metr,2); } void output1(float metr,int sw){ if (sw == 1){ cout << " \n FOT = " << metr; } if (sw == 2){ cout << "\n INCH = " << metr; } }
حل تمرین کتاب برنامه نویسی به زبان ++C عین الله جعفرنژاد قمی
تمرین شماره 37
تابعی بنویسید که دو آرگومان را بپذیرد و آرگومان اول را به توان آرگومان دوم برساند. آرگومان اول یک مقدار Double و آرگومان دوم یک مقدار صحیح مثبت یا منفی است. برنامه ای بنویسید که از آن استفاده کند.
حل تمرین شماره 37
#include <conio.h> #include <iostream.h> #include <math.h> void tav(){ double a,r=1,r1; int b,i; cout << "please 2 number for a^b : "; cin >> a >> b ; if (b>1){ for (i=1 ; i<=b ; i++){ r = (double)r*a; } cout << "result : " << r ; } else if (b==1){cout << "result : " << a ;} else if (b<1) { for (i=1 ; i<=abs(b) ; i++){ r = (double)r*a; } r1 = (double)1/r; cout << "result : " << r1 ; } } // --------------- int main(){ tav(); getch(); return 0; }
تمرین شماره 38
تابعی دو آرگومان را بپذیرد: آرگومان اول، یک کارکتر، و آرگومان دوم مشخص می کند که این کارکتر در هر سطر از صفحه نمایش چند بار باید چاپ شود و آرگومان سوم مشخص می کند که این کارکتر در چند سطر باید چاپ شود . برنامه ای بنویسید که از این تابع استفاده کند.
حل تمرین شماره 38
#include <iostream.h> #include <conio.h> void print(char c , int i, int j){ int n,k ; for (n = 1 ; n <= i ; n++){ for (k = 1 ; k <= j ; k++){ cout << c; } cout << '\n'; } } // --------------------------------- int main(){ int a,b; char ch ; clrscr(); cout << "enter 2 number : "; cin >> a >> b ; cout << "please enter a character : " ; cin >> ch ; print (ch,a,b); getch(); return 0; }
تمرین شماره 39
برنامه ای بنویسید که کارکتری را از ورودی خوانده، آن را از ستون i تا ستون j صفحه نمایش چاپ کند، برنامه، کارکتر و مقدار i و j را به تابعی ارسال می کند و تابع عمل چاپ کارکتر را انجام می دهد.
حل تمرین شماره 39
#include <iostream.h> #include <conio.h> void print(char c , int i , int j){ int n ,k; for (n=1 ; n<=i;n++){ cout << " "; } for (k=1 ; k<=(j-i) ; k++){ cout << c; } } //----------------------- int main(){ int a , b ; char ch ; cout << " enter a character : " ; cin >> ch; cout << " enter 2 number (a<b) : " ; cin >> a >> b; print (ch,a,b); getch(); return 0; }
تمرین شماره 40
برنامه ای بنویسید که دو عدد اعشاری را از ورودی خوانده به تابعی ارسال کند، تابع، تفاضل، حاصلضرب و حاصل تقسیم آنها را محاسبه کرده به برنامه ارسال نماید.
حل تمرین شماره 40
#include <iostream.h> #include <conio.h> void m(float x,float y) { float f,k,i; f=x*y; k = x/y; i=x-y; cout<<"hasel x-y : " << i<<'\n'; cout<<"hasel x*y : " << f <<'\n'; cout<<"hasel x/y : " << k <<'\n'; } //------------------------------ int main(){ float a,b; clrscr(); cout<<"enter 2 number : "; cin>>a>>b; m(a,b); getch(); return 0 ; }
حل تمرین کتاب برنامه نویسی به زبان ++C عین الله جعفرنژاد قمی
تمرین شماره 41
برنامه ای بنویسید که معادله درجه دومی را از ورودی خوانده، آنها را به تابعی ارسال کند. تابع معادله را حل کرده، جواب ها آن را به خروجی ببرد (به برنامه اصلی برنمی گرداند)
حل تمرین شماره 41
#include <iostream.h> #include <conio.h> #include <math.h> void m(int a, int b , int c){ int d; double r1,r2; d= (b*b) - (4*a*c); if (d>0){ r1=-b-sqrt(d)/(2*a); r2= -b+sqrt(d)/(2*a); cout << "r1 : " << r1 <<'\t'<< "r2 : " ; } else if (d==0){ r1 = -b /(2*a); cout << " r1,r2 : " << r1; } else if (d<0) cout << "rishe nadarim " ; } //---------------------------------- int main() { int x , y , z ; clrscr(); cout << "enter 3 number (a,b,c) for ax^2+bx+c : " ; cin >> x >> y >> z; m(x,y,z); getch(); return 0 ; }
تمرین شماره 42
برنامه ای بنویسید که دمای هوا را برحسب فارنهایت خوانده، به تابعی تحویل دهد و تابع آن را به درجه سلسیوس تبدیل کرده و برگرداند.
حل تمرین شماره 42
#include <iostream.h> #include <conio.h> float dama(float a){ return(a-273); } int main(){ float x; clrscr(); cout<<"enter a temprecher farenhait : "; cin>>x; cout<<"silicius temperacher is : "<<dama(x); getch(); return 0; }
تمرین شماره 43
برنامه ای بنویسید که 3 مقدار اعشاری را از ورودی خوانده، به تابعی ارسال و تابع میانگین آنها را محاسبه کرده، برگرداند.
حل تمرین شماره 43
#include <iostream.h> #include <conio.h> float k (float a,float b,float c){ float s ; s= (a+b+c)/3; return s; } //----------main---------- int main(){ float x,y,z; clrscr(); cout <<" please 3 number : "; cin>>x>>y>>z; cout<<"average is a : " << k(x,y,z); getch(); return 0; }
تمرین شماره 44
برنامه ای بنویسید که n جمله از سری فیبوناچی را به روش بازگشتی تولید کند؟
حل تمرین شماره 44
#include <conio.h> #include <iostream.h> long int fibo(long int x) { if (x<=0) return 0; if (x==1||x==2) return 1; return fibo(x-1)+fibo(x-2); } //---------- main ---------------- int main(){ long int a; int n; cout<< " type n number for fibonschi : "; cin>>n; for (a=1 ; a<=n;a++){ cout<< fibo(a)<<'\t'; } getch(); return 0; }
تمرین شماره 45
برنامه ای بنویسید که عددی را از ورودی خوانده به کمک تابع بازگشتی، شمارش معکوس از آن عدد به یک را انجام دهد ( شماره ها در خروجی چاپ کند )
حل تمرین شماره 45
#include <conio.h> #include <iostream.h> int m(int x){ while (x!=0){ cout<< x<<'\t'; return m(x-1); } } // ------------- main ------------------- int main(){ int a; cout<< " please tupe 1 number : "; cin >> a; m(a); getch(); return 0; }
تمرین شماره 46
در شرکتی، سالانه 150 خودکار و 50 بسته کاغذ A4 مصرف می شود. در پایان سال، این شرکت می خواهد بداند که در سال آینده چقدر باید برای این بخش از تجهیزات اداری هزینه کند. برنامه ای بنویسید که قیمت این اقلام را در امسال از ورودی خوانده، با خواندن نرخ تورم در سال آینده، هزینه شرکت را در این بخش محاسبه نماید و به خروجی ببرد. تورم به صورت درصد وارد می شود که باید آن به یک مقدار اعشاری تبدیل کند . مثلا اگر تورم را به صورت 6/5 از ورودی بخواند باید آن را به صورت 056/0 به کار ببرد.
حل تمرین شماره 46
#include <iostream.h> #include <conio.h> int main(){ float ppen , pa4 ,tavarom , expend ; cout << " please price pen : " ; cin >> ppen ; cout << " \n please price a4 : " ; cin >> pa4 ; cout << " \n please %tavarom : " ; cin >> tavarom ; tavarom = tavarom / 100 ; ppen = ppen + ( ppen * tavarom ) ; pa4 = pa4 + ( pa4 * tavarom ) ; expend = ( ppen * 150 ) + ( pa4 * 50 ) ; cout << " expend for 1 year is " << expend ; getch(); return 0 ; }
حل تمرین کتاب برنامه نویسی به زبان ++C عین الله جعفرنژاد قمی
تمرین شماره 46
شرکتی به هر یک از دو نفر از متخصصین خود ماهانه 750000 ریال پرداخت می کند، او می خواهد بداند که اگلر 5/13 درصد به حقوق هر کدام اضافه کند، سالانه چقدر به هزینه شرکت اضافه می شود. برنامه ای بنویسید که این کار را برای شرکت انجام دهد.
حل تمرین شماره 46
#include <iostream.h> #include <conio.h> int main(){ long int x ; x= (( 750000 * 13.5 ) / 100) * 12 ; cout << " expend for 1 year is " << x ; getch(); return 0 ; }
تمرین شماره 47
برنامه ای بنویسید که وزن کالایی را بر حسب کیلوگرم دریافت کرده، وزن آن را بر حسب گرم در خروجی چاپ کند.
حل تمرین شماره 47
#include <iostream.h> #include <conio.h> int main(){ int x , y ; cout << " please enter kg : " ; cin >> x ; y = x * 1000; cout << " gr : " << y ; getch(); return 0 ; }
تمرین شماره 48
برنامه ای بنویسید که مقدار x را از ورودی خوانده، عبارت زیر را محاسبه کند:
1
y = —————
x2 + x + 3
حل تمرین شماره 48
#include <iostream.h> #include <conio.h> int main(){ float x , y ; cout << " please enter 1 number : " ; cin >> x ; y = 1 / ( (x*2) + x + 3 ); cout << " y = 1 / ( (x*2) + x + 3 ) : " << y ; getch(); return 0 ; }
تمرین شماره 49
برنامه ای بنویسید که رشته ای را از ورودی خوانده، تمام کارکترهای تکراری را از رشته حذف کند. رشته در برنامه اصلی خوانده شود و حذف کارکترهای تکراری در تابع انجام شود. تابع دو آرگومان دارد: رشته و طول رشته.
حل تمرین شماره 49
#include <iostream.h> #include <conio.h> #include <string.h> //---------- del ------------- void del(char s[]){ int i,j; for (i=0;s[i];i++){ for (j=(i+1);s[j];j++){ if (s[i]==s[j]){ strcpy(&s[j],&s[j+1]) ; j=i; } } } } //---------- main ------------- int main(){ const int n=11; char s[n]; cin.get(s,n); del(s); cout<<s; getch(); return 0; }
در این بخش به حل تمرین کتاب برنامه نویسی به زبان ++C عین الله جعفرنژاد قمی پرداخته شد و 49 تمرین کتاب همراه با سورس کد هایشان ارائه گردید. امیدواریم توانسته باشیم کمکی به شما عزیزان کرده باشیم.
درباره امین جلیل زاده رزین
پایه گذار و موسس وب سایت آموزشی پی استور، مدرس دانشگاه فنی و حرفه ای، برنامه نویس و تحلیل گر سیستم، پژوهشگر در حوزه الگوریتم های ابتکاری، فرا ابتکاری، یادگیری ماشین، شبکه و پایگاه داده. ایشان در زبان های برنامه نویسی متعدد، نظیر ++C، سی شارپ، PHP ،Java، متلب MATLAB و Python تسلط و سابقه تدریس فعال دارند.
وزن یک مولکول اب 3.0*10گرم وزن یک لیتر آب در حدود 950 گرم است برنامه ای که وزن اب را بر حسب لیتر از ورودی خوانده تعداد مولکول های ان را محاسبه کنید
خیلییییی عالییییی بودددد واقعاااااا مرسی
نظرات و دیدگاه های خود را با ما در میان بگذارید.