Академический Документы
Профессиональный Документы
Культура Документы
h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
void Q1();
void Q2();
void Q3();
void Q4();
void Q5();
void Q6();
void Q7();
void Q8();
void Q9();
void Q10();
void Q11();
void Q12();
void Q13();
void Q14();
void Q15();
void Q16();
int main()
{
int choice;
while(1) {
printf("Enter Question Number: ");
scanf("%d", &choice);
switch(choice) {
case 1: Q1(); break;
case 2: Q2(); break;
case 3: Q3(); break;
case 4: Q4(); break;
case 5: Q5(); break;
case 6: Q6(); break;
case 7: Q7(); break;
case 8: Q8(); break;
case 9: Q9(); break;
case 10: Q10(); break;
case 11: Q11(); break;
case 12: Q12(); break;
case 13: Q13(); break;
case 14: Q14(); break;
default: return 0;
}
}
return 0;
}
void Q1()
{
int i, n, max, secmax;
do {
printf("Enter an non-negative integer n >= 2:");
scanf("%d", &n);
}while(n < 2);
int *a = (int *)calloc(n, sizeof(int));
max = 0;
for(i = 0; i < n; i++)
if(a[i] > a[max])
max = i;
secmax = 0;
for(i = 0; i < n; i++)
if(i != max && a[i] > a[secmax])
secmax = i;
void Q2()
{
int i, n;
do {
printf("Enter an non-negative integer n:");
scanf("%d", &n);
}while(n <= 0);
void Q3()
{
int i, n, unique = 0;
do {
printf("Enter an odd integer n:");
scanf("%d", &n);
}while(n%2 == 0);
void Q4()
{
int i, n, k;
do {
printf("Enter n:");
scanf("%d", &n);
}while(n <= 0);
do {
printf("Enter k <= n:");
scanf("%d", &k);
}while(n < k);
void Q5()
{
int i, n, j, count = 0;
do {
printf("Enter n:");
scanf("%d", &n);
}while(n <= 0);
void Q6()
{
int i, j, n, leftflag, rightflag;
do {
printf("Enter n:");
scanf("%d", &n);
}while(n <= 0);
i = 0;
j = n-2;
leftflag = 0;
rightflag = 0;
while( i < j ) {
swap(&a[j+1], &a[n-1]);
printf("Rank of %d is %d\n", a[j+1], j+1);
free(a);
}
void Q7()
{
int i, j, len, flag = 0;
char str[100];
printf("Enter a string: ");
scanf(" %s", str);
len = strlen(str);
for(i = 0, j = len-1; i < j; i++, j--){
if(str[i] != str[j]) {
flag = 1;
printf("%s is not a palindrome\n", str);
break;
}
}
if(flag == 0)
printf("%s is a palindrome\n", str);
}
void Q8()
{
int flag;
char str[100], pat[100];
printf("Enter a string: ");
scanf(" %s", str);
printf("Enter a pattern: ");
scanf(" %s", pat);
void Q9()
{
int flag;
char str[100], pat[100], strstrg[200];
printf("Enter a string: ");
scanf(" %s", str);
printf("Enter a pattern: ");
scanf(" %s", pat);
strcpy(strstrg, str);
strcat(strstrg, str);
flag = substring(strstrg, pat);
if(flag == -1 || strlen(str) != strlen(pat))
printf("%s can not be formed through right rotating of %s\n", pat, str);
else
printf("%s can be formed through right rotating of %s\n", pat, str);
}
void Q10()
{
int i, j, len;
char str[100];
fflush(stdin);
printf("Enter a string: ");
fgets(str, 99, stdin);
j = 0;
while(str[j] != '\0') {
if(str[j] == '\n')
str[j] = '\0';
j++;
}
len = strlen(str);
reverseString(str, 0, len-1);
i = 0; j = 0;
while(str[j] != '\0') {
if(str[j] == ' ' || str[j] == '\t') {
reverseString(str, i, j-1);
i = j;
while(str[i] == ' ' || str[i] == '\t')
i++;
j = i;
}
else
j++;
}
reverseString(str, i, j-1);
printf("%s\n", str);
}
void Q11()
{
int a, b;
do {
printf("Enter a positive integer a: ");
scanf("%d", &a);
} while(a <= 0);
do {
printf("Enter a non-negative integer b: ");
scanf("%d", &b);
} while(b < 0);
void Q12()
{
int n, r;
do {
printf("Enter a positive integer n: ");
scanf("%d", &n);
} while(n <= 0);
do {
printf("Enter a non-negative integer r: ");
scanf("%d", &r);
} while(r < 0);
printf("%dC%d = %d\n", n, r, nCr(n, r));
}
void Q13()
{
int n;
do {
printf("Enter the number of disks n: ");
scanf("%d", &n);
} while(n <= 0);
TowerOfHanoi(n, 'A', 'B', 'C');
}
int Catalan(int n)
{
int i , j;
int *C = (int *)calloc(n+1, sizeof(int));
C[0] = 1;
C[1] = 1;
for(i = 2; i <= n; i++) {
for(j = 0; j < i; j++)
C[i] += C[j] * C[i - j - 1];
}
j = C[n];
free(C);
return j;
}
void Q14()
{
int n;
int i = 2;
do {
printf("Enter a non-negative integer n: ");
scanf("%d", &n);
} while(n < 0);
int *C = (int *)calloc(n+1, sizeof(int));
printf("%d-th Catalan Number = %d\n", n, Catalan(n));
printf("%d-th Catalan Number = %d\n", n, recCatalan(C, i, n));
free(C);
}