Lab 8 (C Programming) Solution

Mar 6, 2019

 programs written here are compiled and run in gcc (Ubuntu 7.3.0-27ubuntu1~18.04) 7.3.0 

1)Write a program to find the sum of all the elements of an array using pointer. 

Source Code: 

#include <stdio.h>
#include <stdlib.h>

int main()
{
    float *arr_ptr, sum = 0;
    int n,i;
    /* here we use dynamic memory allocation
        you can use array for fixed number of
        array size
    */
    printf("Enter the number of elements of an array:");
    scanf("%d", &n);
    arr_ptr = malloc(sizeof(float) * n);

    printf("Enter array elements:");
    /* reading array elements */
    for(i = 0; i < n; i++){
        scanf("%f", arr_ptr + i);
        sum += *(arr_ptr + i);
    }
    printf("\nSUM = %f\n", sum);
    return 0;
}
 

 

Output:

Enter the number of elements of an array:7
Enter array elements:2.3
3.3
2.2
1.1
8
6.9
9

SUM = 32.800003

 

 

2)Write a program to swap two variables using pointer and function.

 

Source Code: 

#include <stdio.h>

void swap(int *first, int *second){
    int temp;
    temp = *first;
    *first = *second;
    *second = temp;
}

int main(){
    int a = 80, b = 100;
    printf("Before swap (a,b)= (%d, %d)\n", a,b);
    swap(&a, &b);
    printf("After swap (a,b)= (%d, %d)\n", a,b);
    return 0;
}

 

 

Output:

Before swap (a,b)= (80, 100)
After swap (a,b)= (100, 80)
 

 

3)Write a program to read the paragraph from the user and count the number of characters, words and lines in that paragraph.

 

Source Code: 

#include <stdio.h>

int main()
{
    char paragraph[300], *ch_ptr;
    int i, c_count = 0, w_count = 0, l_count = 0;
    printf("Enter the paragraph terminated by dollar($):\n");
    scanf("%[^$]", paragraph);
    for(i = 0; paragraph[i] != '\0'; i++){
        if(paragraph[i] == ' ' || paragraph[i] == '\n'){
            w_count++;
        }
        if(paragraph[i] == '\n'){
            l_count++;
        }
        c_count++;
    }
    printf("Characters = %d\n", c_count);
    printf("Words = %d\n", w_count + 1);
    printf("Lines = %d\n", l_count + 1);
    return 0;
}

 

 

Output:

Enter the paragraph terminated by dollar($):
hello this is me computer programmer
writing codes in c programming
and this is the program to count character words and lines of paragraph$
Characters = 139
Words = 24
Lines = 3	

 

  

4)Write a program to read the sentence from the user and delete all the vowels from the sentence.

 

Source Code: 

#include <stdio.h>
#include <string.h>

int main()
{
    char paragraph[300], *ch_ptr;
    int i,j , c_count = 0, w_count = 0, l_count = 0;
    printf("Enter the string:\n");
    scanf("%[^\n]", paragraph);
    for(i = 0; paragraph[i] != '\0'; i++){
        if(paragraph[i] == 'a' || paragraph[i] == 'e' || paragraph[i] == 'i' || paragraph[i] == 'o' || paragraph[i] == 'u' ||
        paragraph[i] == 'A' || paragraph[i] == 'E' || paragraph[i] == 'I' || paragraph[i] == 'O' || paragraph[i] == 'U'){
            for(j = i; paragraph[j] != '\0'; j++){
                paragraph[j] = paragraph[j + 1];
            }
/* this is for consequtive occurance of vowels */ i--; } } printf("Refined String : %s\n", paragraph); return 0; }

 

 

Output:

Enter the string:
hello this is again me, computer programmer to write another program in c
Refined String : hll ths s gn m, cmptr prgrmmr t wrt nthr prgrm n c	

 

 

 

5)Write a program to copy one string from another string without using string handling functions.

Source Code: 

#include <stdio.h>

int main()
{
    char str1[50], str2[50];
    int i;
    printf("Enter the first string:\n");
    scanf(" %[^\n]", str1);
    printf("Enter the Second string:\n");
    scanf(" %[^\n]", str2);

    for(i = 0; str2[i] != '\0';i++){
        str1[i] = str2[i];
    }
    str1[i] = '\0';
    printf("Copied String: %s\n", str1);

    return 0;
}

 

Output:

Enter the first string:
hello kathmandu
Enter the Second string:
namaste nepal
Copied String: namaste nepal

 

6)Write a program to concatenate two strings.

 

Source Code:  

#include <stdio.h>

/* function to get the string length */
int find_length(char *str){
    int i;
    for(i = 0; *(str + i) != '\0'; i++){

    }
    return i;
}

int main()
{
    char str1[50], str2[50];
    int i, length1;
    printf("Enter the first string:\n");
    scanf(" %[^\n]", str1);
    printf("Enter the Second string:\n");
    scanf(" %[^\n]", str2);
    length1 = find_length(str1);

    for(i = 0; str2[i] != '\0';i++){
        str1[length1 + i] = str2[i];
    }
    str1[length1 + i] = '\0';
    printf("Concatinated String: %s", str1);

    return 0;
}

 

 

 

