Thread: Function to read in two arrays

  1. #1
    Registered User
    Join Date
    Nov 2008
    Posts
    4

    Exclamation Function to read in two arrays

    I'm relatively new to programming and I have to write a function that reads in input from the user and to fill two arrays then compare them. I guess what I'm confused on is how to read in both arrays.

    This is what I'm supposed to do,

    Write a table_diff fuction that compares two arrays of integers and returns the subscript of the first place they differ. If the arrays are the same, the function should return -1 ex:

    345 & 345 --> -1 (same)

    345 & 346 --> 2 (differ at index 2)

    1234 & 123 --> 3 (differ at index 3)



    But what im having trouble with is writing the function to read the two arrays in. Im not sure if i can do it in one single while loop or if i need two?

    This is what i have, any help is appreciated!

    Code:
    int table_fill(int a[], int b[],int max)
    {
        
    
     int value;
     int r;
     int *ptra = a;
     int *ptrb = b;
     int *endptra = ptra - max;
     int *endptrb = ptrb - max;
       
    printf("please enter values \n\n");
    
    
    while((r = scanf("%i", &value)) != 1 && ptra < endptra)
    {
         *(ptra++) = value;                      
    
         if (r==1)
             printf("No room after reading values\n\n");
         else if(r != EOF)
             printf("invalid char");
    }   
    
    while((r = scanf("%i\n", &value))!= 1 && ptrb < endptrb){
        *(ptrb++) = value;
    
        if (r==1)
            printf("No room after reading values\n\n");       
        else if(r != EOF)
            printf("invalid char");                      
    }
                  
    }

  2. #2
    and the Hat of Guessing tabstop's Avatar
    Join Date
    Nov 2007
    Posts
    14,336
    Maybe it's required for the assignment, but why write a function that reads into two arrays? Why not write a function that reads into one array, and then call it twice?

  3. #3
    and the hat of int overfl Salem's Avatar
    Join Date
    Aug 2001
    Location
    The edge of the known universe
    Posts
    39,656
    > (r = scanf("&#37;i", &value)) != 1
    I'd say you would want == 1 here.

    I'd also put the loop in another function, and just call it twice with different parameters.

    > printf("No room after reading values\n\n");
    What's this supposed to mean?
    If you dance barefoot on the broken glass of undefined behaviour, you've got to expect the occasional cut.
    If at first you don't succeed, try writing your phone number on the exam paper.

  4. #4
    Registered User
    Join Date
    Nov 2008
    Posts
    4
    Yeah its required for this assignment. Ah yeah that would make sense, thanks! So you would suggest writing a function to read in each array?

  5. #5
    Registered User
    Join Date
    Nov 2008
    Posts
    4
    Oh and I'm supposed to do an error check, but was unsure how to do it. Its supposed to check to see if there is enough room in the array and check to see if a invalid character was entered

  6. #6
    and the hat of int overfl Salem's Avatar
    Join Date
    Aug 2001
    Location
    The edge of the known universe
    Posts
    39,656
    > So you would suggest writing a function to read in each array?
    I believe I just did.

    > Its supposed to check to see if there is enough room in the array and check to see if a invalid character was entered
    The 'room' is the ptra < endptra test
    The 'valid' is the == test

    However, what you don't do at the moment is clean up the input stream if scanf() returns something other than 1
    If you dance barefoot on the broken glass of undefined behaviour, you've got to expect the occasional cut.
    If at first you don't succeed, try writing your phone number on the exam paper.

  7. #7
    Registered User
    Join Date
    Nov 2008
    Posts
    4
    Ok i'll give that a shot right now, thanks Salem!

    If my memory serves me correctly, I think I used ( in an older program)

    while(getchar() != '\n');

    to flush it out?

  8. #8
    Registered User
    Join Date
    Sep 2008
    Posts
    58
    Code:
    while(((r = scanf("%i", &value)) != 1 && ptra < endptra)
    You seem to missing that extra '(' also.

Popular pages Recent additions subscribe to a feed

Similar Threads

  1. "sorting news" assignment
    By prljavibluzer in forum C Programming
    Replies: 7
    Last Post: 02-06-2008, 06:45 AM
  2. Arrays as function arguments :(
    By strokebow in forum C Programming
    Replies: 10
    Last Post: 11-18-2006, 03:26 PM
  3. Bisection Method function value at root incorrect
    By mr_glass in forum C Programming
    Replies: 3
    Last Post: 11-10-2005, 09:10 AM
  4. Problem with Visual C++ Object-Oriented Programming Book.
    By GameGenie in forum C++ Programming
    Replies: 9
    Last Post: 08-29-2005, 11:21 PM
  5. Read In From Many Files In One Function
    By djwicks in forum C Programming
    Replies: 12
    Last Post: 03-24-2005, 07:39 AM

Tags for this Thread