Scientyfic World

Build smarter content faster — Get your copy of DITA Decoded today. Buy it Now

HackerRank solutions in C with medium difficulty

In this post, all the solutions of C are given with the difficulty level medium.

For easy-level solutions, click here.
All these solutions are successfully compiled and passed all the tests.

Printing pattern using loops

#include <stdio.h>
int main() 
{
    int n;
    scanf("%d", &n);
    int len = n*2 - 1;
    for(int i=0;i<len;i++){
        for(int j=0;j<len;j++){
            int min = i < j ? i : j;
            min = min < len-i ? min : len-i-1;
            min = min < len-j-1 ? min : len-j-1;
            printf("%d ", n-min);
        }
        printf("n");
    }
    return 0;
}

1D Array

#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
int main() {
    /* Enter your code here. Read input from STDIN. Print output to STDOUT */
    int n, sum=0;
    scanf("%d",&n);
    int *a = malloc(n*sizeof(int));
    for(int i=0;i<n;i++)
    {
        scanf("%d",&a[i]);
        sum+=a[i];
    }
    printf("%i",sum);
    free(a);    
    return 0;
}

Array Reversal

#include <stdio.h>
#include <stdlib.h>
int main()
{
    int num, *arr, i;
    scanf("%d", &num);
    arr = (int*) malloc(num * sizeof(int));
    for(i = 0; i < num; i++) {
        scanf("%d", (arr + i));
    }
    /* Write the logic to reverse the array. */
    int temp;
    for (int i; i<num/2; i++) {
        temp = *(arr+num-i-1);
        *(arr+num-i-1) = *(arr+i);
        *(arr+i) = temp;       
    }
    
    for(i = 0; i < num; i++)
        printf("%d ", *(arr + i));
    return 0;
}

Digit frequency

#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
int main() {
    /* Enter your code here. Read input from STDIN. Print output to STDOUT */ 
        int* nums = (int*) malloc(10 * sizeof(int));
    char c;
    
    for(int i = 0; i < 10; i++)
        *(nums+i) = 0;
    while(scanf("%c", &c) == 1)
        if(c >= '0' && c <= '9')
            (*(nums+(c-'0')))++;
    
    for(int i = 0; i < 10; i++)
        printf("%d ", *(nums+i));
    
    return EXIT_SUCCESS;   
}

Printing Tokens

#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
int main() {
    char *s;
    s = malloc(1024 * sizeof(char));
    scanf("%[^n]", s);
    s = realloc(s, strlen(s) + 1);
    //Write your logic to print the tokens of the sentence here.
    for (char *c=s; *c != NULL; c++) {
    if (*c ==' ') {
    *c='n';
    }
    }
    printf("%s",s);
    return 0;
}

Small Triangles, Large Triangles

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
struct triangle
{
	int a;
	int b;
	int c;
};
typedef struct triangle triangle;
double area(triangle t) {
  double p = (t.a + t.b + t.c) / 2.0;
  return (p * (p - t.a) * (p - t.b) * (p - t.c));
// You can also write
// return sqrt(p * (p - t.a) * (p - t.b) * (p - t.c));
// There will be no issues at all, cause even without sqrt function you'll get different values
}
void swap(triangle *t1, triangle *t2) {
  triangle temp = *t1;
  *t1 = *t2;
  *t2 = temp;
}
void sort_by_area(triangle* tr, int n) {
    int i, j;
    for (i = 0; i < n - 1; i++) {
    for (j = 0; j < n - 1 - i; j++) {
      if (area(tr[j]) > area(tr[j + 1])) {
        swap(&tr[j], &tr[j + 1]);
      }
    }
  }
}
int main()
{
	int n;
	scanf("%d", &n);
	triangle *tr = malloc(n * sizeof(triangle));
	for (int i = 0; i < n; i++) {
		scanf("%d%d%d", &tr[i].a, &tr[i].b, &tr[i].c);
	}
	sort_by_area(tr, n);
	for (int i = 0; i < n; i++) {
		printf("%d %d %dn", tr[i].a, tr[i].b, tr[i].c);
	}
	return 0;
}

The rest of the codes will also be uploaded soon.

Snehasish Konger
Snehasish Konger

Snehasish Konger is a passionate technical writer and the founder of Scientyfic World, a platform dedicated to sharing knowledge on science, technology, and web development. With expertise in React.js, Firebase, and SEO, he creates user-friendly content to help students and tech enthusiasts. Snehasish is also the author of books like DITA Decoded and Mastering the Art of Technical Writing, reflecting his commitment to making complex topics accessible to all.

Articles: 222