move exercises, lecture examples, labs into subfolders
This commit is contained in:
92
Exercises/C18/ex4.c
Normal file
92
Exercises/C18/ex4.c
Normal file
@@ -0,0 +1,92 @@
|
||||
#include <stdio.h>
|
||||
#include <math.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
|
||||
float degrees_to_radians(float degrees) {
|
||||
return M_PI * degrees / 180.0;
|
||||
}
|
||||
|
||||
|
||||
// Simple function to populate an integer array
|
||||
void PopulateTheArray ( int Size, float ArrayData[])
|
||||
{
|
||||
int i; // Variable to use in our loop
|
||||
|
||||
for ( i = 0 ; i < Size ; i++)
|
||||
{
|
||||
ArrayData[i] = degrees_to_radians(i); // Treat it like a normal array
|
||||
}
|
||||
}
|
||||
// Simple function do display contents an integer array
|
||||
void DisplayTheArray ( int Size, float ArrayData[])
|
||||
{
|
||||
int i; // Variable to use in our loop
|
||||
|
||||
for ( i = 0 ; i < Size ; i++)
|
||||
{
|
||||
printf ("%d\t%0.3f\n", i, ArrayData[i]);
|
||||
}
|
||||
}
|
||||
|
||||
int SaveArray (char *filename, int Size, float ArrayData[])
|
||||
{
|
||||
FILE *fp; // File Pointer
|
||||
int i; // Variable to use in our loop
|
||||
|
||||
fp = fopen(filename, "w");
|
||||
// if file open failed, return error to caller
|
||||
if (fp == NULL) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
for ( i = 0 ; i < Size ; i++)
|
||||
{
|
||||
fprintf(fp, "%d\t%0.3f\n", i, ArrayData[i]);
|
||||
}
|
||||
|
||||
// close file, returns 0 on successful closing (therefore function has executed sucessfully)
|
||||
return fclose(fp);
|
||||
}
|
||||
// Main () - execution starts here
|
||||
int main (void)
|
||||
{
|
||||
char filename[2049];
|
||||
int rc, iSizeForArray;
|
||||
float *pData; // A pointer to hold the base address of out array
|
||||
|
||||
// Ask for the size of the array and store result
|
||||
|
||||
printf("Please enter the size of the array to dynamically allocate: ");
|
||||
scanf ("%d", &iSizeForArray);
|
||||
|
||||
// Use calloc with checking
|
||||
pData = calloc( iSizeForArray, sizeof (float));
|
||||
|
||||
// Check we got the memory
|
||||
if ( pData == NULL)
|
||||
{
|
||||
printf ("Sorry, I could not allocate the memory, bye!\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
// Pass the size, iSizeForArray) and the pointer created
|
||||
// which points to the start of the sucesfully allocated memory
|
||||
|
||||
PopulateTheArray(iSizeForArray, pData);
|
||||
DisplayTheArray(iSizeForArray, pData);
|
||||
|
||||
// Exercise doesn't ask to use function but kind of pointless without
|
||||
printf("Enter filename: ");
|
||||
scanf("%2048s", filename);
|
||||
rc = SaveArray(filename, iSizeForArray, pData);
|
||||
if (rc != 0) {
|
||||
printf("Error saving file\n");
|
||||
free(pData);
|
||||
return rc;
|
||||
}
|
||||
|
||||
free(pData); // Free up the memory before exiting
|
||||
return (0); // Exit indicating sucess
|
||||
}
|
||||
Reference in New Issue
Block a user