Code:
//This program can evaluate a 10th order linear polynomial equation. This
//program can also solve for statistical algorithms such as mean, summation and
//standard deviation of up to 10 maximum data and solve for matrix operations
//of 3 by 3 matrices such as addition, multiplication and transpose of matrix.
#include <stdio.h>
#include <conio.h>
#include <math.h>
#include <stdlib.h>
#include <string.h>
//Prototypes for Polynomial Evaluation
double Polynomial();
//Prototypes for Statistical Algorithms
double Mean();
double Standard();
double Summation();
//Prototypes for Matrix Operations
double Add();
double Multi();
double Trans();
//Start Program
main(){
int selection;
char error[128];
//Variables for Polynomial Evaluation
double polysum=0, x;
int n, QA, m;
//Variables for Statistical Algorithms
int SA,a,b,sum=0,data[10];
float mean;
double calc,sd;
//Variables for Matrix Operation
int MO,i,k,j,c1,c2,r1,r2;
int m1[3][3],m2[3][3],m3[3][3];
//Menu Selection Screen
do{
system("cls");
printf("Menu Selection Screen\n\n");
printf("1 - Polynomial Evaluation\n");
printf("2 - Statistical Algorithms\n");
printf("3 - Matrix Operation\n");
printf("4 - Exit\n");
scanf("%s",&error);
selection=atoi(error);
switch(selection){
case 1://This evaluates the polynomial
Polynomial();
break;
case 2:
do{
sum=0;
mean=0;
calc=0;
sd=0;
system("cls");
printf("Statistical Algorithms\n\n");
printf("1 - Mean\n");
printf("2 - Standard Deviation\n");
printf("3 - Summation of data\n");
printf("4 - Go Back to Menu Selection Screen\n");
scanf("%s",&error);
SA=atoi(error);
switch(SA){
case 1:
Mean();
break;
case 2:
Standard();
break;
case 3:
Summation();
break;
case 4://Return to the selection screen
main();
break;
default://The program redirects invalid inputs to this part
system("cls");
printf("Invalid Input. Please try again!!!\n");
printf("Please press the spacebar to continue!!");
getche();
break;
}
}while(SA!=4);
break;
case 3:
do{
system("cls");
printf("Matrix Operation\n\n");
printf("1 - Matrix Addition\n");
printf("2 - Matrix Multiplication\n");
printf("3 - Transpose of Matrix\n");
printf("4 - Go Back to Menu Selection Screen\n");
scanf("%s",&error);
MO=atoi(error);
switch(MO){
case 1:
Add();
break;
case 2:
Multi();
break;
case 3:
Trans();
break;
case 4:
main();
break;
default://The program redirects invalid inputs to this part
system("cls");
printf("Invalid Input. Please try again!!!\n");
printf("Please press the spacebar to continue!!");
getche();
break;
}
getche();
}while(MO!=4);
break;
case 4://Exit
return 0;
break;
default://The program redirects invalid inputs to this part
system("cls");
printf("Invalid input. Please try again!!!\n");
printf("Please press the spacebar to continue!!");
getche();
break;
}
}while(selection>4 || selection<=0);
}
//Polynomial Function
double Polynomial(){
//Variables for Polynomial Evaluation
double polysum=0, x;
int n, QA, m;
char error[128];
do{
do{
system("cls");
printf("Polynomial Evaluation\n\n");
printf("Enter the Order of Polynomial (max. 10): ");
scanf("%s",&error);
n=atoi(error);
double poly[n+1];
//Enter values of the constants
for(m=n;m>=0;m--){
printf("Please enter the constant for X raised to the %dth: ", m);
scanf("%s",&error);
poly[m]=atof(error);
}
printf("Enter the value of X: ");
scanf("%s",&error);
x=atof(error);
if(n>10||n<1){
system("cls");
printf("Invalid input. Please try again!!!\n");
printf("Please press the spacebar to continue!!");
getche();
}
if(m>10000||m<-10000){
system("cls");
printf("Invalid input. Please try again!!!\n");
printf("Please press the spacebar to continue!!");
getche();
}
if(x>10000||x<-10000){
system("cls");
printf("Invalid input. Please try again!!!\n");
printf("Please press the spacebar to continue!!");
getche();
}
}while(n>10||n<1||m>10000||m<-10000||x>10000||x<-10000);
double poly[n+1];
for(m=n;m>=0;m--)
polysum+=poly[m]*pow(x,m);
printf("The evaluated value of the %dth Order Polynomial %.2lf\n", n, polysum);//Print answer
printf("Please press the spacebar to continue!!\n");
getche();
do{//This used to ask the user if s/he wants to repeat the evaluation
system("cls");
printf("Do you want to repeat the computation?\n\n");
printf("1 - Yes\n");
printf("2 - No\n");
scanf("%s",&error);
QA=atoi(error);
switch(QA){
case 1:
break;
case 2://Return to the selection screen
main();
break;
default://The program redirects invalid inputs to this part
system("cls");
printf("Invalid input. Please try again!!!\n");
printf("Please press the spacebar to continue!!");
getche();
break;
}
}while(QA>2||QA<1);
polysum=0;
}while(QA==1);
}
//Mean Function
double Mean(){
int SA,a,b,sum=0,data[10];
float mean;
double calc,sd;
char error[128];
do{//This solves for the Mean
system("cls");
printf("Mean\n\n");
printf("Enter the Number of Data (max. 10): ");
scanf("%s",&error);
b=atoi(error);
if(b>10||b<1){
system("cls");
printf("Invalid input. Please try again!!!\n");
printf("Please press the spacebar to continue!!");
getche();
}
}while(b>10||b<1);
for(a=0;a<b;a++){//Enter values of the data
printf("Enter the Actual Values of Data %d: ", a+1);
scanf("%s",&error);
data[a]=atoi(error);
}
for(a=0;a<b;a++){
sum=sum+data[a];
}
mean=(float)sum/a;
printf("The Mean of the Data is %f\n",mean);//Print answer
printf("Please press the spacebar to continue!!");
getche();
}
//Standard Deviation Function
double Standard(){
int SA,a,b,sum=0,data[10];
float mean;
double calc,sd;
char error[128];
do{
system("cls");
printf("Standard Deviation\n\n");
printf("Enter the Number of Data (max. 10): ");
scanf("%s",&error);
b=atoi(error);
if(b>10||b==0){
system("cls");
printf("Invalid input. Please try again!!!\n");
printf("Please press the spacebar to continue!!\n");
getche();
}
}while(b>10||b==0);
for(a=0;a<b;a++){
printf("Enter the Actual Values of Data %d: ", a+1);
scanf("%s",&error);
data[a]=atoi(error);
}
if(b==1){
printf("The Standard Deviation the Data is 0\n");
printf("Please press the spacebar to continue!!");
getche();
}
else{
for(a=0;a<b;a++){
sum=sum+data[a];
}
mean=(float)sum/a;
for(a=0;a<b;a++){
calc+=pow((data[a]-mean),2);
}
sd=sqrt(calc/(b-1));
printf("The Standard Deviation the Data is %lf\n",sd);
printf("Please press the spacebar to continue!!");
getche();
}
}
//Summation Function
double Summation(){
int SA,a,b,sum=0,data[10];
float mean;
double calc,sd;
char error[128];
do{//This solves for the Summation
system("cls");
printf("Summation of Data\n\n");
printf("Enter the Number of Data (max. 10): ");
scanf("%s",&error);
b=atoi(error);
if(b>10||b<1){
system("cls");
printf("Invalid input. Please try again!!!\n");
printf("Please press the spacebar to continue!!");
getche();
}
}while(b>10||b<1);
for(a=0;a<b;a++){//Enter values of the data
printf("Enter the Actual Values of Data %d: ", a+1);
scanf("%s",&error);
data[a]=atoi(error);
}
for(a=0;a<b;a++){
sum=sum+data[a];
}
mean=(float)sum/a;
printf("The Summation of the Data is %d\n",sum);//Print answer
printf("Please press the spacebar to continue!!");
getche();
}
//Matrix Operation Functions
//Martices Addition Function
double Add(){
int MO,i,k,j,c1,c2,r1,r2;
int m1[3][3],m2[3][3],m3[3][3];
char error[128];
system("cls");
printf("Enter the number of rows of the first matrix (max 3): ");
scanf("%s",&error);
r1=atoi(error);
printf("Enter the number of columns of the first matrix (max 3): ");
scanf("%s",&error);
c1=atoi(error);
printf("Enter the number of rows of the second matrix (max 3): ");
scanf("%s",&error);
r2=atoi(error);
printf("Enter the number of columns of the second matrix (max 3): ");
scanf("%s",&error);
c2=atoi(error);
if((r1==r2)&&(c1==c2)){
printf("Addition is possible:\n");
printf("Input Matrix one:\n");
for(i=0;i<r1;i++){
for(j=0;j<c1;j++){
printf("Enter an element (row:%d column: %d): ",i+1,j+1);
scanf("%s",&error);
m1[i][j]=atoi(error);
}
}
printf("You have entered the First Matrix as follows:\n");
for(i=0;i<r1;i++){
for(j=0;j<c1;j++)
printf("%d\t",m1[i][j]);
printf("\n");
}
printf("Input Matrix two:\n");
for(i=0;i<r2;i++){
for(j=0;j<c2;j++){
printf("Enter an element (row:%d column: %d): ",i+1,j+1);
scanf("%s",&error);
m2[i][j]=atoi(error);
}
}
printf("You have entered the Second Matrix as follows:\n");
for(i=0;i<r2;i++){
for(j=0;j<c2;j++)
printf("%d\t",m2[i][j]);
printf("\n");
}
/* Addition of Matrix*/
for(i=0;i<r1;i++){
for(j=0;j<c1;j++)
m3[i][j]=m1[i][j]+ m2[i][j];
}
printf("The sum is:\n");
for(i=0;i<c1;i++){
for(j=0;j<r1;j++)
printf("%5d",m3[i][j]);
printf("\n");
}
}
else
printf("\n Addition is not possible:-");
}
//Matrices Multiplication Function
double Multi(){
int MO,i,k,j,c1,c2,r1,r2;
int m1[3][3],m2[3][3],m3[3][3];
char error[128];
system("cls");
printf("Enter the number of rows of the first matrix (max 3): ");
scanf("%s",&error);
r1=atoi(error);
printf("Enter the number of columns of the first matrix (max 3): ");
scanf("%s",&error);
c1=atoi(error);
printf("Enter the number of rows of the second matrix (max 3): ");
scanf("%s",&error);
r2=atoi(error);
printf("Enter the number of columns of the second matrix (max 3): ");
scanf("%s",&error);
c2=atoi(error);
if(c1==r2){
printf("Multiplication is possible:\n");
printf("Input value of Matrix one:\n");
for(i=0;i<r1;i++){
for(j=0;j<c1;j++){
printf("Enter an element (row:%d column: %d): ",i+1,j+1);
scanf("%s",&error);
m1[i][j]=atoi(error);
}
}
printf("You have entered the First Matrix as follows:\n");
for(i=0;i<r1;i++){
for(j=0;j<c1;j++)
printf("%d\t",m1[i][j]);
printf("\n");
}
printf("Input value of Matrix two:\n");
for(i=0;i<r2;i++){
for(j=0;j<c2;j++){
printf("Enter an element (row:%d column: %d): ",i+1,j+1);
scanf("%s",&error);
m2[i][j]=atoi(error);
}
}
printf("You have entered the Second Matrix as follows:\n");
for(i=0;i<r2;i++){
for(j=0;j<c2;j++)
printf("%d\t",m2[i][j]);
printf("\n");
}
for(i=0;i<r1;i++)
for(j=0;j<c2;j++){
m3[i][j]=0;
for(k=0;k<c1;k++)
m3[i][j]=m3[i][j]+m1[i][k]*m2[k][j];
}
/*Displaying final matrix*/
printf("Multiplication of Matrix:\n");
for(i=0;i<r1;i++){
for(j=0;j<c2;j++)
printf("\t%d",m3[i][j]);
printf("\n");
}
}
else
printf("Multiplication is not possible");
}
//Matrix Transpose Function
double Trans(){
int MO,i,k,j,c1,c2,r1,r2;
int m1[3][3],m2[3][3],m3[3][3];
char error[128];
system("cls");
printf("Enter the number of row: ");
scanf("%s",&error);
r1=atoi(error);
printf("Enter the number of coloum: ");
scanf("%s",&error);
c1=atoi(error);
printf("Enter the element\n\n");
for(i=0;i<r1;i++){
for(j=0;j<c1;j++){
printf("Enter an element (row:%d column: %d): ",i+1,j+1);
scanf("%s",&error);
m1[i][j]=atoi(error);
m2[j][i]=m1[i][j];
}
}
/*Displaying transpose of matrix*/
printf("Transpose of Matrix is:\n");
for(i=0;i<r1;i++){
for(j=0;j<c1;j++)
printf("\t%d",m2[i][j]);
printf("\n");
}
}