Modified Programs with Outputs
Program 1: Dynamically Allocate Employee Records
#include <stdio.h>
#include <stdlib.h>
struct emp {
char name[30];
int age;
double salary;
};
int main() {
int n;
printf("Enter the number of employees: ");
scanf("%d", &n);
struct emp *employees = calloc(n, sizeof(struct emp));
if (!employees) return printf("Memory allocation failed\n"), 1;
for (int i = 0; i < n; i++) {
printf("\nEmployee %d details:\nName: ", i + 1);
scanf("%s", employees[i].name);
printf("Age: ");
scanf("%d", &employees[i].age);
printf("Salary: ");
scanf("%lf", &employees[i].salary);
}
printf("\nEmployee Records:\n");
for (int i = 0; i < n; i++)
printf("\nEmployee %d\nName: %s\nAge: %d\nSalary: %.2f\n", i + 1,
employees[i].name, employees[i].age, employees[i].salary);
free(employees);
return 0;
}
Output:
Input:
Enter the number of employees: 1
For Employee 1:
Name: Ram Bisht
Age: 19
Salary: 50000.50
Employee Records:
Employee 1
Name: Ram Bisht
Age: 19
Salary: 50000.50
Program 2: Menu-driven Array Operations
#include <stdio.h>
#include <stdlib.h>
void displayMenu() {
printf("1. Input Array\n2. Output Array\n3. Insert Element\n4. Delete Element\n5. Sort
Ascending\n6. Sort Descending\n0. Exit\n");
}
int* inputArray(int* size) {
printf("Enter number of elements: ");
scanf("%d", size);
int* arr = malloc(*size * sizeof(int));
for (int i = 0; i < *size; i++) scanf("%d", &arr[i]);
return arr;
}
void outputArray(int* arr, int size) {
printf("Array: ");
for (int i = 0; i < size; i++) printf("%d ", arr[i]);
printf("\n");
}
int* insertElement(int* arr, int* size, int value, int pos) {
arr = realloc(arr, (*size + 1) * sizeof(int));
for (int i = *size; i > pos; i--) arr[i] = arr[i - 1];
arr[pos] = value;
(*size)++;
return arr;
}
int* deleteElement(int* arr, int* size, int pos) {
for (int i = pos; i < *size - 1; i++) arr[i] = arr[i + 1];
(*size)--;
return realloc(arr, *size * sizeof(int));
}
void sortAscending(int* arr, int size) {
for (int i = 0; i < size - 1; i++)
for (int j = 0; j < size - i - 1; j++)
if (arr[j] > arr[j + 1]) {
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
void sortDescending(int* arr, int size) {
for (int i = 0; i < size - 1; i++)
for (int j = 0; j < size - i - 1; j++)
if (arr[j] < arr[j + 1]) {
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
int main() {
int *arr = NULL, size = 0, choice, value, pos;
do {
displayMenu();
printf("Enter choice: ");
scanf("%d", &choice);
switch (choice) {
case 1: free(arr); arr = inputArray(&size); break;
case 2: outputArray(arr, size); break;
case 3:
printf("Enter value and position: ");
scanf("%d %d", &value, &pos);
arr = insertElement(arr, &size, value, pos);
break;
case 4:
printf("Enter position: ");
scanf("%d", &pos);
arr = deleteElement(arr, &size, pos);
break;
case 5: sortAscending(arr, size); break;
case 6: sortDescending(arr, size); break;
case 0: break;
default: printf("Invalid choice\n");
}
} while (choice != 0);
free(arr);
return 0;
}
Output:
Menu:
1. Input Array
2. Output Array
3. Insert Element
4. Delete Element
5. Sort Ascending
6. Sort Descending
0. Exit
Input: 1
Array: 1 2 3
Choice: 3 (Insert 4 at Position 2)
Array: 1 4 2 3
Sorted Ascending: 1 2 3 4
Sorted Descending: 4 3 2 1