Output:

Enter the first string:
hello from 
Enter the Second string:
nepal
Concatinated String: hello from nepal 

 

 

7)Write a program to compare two strings entered by the user

 

Source Code:  

#include <stdio.h>

/* function to get the string length */
int find_length(char *str){
    int i;
    for(i = 0; *(str + i) != '\0'; i++){

    }
    return i;
}

/* function that copares two strings */
int compare_string(char *str1, char *str2){
    int i, l1, l2;
    l1 = find_length(str1);
    l2 = find_length(str2);
    for(i = 0; *(str1+i) != '\0' || *(str2 + i) != '\0'; i++){
        if(*(str1+i) > *(str2+i)){
            return 1;
        }else if(*(str1+i) < *(str2+i)){
            return -1;
        }
    }
    if(l1 == l2){
        return 0;
    }else{
        return -1;
    }
}

int main()
{
    char str1[50], str2[50];
    int state;
    printf("Enter the first string:\n");
    scanf(" %[^\n]", str1);
    printf("Enter the Second string:\n");
    scanf(" %[^\n]", str2);
    state = compare_string(str1, str2);
    if(state == 1){
        printf("First one is greater.");
    }else if(state == -1){
        printf("Second one is greater.");
    }else{
        printf("They are same.");
    }
    return 0;
}

 

 

 

Output:

Enter the first string:
computer programmer
Enter the Second string:
computer engineer
First one is greater. 

 

 

 

8)Write a program to compare two strings entered by the user

 

Source Code:  

#include <stdio.h>
#include <stdlib.h>
#define N 10

/* function to get the string length */
int find_length(char *str){
    int i;
    for(i = 0; *(str + i) != '\0'; i++){

    }
    return i;
}

/* function that copares two strings */
int compare_string(char *str1, char *str2){
    int i, l1, l2;
    l1 = find_length(str1);
    l2 = find_length(str2);
    for(i = 0; *(str1+i) != '\0' || *(str2 + i) != '\0'; i++){
        if(*(str1+i) > *(str2+i)){
            return 1;
        }else if(*(str1+i) < *(str2+i)){
            return -1;
        }
    }
    if(l1 == l2){
        return 0;
    }else{
        return -1;
    }
}
void swapp_string(char *str1, char *str2){
    char temp_ch;
    int i, len1 = find_length(str1), len2 = find_length(str2), largest_str;
    largest_str = (len1 > len2) ? len1:len2;
    for(i = 0; i < largest_str; i++){
        temp_ch = *(str1 + i);
        *(str1 + i) = *(str2 + i);
        *(str2 + i) = temp_ch;
    }
}

int main()
{
    char *name[N];
    int i, j;

    /* Allocating 40 byte memory for each element of array*/
    for(i = 0; i < N; i++){
        name[i] = malloc(sizeof(char) * 40);
    }
    /* read the names*/
    for(i = 0; i < N; i++){
        printf("Enter name : %d:", i+1);
        scanf(" %[^\n]", name[i]);
    }
    /* sorting the names */
    for(i = 0; i < N - 1; i++){
        for(j = i + 1; j < N; j++){
            if(compare_string(name[i], name[j]) == 1){
                swapp_string(name[i], name[j]);
            }
        }
    }
    printf("SORTED STRING:\n\n");
    for(i = 0; i < N; i++){
        printf("%d: %s\n", i+1, name[i]);
    }
    return 0;
}

 

 

 

Output:

Enter name : 1:ram bahadur karki
Enter name : 2:rita timilsina
Enter name : 3:aarati bhatta
Enter name : 4:aarati bhantana
Enter name : 5:ramhari bhurtel
Enter name : 6:rishiram tiwari
Enter name : 7:haribansha achcharya
Enter name : 8:nepali babu
Enter name : 9:harkha ram
Enter name : 10:sitaram kattel
SORTED STRING:

1: aarati bhantana
2: aarati bhatta
3: haribansha achcharya
4: harkha ram
5: nepali babu
6: ram bahadur karki
7: ramhari bhurtel
8: rishiram tiwari
9: rita timilsina
10: sitaram kattel

 

 

9)Write a program to print the following pattern.

PROGRAMMING

PROGRAMMIN

PROGRAMMI

PROGRAMM

PROGRAM

PROGRA

PROGR

PROG

PRO

PR

P

 

Source Code:  

#include <stdio.h>

int main()
{
    char string[] = "PROGRAMMING";
    int i,j, length;
    for(i = 0; string[i] != '\0';i++){

    }
    length = i;
    for(i = 0; i < length; i++){
        for(j = 0; j < length - i; j++){
            printf("%c", string[j]);
        }
        printf("\n");
    }
    return 0;
}

 

 

 

Output:

PROGRAMMING
PROGRAMMIN
PROGRAMMI
PROGRAMM
PROGRAM
PROGRA
PROGR
PROG
PRO
PR
P