Upload files to "DS/C/Lab/Week3"

This commit is contained in:
Aadit Agrawal 2024-08-05 01:10:12 +05:30
parent c23e09cb90
commit a033c5175f
4 changed files with 194 additions and 0 deletions

View File

@ -0,0 +1,52 @@
#include <stdio.h>
#define MAX_SIZE 100
int top = -1;
char stack[MAX_SIZE];
void push(char c) {
if (top < MAX_SIZE - 1) {
stack[++top] = c;
}
}
char pop() {
if (top >= 0) {
return stack[top--];
}
return '\0';
}
void decimal_to_base(int decimal, int base) {
char digits[] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
while (decimal > 0) {
push(digits[decimal % base]);
decimal /= base;
}
printf("Converted number: ");
while (top >= 0) {
printf("%c", pop());
}
printf("\n");
}
int main() {
int decimal, base;
printf("Enter a decimal number: ");
scanf("%d", &decimal);
printf("Enter the base to convert to (2-36): ");
scanf("%d", &base);
if (base < 2 || base > 36) {
printf("Invalid base. Please enter a base between 2 and 36.\n");
return 1;
}
decimal_to_base(decimal, base);
return 0;
}

45
DS/C/Lab/Week3/MulSta.c Normal file
View File

@ -0,0 +1,45 @@
#include <stdio.h>
#define MAX_SIZE 100
#define NUM_STACKS 3
int tops[NUM_STACKS] = {-1, -1, -1};
int stack[MAX_SIZE];
int stack_size = MAX_SIZE / NUM_STACKS;
void push(int stack_num, int value) {
int index = stack_num * stack_size + tops[stack_num] + 1;
if (tops[stack_num] < stack_size - 1) {
tops[stack_num]++;
stack[index] = value;
printf("Pushed %d to stack %d\n", value, stack_num);
} else {
printf("Stack %d is full\n", stack_num);
}
}
int pop(int stack_num) {
int index = stack_num * stack_size + tops[stack_num];
if (tops[stack_num] >= 0) {
int value = stack[index];
tops[stack_num]--;
printf("Popped %d from stack %d\n", value, stack_num);
return value;
} else {
printf("Stack %d is empty\n", stack_num);
return -1;
}
}
int main() {
push(0, 10);
push(0, 20);
push(1, 30);
push(2, 40);
pop(0);
pop(1);
pop(2);
pop(2);
return 0;
}

View File

@ -0,0 +1,51 @@
#include <stdio.h>
#define MAX_SIZE 100
char stack[MAX_SIZE];
int top = -1;
void push(char c) {
if (top < MAX_SIZE - 1) {
stack[++top] = c;
}
}
char pop() {
if (top >= 0) {
return stack[top--];
}
return '\0';
}
int is_matching_pair(char opening, char closing) {
return (opening == '(' && closing == ')') ||
(opening == '[' && closing == ']') ||
(opening == '{' && closing == '}');
}
int are_parentheses_balanced(char expr[]) {
int i;
for (i = 0; expr[i] != '\0'; i++) {
if (expr[i] == '(' || expr[i] == '[' || expr[i] == '{') {
push(expr[i]);
} else if (expr[i] == ')' || expr[i] == ']' || expr[i] == '}') {
if (top == -1 || !is_matching_pair(pop(), expr[i])) {
return 0;
}
}
}
return (top == -1);
int main() {
char expr[MAX_SIZE];
printf("Enter an expression: ");
scanf("%s", expr);
if (are_parentheses_balanced(expr)) {
printf("Parentheses are balanced\n");
} else {
printf("Parentheses are not balanced\n");
}
return 0;
}

View File

@ -0,0 +1,46 @@
#include <stdio.h>
#define MAX_SIZE 100
int top = -1;
char stack[MAX_SIZE];
void push(char c) {
if (top < MAX_SIZE - 1) {
stack[++top] = c;
}
}
char pop() {
if (top >= 0) {
return stack[top--];
}
return '\0';
}
int is_palindrome(char *str) {
int i;
for (i = 0; str[i] != '\0'; i++) {
push(str[i]);
}
for (i = 0; str[i] != '\0'; i++) {
if (str[i] != pop()) {
return 0;
}
}
return 1;
}
int main() {
char str[MAX_SIZE];
printf("Enter a string: ");
scanf("%s", str);
if (is_palindrome(str)) {
printf("%s is a palindrome.\n", str);
} else {
printf("%s is not a palindrome.\n", str);
}
return 0;
}