Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

Returning values in array in c

  1. May 9, 2012 #1
    Code (Text):

    #include<stdio.h>
    #include<conio.h>
    float average(float[],float );
    float highest(float[],float );
    float lowest(float[], float );
    void main (void)
    {
    float temper[15];
    float x,n, y, z;
    int  day;
    clrscr();
    printf("enter the no.days to read temperature for=\n");
    scanf("%d",&n);
    for(day=0; day<n; day++)
     {
     printf("temperature for day%d=",day+1);
     scanf("%f",&temper[day]);
     }
    x=average(temper,n);
    printf("average temperature is=%.2f\n",x);
    y=highest(temper,n);
    printf("highest temperature is=%.2f\n",y);
    z=lowest(temper,n);
    printf("lowest temperature is=%.2f\n",z);
    getche();
    }

    float average(float temper[],float n)
    {
    int sum=0.0,x;
    float average;
    for(x=0; x<n; n++)
     sum+=temper[x];
     average=sum/n;
     return (average);
    }

    float highest(float temper[],float n)
    {
    float highest;
    int y;
    highest=temper[0];
    for(y=0; y<n; y++)
    if(highest<temper[y])
    highest=temper[y];
    return(highest);
    }

    float lowest(float temper[],float n)
    {
    float y,lowest=temper[0];
    for(y=0; y<n; y++)
    if(lowest>temper[y])
    lowest=temper[y];
    return(lowest);
    }

     
    hy my code is not returning value of average minimum and maximum temperature. what can i do now???
     
  2. jcsd
  3. May 9, 2012 #2
    What's it returning?
     
  4. May 9, 2012 #3

    jtbell

    User Avatar

    Staff: Mentor

    What result does your code actually show for maximum, minimum and average, for a specified small set of temperature values? (give a specific numeric example)
     
  5. May 9, 2012 #4

    Mark44

    Staff: Mentor

    Code (Text):

    void main (void)
    {
       float temper[15];
       float x,n, y, z;
       int  day;
       clrscr();
       printf("enter the no.days to read temperature for=\n");
       scanf("%d",&n);
    .
    .
    .
     
    You are declaring n as a float, but are attempting to read an int in scanf. Change the declaration of n to int.

    I didn't notice any other errors, but I only gave your code a quick scan.
     
  6. May 10, 2012 #5
    There is a Data Typical Mistake in float average();

    You see, when you declare int sum = 0.0; sum is of int data type.

    Now, when you store float into int, as in sum+=temper[x];
    sum will truncate/delete all the decimal values and only sum integer part.

    sum/n is ok, it will give a decimal float value.

    If you declare n as int, and fix the datatypes in all of the functions, you still dont have to bother about sum/n, because sum is now of float type.

    So, do all those edits, and tell us how's it going.

    Editted:

    Code (Text):
    #include<stdio.h>
    #include<conio.h>
    float average(float[],int );
    float highest(float[],int);
    float lowest(float[], int);
    void main (void)
    {
    float temper[15];
    float x, y, z;
    int  day, n;
    clrscr();
    printf("enter the no.days to read temperature for=\n");
    scanf("%d",&n);
    for(day=0; day<n; day++)
     {
     printf("temperature for day%d=",day+1);
     scanf("%f",&temper[day]);
     }
    x=average(temper,n);
    printf("average temperature is=%.2f\n",x);
    y=highest(temper,n);
    printf("highest temperature is=%.2f\n",y);
    z=lowest(temper,n);
    printf("lowest temperature is=%.2f\n",z);
    getche();
    }

    float average(float temper[],int n)
    {
     int x;
     float sum=0.0;
    float average;
    for(x=0; x<n; n++)
     sum+=temper[x];
     average=sum/n;
     return (average);
    }

    float highest(float temper[],int n)
    {
    float highest;
    int y;
    highest=temper[0];
    for(y=0; y<n; y++)
    if(highest<temper[y])
    highest=temper[y];
    return(highest);
    }

    float lowest(float temper[],int n)
    {
    float y,lowest=temper[0];
    for(y=0; y<n; y++)
    if(lowest>temper[y])
    lowest=temper[y];
    return(lowest);
    }
    Now that should do.
     
Know someone interested in this topic? Share this thread via Reddit, Google+, Twitter, or Facebook