Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Sign In with Facebook Sign In with Google Sign In with OpenID

Categories

We have migrated to a new platform! Please note that you will need to reset your password to log in (your credentials are still in-tact though). Please contact lee@programmersheaven.com if you have questions.
Welcome to the new platform of Programmer's Heaven! We apologize for the inconvenience caused, if you visited us from a broken link of the previous version. The main reason to move to a new platform is to provide more effective and collaborative experience to you all. Please feel free to experience the new platform and use its exciting features. Contact us for any issue that you need to get clarified. We are more than happy to help you.

Help in C language please!!

cshalomcshalom Posts: 5Member
1. Write a program to copy its input to its output, replacing each string of one or more blanks by a single blank.

Comments

  • frmfrm Posts: 9Member
    Hi.
    First of all, i would like you to know that if you are receiving strings in c console applications, it doesn't receive blank spaces (i use dev c++). But what you wish to do is possible. The steps you will need are;

    a. Receive string as input.
    b. Convert the string to a character array.
    c. Using a loop test if each array element is a space.
    d. Use a variable to indicate when the array element is a space. (a Boolean variable best suites this. It should be set to false if a space is not found and set to true if a space is found)
    e. If the Boolean variable is true, then don't modify your output.
    f. If the Boolean variable is false, then modify your output.

    I wrote the code below to show you what i mean;


    #include
    #include
    #include



    int main()
    {
    int myint = 0; //integer variable used to indicate the presence of a space
    int i = 0; //integer variable used to move through the array
    int count = 0; // integer variable used for updating the output array
    char mystring[12]; //Input string
    char myoutput[12]; //Output String

    //Setting out input string to: qwe t t y
    //Notice it has 3 consecutive spaces, then one space then two consecutive spaces
    mystring[0] = 'q';
    mystring[1] = 'w';
    mystring[2] = 'e';
    mystring[3] = ' ';
    mystring[4] = ' ';
    mystring[5] = ' ';
    mystring[6] = 't';
    mystring[7] = ' ';
    mystring[8] = 't';
    mystring[9] = 't';
    mystring[10] = ' ';
    mystring[11] = 't';

    for ( i = 0; i <= 11; i++)
    {
    if ( mystring[i] == ' ' ) // If the input string finds a blank space
    {
    if (myint == 0) //If our indicator variable if 0 meaning previous was not a blank space
    {
    myint = 1; //Change indicator variable to 1 meaning a blank space found
    myoutput[count] = mystring[i]; //Update output
    count ++ ; // increase count to move to next space in output array
    }
    }

    else if (mystring[i] != ' ') // if our input string doesn't find a blank space
    {
    myint = 0; //Change indicator variable to 0 meaning a blank space not found
    myoutput[count] = mystring[i]; //Update output
    count ++; // increase count to move to next space in output array
    }
    }

    // Printing of input and output to display the difference
    printf("Old String: ");
    printf("%s", mystring);
    printf("
    ");
    printf("New String: ");
    printf("%s", myoutput);
    printf("
    ");
    system("pause");
    }


  • frmfrm Posts: 9Member
    Hi.
    First of all, i would like you to know that if you are receiving strings in c console applications, it doesn't receive blank spaces (i use dev c++). But what you wish to do is possible. The steps you will need are;

    a. Receive string as input.
    b. Convert the string to a character array.
    c. Using a loop test if each array element is a space.
    d. Use a variable to indicate when the array element is a space. (a Boolean variable best suites this. It should be set to false if a space is not found and set to true if a space is found)
    e. If the Boolean variable is true, then don't modify your output.
    f. If the Boolean variable is false, then modify your output.

    I wrote the code below to show you what i mean;


    #include
    #include
    #include



    int main()
    {
    int myint = 0; //integer variable used to indicate the presence of a space
    int i = 0; //integer variable used to move through the array
    int count = 0; // integer variable used for updating the output array
    char mystring[12]; //Input string
    char myoutput[12]; //Output String

    //Setting out input string to: qwe t t y
    //Notice it has 3 consecutive spaces, then one space then two consecutive spaces
    mystring[0] = 'q';
    mystring[1] = 'w';
    mystring[2] = 'e';
    mystring[3] = ' ';
    mystring[4] = ' ';
    mystring[5] = ' ';
    mystring[6] = 't';
    mystring[7] = ' ';
    mystring[8] = 't';
    mystring[9] = 't';
    mystring[10] = ' ';
    mystring[11] = 't';

    for ( i = 0; i <= 11; i++)
    {
    if ( mystring[i] == ' ' ) // If the input string finds a blank space
    {
    if (myint == 0) //If our indicator variable if 0 meaning previous was not a blank space
    {
    myint = 1; //Change indicator variable to 1 meaning a blank space found
    myoutput[count] = mystring[i]; //Update output
    count ++ ; // increase count to move to next space in output array
    }
    }

    else if (mystring[i] != ' ') // if our input string doesn't find a blank space
    {
    myint = 0; //Change indicator variable to 0 meaning a blank space not found
    myoutput[count] = mystring[i]; //Update output
    count ++; // increase count to move to next space in output array
    }
    }

    // Printing of input and output to display the difference
    printf("Old String: ");
    printf("%s", mystring);
    printf("
    ");
    printf("New String: ");
    printf("%s", myoutput);
    printf("
    ");
    system("pause");
    }


Sign In or Register to comment.