#include <stdio.h> #define N 5 // Change N to the size of your maze // Maze dimensions #define ROWS N #define COLS N // Maze represented as a 2D array int maze[ROWS][COLS] = { {1, 0, 1, 1, 1}, {1, 1, 1, 0, 1}, {0, 0, 1, 0, 0}, {1, 1, 1, 1, 1}, {1, 1, 0, 0, 1} }; // Structure to represent a cell in the maze struct Cell { int x; int y; }; // Function to print the maze void printMaze() { for (int i = 0; i < ROWS; i++) { for (int j = 0; j < COLS; j++) { printf("%d ", maze[i][j]); } printf("\n"); } } // Function to check if a cell is valid to move into int isValidMove(int x, int y) { return (x >= 0 && x < ROWS && y >= 0 && y < COLS && maze[x][y] == 1); } // Function to solve the maze using a stack int solveMazeStack() { // Create a stack to store cells struct Cell stack[ROWS * COLS]; int top = -1; // Stack top // Push the starting cell onto the stack stack[++top] = (struct Cell){0, 0}; while (top != -1) { // Pop the current cell from the stack struct Cell current = stack[top--]; int x = current.x; int y = current.y; // Check if we reached the destination if (x == ROWS - 1 && y == COLS - 1) { return 1; // Destination reached } // Mark the current cell as part of the solution path maze[x][y] = 2; // Explore adjacent cells (down and right) if (isValidMove(x + 1, y)) { stack[++top] = (struct Cell){x + 1, y}; // Move down } if (isValidMove(x, y + 1)) { stack[++top] = (struct Cell){x, y + 1}; // Move right } } return 0; // No solution found } int main() { printf("Original Maze:\n"); printMaze(); if (solveMazeStack()) { printf("\nSolution Path:\n"); printMaze(); } else { printf("\nNo solution found.\n"); } return 0; }
Write, Run & Share C Language code online using OneCompiler's C online compiler for free. It's one of the robust, feature-rich online compilers for C language, running the latest C version which is C18. Getting started with the OneCompiler's C editor is really simple and pretty fast. The editor shows sample boilerplate code when you choose language as 'C' and start coding!
OneCompiler's C online editor supports stdin and users can give inputs to programs using the STDIN textbox under the I/O tab. Following is a sample C program which takes name as input and print your name with hello.
#include <stdio.h>
int main()
{
char name[50];
printf("Enter name:");
scanf("%s", name);
printf("Hello %s \n" , name );
return 0;
}
C language is one of the most popular general-purpose programming language developed by Dennis Ritchie at Bell laboratories for UNIX operating system. The initial release of C Language was in the year 1972. Most of the desktop operating systems are written in C Language.
When ever you want to perform a set of operations based on a condition if-else
is used.
if(conditional-expression) {
// code
} else {
// code
}
You can also use if-else for nested Ifs and if-else-if ladder when multiple conditions are to be performed on a single variable.
Switch is an alternative to if-else-if ladder.
switch(conditional-expression) {
case value1:
// code
break; // optional
case value2:
// code
break; // optional
...
default:
// code to be executed when all the above cases are not matched;
}
For loop is used to iterate a set of statements based on a condition.
for(Initialization; Condition; Increment/decrement){
// code
}
While is also used to iterate a set of statements based on a condition. Usually while is preferred when number of iterations are not known in advance.
while(condition) {
// code
}
Do-while is also used to iterate a set of statements based on a condition. It is mostly used when you need to execute the statements atleast once.
do {
// code
} while (condition);
Array is a collection of similar data which is stored in continuous memory addresses. Array values can be fetched using index. Index starts from 0 to size-1.
data-type array-name[size];
data-type array-name[size][size];
Function is a sub-routine which contains set of statements. Usually functions are written when multiple calls are required to same set of statements which increases re-usuability and modularity.
Two types of functions are present in C
Library functions are the in-built functions which are declared in header files like printf(),scanf(),puts(),gets() etc.,
User defined functions are the ones which are written by the programmer based on the requirement.
return_type function_name(parameters);
function_name (parameters)
return_type function_name(parameters) {
//code
}