Numeric/Character Arrays Part 2
    Let's write the code 
    necessary to carry out the menu options listed in part 1:
    
    
    Choice 1: Display 
    the list of people.
    This is pretty simple. 
    We know how many people there are (we stored this value in variable/location
    numberpeople). Now all we have to do is print out the list using a 
    for loop. I added the variable offset (as a short integer) into my 
    list of variable declarations for this purpose. So the basic command is 
    simply:
    
    for (offset = ??; 
    offset < ??; ??)
    
    I think you can figure 
    out what is missing. Here is how my output appears:
    
    
    
    You'll notice that 
    after I finished listing the people, I prompted the user to return to the 
    main menu, and we did.
    You will also notice 
    that my output is formatted. Since we didn't spend much time in formatting, 
    I will give you the print string:
    
    printf("%-20s %3d 
    %5.3f\n,personname[offset], personage[offset], persongpa[i])
    
    There are easily fixed 
    errors in the code above.
    Choice 2: Add a new 
    person to the list
    Again, this is pretty 
    simple. We already know that there numberpeople on the list. All we 
    have to do  stored at get the user's input and store them at 
    index/offset [numberpeople]. Then we have to increment the value of
    numberpeople.
    That might initially 
    sound strange (storing the values at offset numberpeople and THEN
    incrementing the value. But think about it. Right now, the value of 
    numberpeople is 5 (five), but they on stored on offsets [0] ... [4]. We 
    want to store our new values at offset [5] (the present value stored at 
    location numberpeople), and then increment the value stored at 
    numberpeople to 6 (the number of people NOW on our list).
    Here is how my program 
    did it:
    
    
    Notice that my program 
    printed out the new list before returning to the main menu. HOW??  
    I simply copied and pasted the code I used in my listing routine (above). We 
    will clean this up later.
    There are a few things 
    you have to be aware of. Cin and cout have some anomolies 
    associated with them. Using the commands:
    
    cout << "Enter the new person's age: 
    ";
    cin >> personage[numberpeople];
    
    Should give you no 
    problems. However, if you use the command:
    
    cout << "Enter the new person's age: 
    ";
    cin >> personage[numberpeople];
    
    You might run into 
    problems (especially if you enter spaces and other delimiters. So, I will 
    give you some straight-forward C commands to get the user input and store it 
    (all you need to do is put this snippet of code in your program):
    
    printf("Enter the 
    new person's Name: ");
    gets(temp);
    strcpy(personname[numberpeople], temp);
    
    The only command that 
    needs a little explanation is strcpy. strcpy is a function 
    which copies a string to another string. It takes two arguments: (The string 
    you want to copy to, The string you want to copy from). Actually, it takes:
    
    
    (The address you want 
    to copy the string to, The address of the string you want to copy from)
    
    The function is 
    located in the file string.h, so make sure you include the file at 
    the top of your file.
    Choice 3: Change a 
    person's name
    This is also pretty 
    easy, but there is something you should do beforehand. You will notice that 
    choices 3, 4, and 5 require you to first identify the person whose record 
    the user wants to change. That means you need to get the offset of the array 
    number, and then replace whatever is in that location with the user input.
    Let's take a look at 
    my output first:
    
    
    Notice that after menu 
    option 3 was chosen, I once again displayed the list (A copy and paste job), 
    but this time with the index/offset number before the person's information. 
    I then checked to make sure that the user entered a valid number (this uses 
    the same basic logic that we used to check for a valid menu choice), and 
    stored it at location personnumber. I didn't let the user get away 
    with making an invalid choice. If they entered a valid choice, this is what 
    the output would look like:
    
    
    All I did was print 
    out the name, and get the information. Once again, be careful with cin. 
    Again, I used the code:
    
    printf("Enter a new 
    name for %s: , personname[??]);
    gets(temp);
    strcpy(personname[??], temp);
    
    I think you can figure 
    out the missing information (and catch the other simple error).
    Once again, I printed 
    out the entire list of people. How?? the same way I did it the other 
    two times.
    Choice 4: Change a 
    person's age
    This is simply a 
    take-off on changing a person's name (actually much simpler). Once again, I 
    found out the address where the information is stored (by getting the array 
    offset), prompting the user, getting the user input, and printing the 
    information. Here is my output:
    
    
    I used the command:   
    cin >> personage[personnumber]; to get the user input.
    Choice 4: Change a 
    person's GPA
    This is almost 
    identical to choice 3, except that we are getting a real number instead of 
    an integer. Once again, I found out the address where the information is 
    stored (by getting the array offset), prompting the user, getting the user 
    input, and printing the information. Here is my output:
    
    
    Once again, I used the
    cin command.
    Get this up and 
    running, and we will go onto the final part of the assignment.
    
This page was last updated on 
07/06/05