سورس کد آموزش کار با توابع در سی پلاس پلاس
در این پست باز سورس پروژه های کاربردی رو برای کاربران آماده کردیم که به زبان سی پلاس پلاس نوشته شده است در این سورس شما با نحوه کار با توابع در زبان برنامه نویسی سی پلاس پلاس آشنا می شوید در این سورس مثال های زیادی مثل کار با فیبوناچی ، فاکتوریل و بسیاری دیگر از توابع ریاضی رو آموزش داده ایم لازم به ذکر هست اگر سورس رو در Borland c++ اگر اضافه کنید کد ها رو اجرا بگیرید به صورت منو میتونید کلیه بخش را مشاهده کنید.
سی پلاس پلاس :
++C (بخوانید سی پلاسپلاس) یک زبان برنامهنویسی رایانهای همهمنظوره، شیءگرا، سطح بالا و چندرگه (که از برنامهنویسی رویهای، تجرید دادهها و برنامهنویسی شیءگرا پشتیبانی میکند)، عمومی و با قابلیتهای سطح بالا و سطح پایین میباشد. این زبان دارای قابلیتهای انواع داده ایستا، نوشتار آزاد، چندمدلی، معمولاً زبان ترجمه شده با پشتیبانی از برنامهنویسی ساختیافته، برنامهنویسی شیءگرا، برنامهنویسی جنریک است. از آنجا که در سی++ اشیاء را میتوان ابتدا به ساکن از کلاسهایی ایجاد کرد که به هیچگونه سلسله مراتب ردهها و وراثت مقید نیستند، لذا سی++ از برنامهسازی شیء بنیاد (object-based programming) نیز پشتیبانی میکند. ++C به همراه جد خود C از پرطرفدارترین زبانهای برنامهنویسی تجاری هستند.
++C یک زبان سطح میانی در نظر گرفته میشود؛ این زبان دارای قابلیت زبانهای سطح بالا و پایین بهصورت همزمان است.
++C توسط بییارنه استراستروپ ریاضیدان دانمارکی در سال ۱۹۷۹ در آزمایشگاههای بل (Bell Labs)، برای بهبود زبان سی و بر مبنای آن ساخته شد و آن را «C با کلاس» (C With Classes) نامگذاری نمود. در سال ۱۹۸۳ به ++C تغییر نام داد. توسعه با اضافه نمودن کلاسها و ویژگیهای دیگری مانند توابع مجازی، سربارگزاری عملگرها، وراثت چندگانه، قالب توابع، و پردازش استثناء انجام شد. این زبان برنامهنویسی در سال ۱۹۹۸ تحت نام ISO/IEC ۱۴۸۸۲:۱۹۹۸ استاندارد شد. نسخهٔ فعلی استاندارد این زبان ISO/IEC ۱۴۸۸۲:۲۰۱۴ است.
#include<stdio.h> #include<conio.h> #include<string.h> #include<stdlib.h> void enterndisplayemployeeinformation(); char calculategrade(int marks); void numericfunctions(); int factorial(int number); int checknumber(int userinput); void cappheader(); void resetscreen(); void createpattern(); void asteriskspyramid(); void numberspyramid(); void asterisksquare(); void stuckuser(); void countvowels(); void deleteitem(); int inputnumber(); //___ Function declaration for the main menu ___// void printseries(); void workwithrecords(); void numericfunctions(); void workwitharrays(); void mainmenu(); void armstrongseries(); int fibonacciseries(int first, int second); void primenumberseries(); void copyitemsofarray(); void getsentence(char* inputsentence, int size); struct employeeinformation //__ Structure Declaration ___// { char empname[30]; char empcode[30]; int age; }; int main() { mainmenu(); return 1; } //___ Function definition for the main menu functions___// void mainmenu() { int userinput = 0, valid = 0; while(userinput != 6) { valid = 0; while(valid != 1) //___ Validation for user input___// { resetscreen(); printf("\n 1. Create Pattern\n\n 2. Print Series\n\n 3. Work With Records\n\n 4. Numeric Functions\n\n 5. Work With Arrays\n\n 6. Exit\n\n Your Choice : "); userinput = inputnumber(); switch(userinput) { case 1: valid = 1; createpattern(); break; case 2: valid = 1; printseries(); break; case 3: valid = 1; workwithrecords(); break; case 4: valid = 1; numericfunctions(); break; case 5: valid = 1; workwitharrays(); break; case 6: valid = 1; break; default: printf("\a\n\n Error : Input is not correct (input only 1,2,3,4,5,6)\n"); stuckuser(); break; } } } } //_____ Function definition for the print series functions__// void printseries() { int userinput = 0, valid = 0; while(userinput != 4) { valid = 0; while(valid != 1) //___ Validation for user input___// { resetscreen(); printf("\n 1. Series of Armstrong numbers between 1 and 500\n\n 2. Fibonacci series from 1 to 100 using recursion\n\n 3. Series of prime numbers from 1 to 100.\n\n 4. Main menu\n\n Your Choice : "); userinput = inputnumber(); switch(userinput) { case 1: valid = 1; armstrongseries(); stuckuser(); break; case 2: valid = 1; resetscreen(); printf("\n\n Fibonacci Series from 1 to 100 : "); printf("%d", fibonacciseries(0, 1)); stuckuser(); break; case 3: valid = 1; primenumberseries(); break; case 4: valid = 1; break; default: printf("\a\n\n Error : Input is not correct (input only 1,2,3,4)\n"); stuckuser(); break; } } } stuckuser(); } void armstrongseries() { int digitcubesum = 0, tmp = 0, remainder = 0, tmpnumber = 0; resetscreen(); printf("\n\n\tArmstrong Numbers between 1 and 500 : "); for(tmp = 1; tmp <= 500; tmp++) { tmpnumber = tmp; digitcubesum = 0; while(tmpnumber != 0) { remainder = tmpnumber % 10; tmpnumber = tmpnumber / 10; digitcubesum = remainder * remainder * remainder + digitcubesum; } if (digitcubesum == tmp) { printf("%d, ", tmp); } } printf("\b\b "); } int fibonacciseries(int first, int second) { if (first + second > 100) //__ Base Case __// { return second; } else { printf("%d ", second); fibonacciseries(second, first + second); } } void primenumberseries() { int number = 0, i = 1, count = 0, j = 0; resetscreen(); printf("\n\n Prime numbers(From 1 to 100) : "); for(i = 2; i <= 100; i++) { if (i == 41) printf("\n\n\t"); number = i; count = 0; for(j = 2; j < number; j++) { if ((number % j) == 0) count++; } if (count == 0) printf("%d ", number); } stuckuser(); } void createpattern() //___ Menu for the functions that would create different patterns including pyramid of asterisk, pyramid of numbers, square of asterisks ___// { int userinput = 0, valid = 0; while(valid != 1) //___ Validation for user input___// { resetscreen(); printf("\n 1. Pyramid of asterisks\n\n 2. Pyramid of numbers\n\n 3. Square of asterisks\n\n 4. Main menu\n\n Your Choice : "); scanf("%d", &userinput); switch(userinput) { case 1: valid = 1; asteriskspyramid(); //___ Making a call to asteriskpyramid function __// break; case 2: valid = 1; numberspyramid(); //___ Making a call to numberspyramid function __// break; case 3: valid = 1; asterisksquare(); //___ Making a call to asterisksquare function__// break; case 4: valid = 1; break; default: printf("\a\n\n Error : Input is not correct (input only 1,2,3,4)\n"); //__ Error Message in case the user input is not a positive value between 1 to 4___// stuckuser(); break; } } stuckuser(); } void asteriskspyramid() //___ Function definition of the asteriskpyramid function ___/// { int row = 0, coloumn = 0, tmp = 0; resetscreen(); printf("\n\n\tPyramid of Asterisks\n\n Enter the number of rows of pattern to be printed : "); fflush(stdin); row = inputnumber(); for(tmp = 1; tmp <= row; tmp++) { printf("\n\t"); for(coloumn = 1; coloumn <= tmp; coloumn++) { printf("*"); } //__ "\n - represents new line character whereas \t represents tab space" __// } } void numberspyramid() { int row = 0, coloumn = 0, tmp = 0; resetscreen(); printf("\n\n\tPyramid of Numbers\n\n Enter the number of rows of pattern to be printed : "); fflush(stdin); row = inputnumber(); for(tmp = 1; tmp <= row; tmp++) { printf("\n\t"); for(coloumn = row; coloumn >= tmp; coloumn--) { printf("%d",coloumn); //__ Printing the coloumn number on the screen ___// } } } void asterisksquare() //__ Asterisk of Sqaure means that the number of rows will always be equal to the total number of coloumns__// { int row = 0, coloumn = 0, tmp = 0, valid = 0; resetscreen(); printf("\n\n\tSquare of Asterisk\n\n Enter the number of rows of pattern to be printed : "); fflush(stdin); row = inputnumber(); for(tmp = 1; tmp <= row; tmp++) { printf("\n\t"); for(coloumn = 1; coloumn <= row; coloumn++) { printf("*"); } } } void stuckuser() { printf("\n\n Press Enter to Continue.."); while(getch()!=13) {} } void numericfunctions() { int userinput = 0, valid = 0, number = 0, factorialresult = 0, i = 0, tmpnumber = 0, placevalue = 0, remainder = 0, sumofdigits = 0, finalnumber = 0; do //___ Validation for user input___// { resetscreen(); printf("\n 1. Calculate the factorial of a number\n\n 2. Calculate the sum of the first and the fifth digit of a 5 digit number\n\n 3. Check whether a 5 digit number is palindrome or not.\n\n 4. Main menu\n\n Your Choice : "); userinput = inputnumber(); switch(userinput) { case 1: valid = 1; resetscreen(); printf("\n\n Enter the number : "); fflush(stdin); number = inputnumber(); factorialresult = factorial(number); //__ Calling the function factorial that will return the factorial of the given number__// printf("\n\n Factorial of %d is %d.", number, factorialresult); break; case 2: valid = 1; resetscreen(); printf("\n\n Enter the number : "); number = inputnumber(); i = checknumber(number); if (i == 1) { tmpnumber = number; placevalue = 0; while(tmpnumber != 0) { remainder = tmpnumber % 10; tmpnumber = tmpnumber / 10; placevalue++; if ((placevalue == 1) || (placevalue == 5)) sumofdigits = sumofdigits + remainder; } printf("\n\n Sum of first and fifth digit of %d is %d ", number, sumofdigits); } else { printf("\n\n Error : Input is not correct (only input a 5 digit number)"); valid = 0; } break; case 3: valid = 1; resetscreen(); printf("\n\n Enter the number : "); scanf("%d", &number); i = checknumber(number); if (i == 1) { tmpnumber = number; placevalue = 1; finalnumber = 0; while(tmpnumber != 0) { remainder = tmpnumber % 10; tmpnumber = tmpnumber / 10; finalnumber = finalnumber + remainder * placevalue; placevalue = placevalue * 10; } if (finalnumber == number) { printf("\n\n %d is a 5 digit palindrome number.", finalnumber); } else { printf("\n\n %d is not a 5 digit palindrome number.", number); } } else { printf("\a\n\n Error : Input is not correct (input only 5 digit number)"); } break; case 4: valid = 1; break; default: printf("\a\n\n Error : Input is not correct (input only 1,2,3,4)"); stuckuser(); break; } }while(valid != 1); stuckuser(); } int factorial(int number) { int i = 0, fact = 1; for(i = 1; i <= number; i++) //___ 5! = 5 X 4 X 3 X 2 X 1. To calculate the factorial of a given number multiply all the natural numbers from 1 to that particular number___// { fact = fact * i; } return fact; //__ Returning the result i.e. the factorial of the number___// } int checknumber(int number) //__ Function to check whether the number entered by the user is of 5 digits or not __// { int countnumberofdigits = 0; while(number != 0) //__ Count the number of digits the number doesnt becomes 0 __// { number = number / 10; countnumberofdigits++; } if (countnumberofdigits == 5) return 1; else return 0; } void workwitharrays() { int userinput = 0, valid = 0, number = 0, factorialresult = 0, i = 0, tmpnumber = 0, placevalue = 0, remainder = 0, sumofdigits = 0, finalnumber = 0; while(userinput != 4) { valid = 0; do //___ Validation for user input___// { resetscreen(); printf("\n 1. Count number of vowels in the sentence. \n\n 2. Copy the contents of an array into another.\n\n 3. Delete an item for an array.\n\n 4. Main menu\n\n Your Choice : "); scanf("%d", &userinput); switch(userinput) { case 1: valid = 1; countvowels(); break; case 2: valid = 1; copyitemsofarray(); break; case 3: valid = 1; deleteitem(); break; case 4: valid = 1; break; default: printf("\a\n\n Error : Input is not correct (input only 1,2,3,4)"); stuckuser(); break; } }while(valid != 1); } stuckuser(); } void cappheader() { printf("\n\n\t\t*******************************************"); printf("\n\n\t\t\t\tC Application "); printf("\n\n\t\t*******************************************\n"); } void resetscreen() { system("cls"); cappheader(); } void countvowels() { int i = 0, countvowel = 0; char inputsentence[100]; resetscreen(); printf("\n\n Enter the sentence (limited to 100 characters only) : "); getsentence(inputsentence, 100); i = 0; while(inputsentence[i] != '\0') { switch(inputsentence[i]) { case 'a': case 'A': case 'e': case 'E': case 'i': case 'I': case 'o': case 'O': case 'u': case 'U':countvowel++; } i++; } printf("\n\n Total number of vowels in this sentence are : %d", countvowel); stuckuser(); } void getsentence(char* inputsentence, int size) { int i = 0, tmp = 0; char ch; i = 0; while(i <= size - 2) { ch = getch(); if ((ch == 13) && (i == 0)) { printf("\n\n Error : Cannot skip the field \n\n Enter the sentence again : "); } else if ((ch == 13) && (i > 0)) { break; } else if ((ch == 8) && (i > 0)) { i--; printf("\b \b"); } else if (ch != 8) { printf("%c", ch); inputsentence[i] = ch; i++; } } inputsentence[i] = '\0'; } void copyitemsofarray() { int i = 0, size = 0; char orisentence[100], dulsentence[100]; resetscreen(); printf("\n\n Total number of items in the array : "); fflush(stdin); size = inputnumber(); if (size <= 100) { if (size > 1) { printf("\n\n Enter the sentence : "); getsentence(orisentence, size); strcpy(dulsentence, orisentence); } else if (size == 1) { printf("\n\n Enter the sentence : "); getsentence(orisentence, 2); strcpy(dulsentence, orisentence); } else if (size == 0) { printf("\a\n\n Error : Array size is 0, it cannot accomodate any item"); } printf("\n\n Original Sentence : "); for(i = 0; i < strlen(orisentence); i++) { printf("%c", orisentence[i]); } printf("\n\n Duplicate Sentence : "); for(i = 0; i < strlen(dulsentence); i++) { printf("%c", dulsentence[i]); } } else { printf("\a\n\n Error : Array size is limited to 100 only"); } stuckuser(); } void deleteitem() { int i = 0, size = 0, elements[100], index = 0; resetscreen(); printf("\n\n Total number of items in the array : "); fflush(stdin); //___ For clearing input buffer __// size = inputnumber(); if (size <= 100) { printf("\n\n Note : Only positive integer values are allowed"); for(i = 0; i < size; i++) { printf("\n\n Enter Element [%d] : ", i + 1); elements[i] = inputnumber(); } resetscreen(); printf("\n\nOriginal List\n"); for(i = 0; i < size; i++) { printf("\n Element [%d] : %d", i+1, elements[i]); } printf("\n\n Enter the item to be deleted (please enter the element number) : "); scanf("%d", &index); if (index > size) { printf("\n\n Number of items in the array are %d only", size); } else { for(i = index - 1; i < size; i++) { elements[i] = elements[i + 1]; } printf("\n\n List after deletion of item\n"); for(i = 0; i < size - 1; i++) { printf("\n Element [%d] : %d", i+1, elements[i]); } } } else { printf("\a\n\n Error : Array size is limited to 100 only"); } stuckuser(); } void workwithrecords() { int userinput = 0, valid = 0, marks = 0, i =0; char studentname[30], studentcode[30]; while(userinput != 3) { valid = 0; while(valid != 1) //___ Validation for user input___// { resetscreen(); printf("\n 1. Enter and Display Employee Information\n\n 2. Calculate the grade of the student\n\n 3. Main Menu\n\n Your Choice : "); userinput = inputnumber(); switch(userinput) { case 1: valid = 1; enterndisplayemployeeinformation(); break; case 2: valid = 1; resetscreen(); printf("\n\n Enter the Marks scored by the student : "); marks = inputnumber(); if (marks > 100) { printf("\n\n Error : Marks cannot be greater than 100"); stuckuser(); valid = 0; } else { printf("\n\nEnter student Name : "); getsentence(studentname, 30); printf("\n\nEnter Roll Number : "); getsentence(studentcode, 30); resetscreen(); printf("\n\nStudent Name : "); for(i = 0; i < strlen(studentname); i++) { printf("%c", studentname[i]); } printf("\n\n Grade Scored by the student is %c", calculategrade(marks)); } break; case 3: valid = 1; break; case 6: break; default: printf("\a\n\n Error : Input is not correct (input only 1,2,3,4,5,6)\n"); stuckuser(); break; } } } } int inputnumber() { int number = 0, temp = 1, n = 0, i = 0; char tmpnumber[10]; do{ if(temp == 0) { printf("\n\n Enter the number again : "); } number = 0; gets(tmpnumber); fflush(stdin); if(stricmp(tmpnumber, "") == 0) { temp = 0; } else { n = 0; for(i = 0;i < strlen(tmpnumber); i++) { if(tmpnumber[i]>=48 && tmpnumber[i]<=57) // 48-57 are the ASCII values of numbers 0-9 { n++; switch (tmpnumber[i]) { case '0': number = number*10 + 0; break; case '1': number = number*10 + 1; break; case '2': number = number*10 + 2; break; case '3': number = number*10 + 3; break; case '4': number = number*10 + 4; break; case '5': number = number*10 + 5; break; case '6': number = number*10 + 6; break; case '7': number = number*10 + 7; break; case '8': number = number*10 + 8; break; case '9': number = number*10 + 9; break; } } } if(n != strlen(tmpnumber)) { printf("\a\n\t\tError : Input is not correct (input only positive integers)\n"); temp = 0; } else { temp = 1; } } }while(temp != 1); return number; } char calculategrade(int marks) { if (marks >= 70) { return 'A'; } else if ((marks >= 60) && (marks <= 69)) { return 'B'; } else if ((marks >= 50) && (marks <= 59)) { return 'C'; } else if (marks < 50) { return 'D'; } } void enterndisplayemployeeinformation() { struct employeeinformation emprecords[3]; //___ Creating an array of structures ____// int i = 0, tmp = 0; resetscreen(); for(i = 1; i <= 3; i++) { resetscreen(); printf("\n\n Employee [%d] : ", i + 1); printf("\n\n Enter the name : "); getsentence(emprecords[i].empname, 30); printf("\n\n Enter Code : "); getsentence(emprecords[i].empcode, 30); printf("\n\n Enter the Age : "); emprecords[i].age = inputnumber(); } printf("\n\n Displaying Employee Information : "); for(i = 1; i <= 3; i++) { resetscreen(); printf("\n\n Employee [%d] : ", i + 1); printf("\n\n Name : "); tmp = 0; while(emprecords[i].empname[tmp] != '\0') { printf("%c", emprecords[i].empname[tmp]); tmp++; } printf("\n\n Code : "); tmp = 0; while(emprecords[i].empcode[tmp] != '\0') { printf("%c", emprecords[i].empcode[tmp]); tmp++; } printf("\n\n Age : %d", emprecords[i].age); } }
دیدگاه کاربران
تعداد دیدگاه های کاربران : ۰ دیدگاه