Hi, I am trying to get this and I know I have to be close.
Code:
#include "stdio.h"
#include "math.h"
#include "ctype.h"
struct temperatures
{
int *inTemperature;
int *outTemperature;
};
typedef struct temperatures Temperatures;
int main(int argc, char** argv)
{
char scale;
int max;
int min;
int interval;
int dataSize;
int i;
while(1)
{
printf( "Enter a temperature scale (F/C): ");
scanf( " %c", &scale);
scale = toupper(scale);
if (scale == 'C')
{
break;
}
if (scale == 'F')
{
break;
}
}
printf( "Enter a minimum temperature (%c): ", scale);
scanf( " %d", &min);
printf( "Enter a maximum temperature (%c): ", scale);
scanf( " %d", &max);
printf( "Enter a temperature interval (%c): ", scale);
scanf( " %d", &interval);
dataSize = ceil( (float) (max - min) / interval ) + 1;
Temperatures.inTemperature = malloc(dataSize * sizeof(inTemperature));
Temperatures.outTemperature = malloc(dataSize * sizeof(outTemperature));
for (i = 0; i < dataSize; i++)
{
Temperatures.inTemperature[i] = min + (i * interval);
if (scale == 'F')
{
Temperatures.outTemperature[i] = (Temperatures.inTemperature[i] - 32) * 5 / 9;
}
if (scale == 'C')
{
Temperatures.outTemperature[i] = 32 + (Temperatures.inTemperature[i] * 9 / 5);
}
}
for (i = 0; i < dataSize; i++)
{
Temperatures.inTemperature[i] = min + (i * interval);
if (scale == 'F')
{
printf( " %3d F = %3d C\n", Temperatures.inTemperature[i], Temperatures.outTemperature[i]);
}
if (scale == 'C')
{
printf( " %3d C = %3d F\n", Temperatures.inTemperature[i], Temperatures.outTemperature[i]);
}
}
free (Temperatures);
Temperatures = NULL;
return 0;
}
it appears the problem is here:
Code:
Temperatures.inTemperature = malloc(dataSize * sizeof(inTemperature));
Temperatures.outTemperature = malloc(dataSize * sizeof(outTemperature));
I have tried Temperatures = malloc..... and no luck.
Any help would be appreciated.