Thread: Please help me as fast as possible

  1. #1
    Registered User
    Join Date
    Nov 2009

    Please help me as fast as possible

    Please can you solve this problem in C my final exam is next friday I want to know the answer for it before the exam.My exam is at 4 p.m.
    Create a software solution to support analysis of flow rate values (discharge) for

    trapezoidal open channels according to following guidelines:

    1. Provides the users with one of four functions: (1) create a flow rate matrix for a series

    of depth values and bottom width values with given values for Manning coefficient of

    roughness n, slope of water surface S, and slope of the trapezoid side z; the flow rate

    table that consist of the matrix and the values of all parameters used to create the

    matrix are stored in a file; (2) Load a flow rate table from an existing file (3) print the

    currently loaded table; and (5) using the loaded table estimate the water depth given a

    base width and flow rate. The following is an example of the initial menu presented:

    1. Create a flow rate table

    2. Load an existing flow rate table

    3. Display currently loaded flow rate table

    4. Estimate water depth using flow rate table

    5. Terminate

    Please make a selection (1-5):

    2. The following pseudo-code describes a structure to be used to contain the information

    about a selected table. Note that two structures are defined for creating members of

    the flow rate table structure. Use a global structure variable for storing flow rate table


    Define PARAM structure that contains:

    s (slope of the water, real value)

    z (slope of channel side, real value)

    n (coefficient of roughness, real value)

    Define HEADING structure that contains

    initialValue (initial value of the parameter)

    stepSize (step size for the parameter

    Define FLOW_RATE_TABLE structure that contains:

    name (string that contains the table name)

    params (a PARAM structure)

    baseWidth (a HEADING structure)

    waterDepth (a HEADING structure)

    flowRates is a matrix of real values of size NUMROWS by NUMCOLS

    (rows – contains q values for given depth)

    (columns – contains q values for given base width)

    Declare flowRateTable global structure variable as a FLOW_RATE_TABLE structure

    3. The flow rate matrix is a 10 X 10 matrix (i.e. NUMROWS and NUMCOLS are both

    equal to 10). The user is prompted for an initial base width value and step size (store

    in the baseWidth HEADING structure) and for an initial water depth value and step

    size (stored in the waterDepth HEADING structure). Thus the program computes 10

    values for base width starting at the initial value and incrementing the base widths

    using the step size; e.g. with a base width of 1.0 and step size of 0.5, the 10 base

    width values used are 1.0, 1.5, 2.0, 2.5, 3.0, 3.5, 4.0, 4.5, 5.0, 5.5.

    4. When creating a flow rate table (i.e. updating the global flow rate table structure),

    prompt the user for a table name. Define a file name by adding the extension “.frt” to

    the flow rate table name. Before updating the flow rate table structure, check that the

    file can be created (in the current working directory). If the file already exists, prompt

    the user to replace the file and continue the creation process only if the user accepts to

    replace the current file. Use a data file (.dat) to store the contents of the flow rate table


    5. Loading a flow rate table allows the user to select load a flow rate table from a flow

    rate table file. The contents of the corresponding file are loaded into the flow rate


    6. In the case of estimating depth, the user must provide a base width that occurs in the

    table. The flow rate can fall between values and linear interpolation should be used to

    estimate the depth. If the base width is not part of the table or the flow rate falls

    outside the range of the table, an error message shall be printed.

    7. Demonstrate structured programming by using a number of functions, that is, break

    down the software into smaller problems to be solved by separate functions (note that

    algorithms should be provided for each function). It will be much easier to develop

    the software than trying to create large functions. For example:

    8. Do not use global variables other than the single structure variable described above.

    9. Use the metric system.

    10. In Step 2, when describing input/output, you will be required to provide a textual

    description since block diagrams will not be sufficient.

    11. Test input data as follows:

    1. The following values must be greater than zero: slope of water surface S, and

    slope of the trapezoid side z, initial base width value, initial water depth value,

    step sizes.

    2. The Maning coefficient must fall between the values of 0.001 and 0.1.

    3. Check for invalid selection values entered in response to the menus or other

    prompts (e.g. prompt to request for overwriting a file).

    12. Develop the pseudo code for the missing functions, and translate all into C code.

    Main program :

    Copy the empty string to




    Print “1) Create a flow rate table”

    Print “2) Load an existing flow rate table”

    Print “3) Display the currently loaded flow rate table”

    Print “4) Estimate water depth using flow rate table”

    Print “5) Terminate”

    If not empty string

    Print “(Table “,, “loaded)”


    Print “(No table loaded)”


    Print “Please make a selection (1-5): “

    Read value into selection

    If selection equals 1


    Else if selection equals 2


    Else if selection equals 3


    Else if selection equals 4


    Else if selection equals 5

    Print “Terminating”

    while selection less than 1 or greater than 5

    while selection not equal to 5


    if setFlowRateTableName() equals OK

    Assign readValueGTzero(“slope of the water”) to flowRateTable.params.s

    Assign readValueGTzero(“slope of the channel sides”) to flowRateTable.params.z


    Print “Please give the coefficient of roughness: “

    Read value into flowRateTable.params.n

    If flowRateTable.params.n less than N_MIN or greater than N_MAX

    Print “Coefficient of roughness must lie in the range of”,

    N_MIN, “ and “, N_MAX

    While flowRateTable.params.n less than N_MIN or greater than N_MAX

    Assign readValueGTzero(“initial base width”) to flowRateTable.baseWidth.initialValue

    Assign readValueGTzero(“step size”) to flowRateTable.baseWidth.stepSize

    Assign readValueGTzero(“initial water depth”) to



    Assign readValueGTzero(“step size”) to flowRateTable.waterDepth.stepSize

    ( updates the matrix )

    Assign flowRatetable.waterDepth.initialValue to y

    Assign 0 to rix

    Repeat while rix is less than NUMROWS

    Assign flowRateTable.baseWidth.initialValue to b

    Assign 0 to cix

    Repeat while cix is less than NUMCOLS

    Assign computeFlowRate(flowRateTable.params, b, y) to



    Assign b+flowRateTable.baseWidth.stepSize to b

    Increment cix

    Assign y+flowRateTable.waterDepth.stepSize to y

    Increment rix

    (Store to the file)

    Append “.frt” to and assign to fileName

    If can open fileName for writing as filePtr

    Write flowRateTable into file filePtr

    Close file filePtr

    Print “Table “,, “ created”


    /* This function should prompt the user for the file name, checks if the file exists

    or not, and give the user the choice to overwrite it, and copy the table name into

    the name field of the flowRateTable structure. This function returns a Boolean



    /* This function should prompt the user for a positive value, and keep prompting

    until the value is positive. This function returns that positive value */

    computeFlowRate(params, b, y)

    assign yb+y2*params.z to area

    assign b+2y(1+params.z2)1/2 to perimeter

    assign area/perimeter to rh

    assign (1/params.n) * area * rh2/3 * params.s1/2 to q

    return q


    /* This function prompts the user for the table name, opens the file for reading,

    and copy the file contents into the FlowRateTable structure */


    /* This function displays the flowRateTable on the output screen in a tabular

    format */



    Print “Please enter a base width: ”

    Read value into b

    Assign getColIndex(b) to cix

    If cix equals -1

    Print “Invalid base width value, must be in the table heading”

    While cix equals -1


    Print “Please enter a flow rate: ”

    Read value into q

    Assign getRowIndex(cix, q) to rix

    If rix equals -1

    Print “Invalid value, must be in the range of the base width column”

    While rix equals -1

    If rix equals NUMROWS-1

    Assign flowRateTable.flowRates[NUMROWS-1,cix] to waterDepthEstimate


    Assign (qflowRateTable.


    - flowRateTable.flowRates[rix][cix]) to stepFraction

    Assign flowRateTable.waterDepth.initial+ flowRateTable.waterDepth.stepSize*rix +

    stepFraction*flowRateTable.waterDepth.stepSize to waterDepthEstimate

    Print “Water depth is estimated at “, waterDepthEstimate


    Assign -1 to retValue

    Assign flowRateTable.baseWidth.initialValue to b

    Assign 0 to cix

    Assign 0.001*flowRateTable.baseWidth.stepSize to tolerance

    Repeat while cix less than NUMCOLS and retValue equals -1

    If absolute value of b-bGiven less than tolerance

    Assign cix to retValue

    Increment cix

    Assign b+flowRateTable.baseWidth.stepSize to b

    Return retValue

    getRowIndex(cix, qGiven)

    /* this function returns the row index with the closest value to the qGiven value –

    similar to the getColIndex function */
    Last edited by Xbox999; 11-30-2009 at 06:03 PM.

  2. #2
    Registered User
    Join Date
    Oct 2008
    Is that all?

  3. #3
    Registered User
    Join Date
    Nov 2009
    tha is all I put some psudu code to help you.

  4. #4
    Registered User
    Join Date
    Nov 2009
    yes that it all.I desine some psudu code but I want you to help me to desine all the program using C.If I see the correct answer that will help me for my studing for the exam.

  5. #5
    Registered User
    Join Date
    Nov 2009
    I think he was being sarcastic :/

  6. #6
    Join Date
    Dec 2007

    Perhaps you missed the Homework Policy here?

Popular pages Recent additions subscribe to a feed

Similar Threads

  1. Replies: 6
    Last Post: 02-27-2009, 04:43 PM
  2. I want to make a fast scroll
    By Gustaff in forum C Programming
    Replies: 3
    Last Post: 04-29-2004, 07:40 PM
  3. Saving a part of screen into a file fast!
    By Zap in forum C++ Programming
    Replies: 4
    Last Post: 06-28-2003, 10:56 AM
  4. Super fast bilinear interpolation
    By VirtualAce in forum Game Programming
    Replies: 2
    Last Post: 06-18-2002, 09:35 PM
  5. moving a bitmap, fast and smooth
    By werdy666 in forum Game Programming
    Replies: 1
    Last Post: 05-31-2002, 06:49 PM