I have the following code which can compile, build and run, however, stack around the variable 'Output' was corrupted and the PrintTable function is unable to produce the output I want.Please refer to the output.gif where the last Input Signals are different from the 1st and 2nd set of Input Signals ??
Thank you.
insert
Code:
#include <stdio.h>
void InputSignal(int size, float *pInput);
void FilterProcess (int size, float *pInput, float *pOutput);
void PrintTable(int size, float *pInput, float *pOutput);
void main(void)
{
int size;
float Input[20], Output[20], *pInput, *pOutput;
printf("Enter the total number of digital signals to be processed :");
scanf("%d", &size);
pInput=Input;
pOutput=Output;
InputSignal(size, &pInput);
FilterProcess(size, &pInput, &pOutput);
PrintTable(size, &pInput, &pOutput);
}
void InputSignal(int size, float *pInput)
{
int i;
printf("Enter the %d digital signals :", size);
for (i=0;i<size; i++)
{
scanf("%f", (pInput+i));
}
printf("Signal No Input Signals\n");
printf("--------- -------------\n");
for (i=0; i<size; i++)
printf("%d%20.2f\n", i+1, pInput[i]);
}
void FilterProcess (int size, float *pInput, float *pOutput)
{
int i;
printf("Signal No Input Signals Output Signals\n");
printf("--------- ------------- --------------\n");
for (i=0; i<size; i++)
{
if (i==0)
pOutput[i]=pInput[i];
else {
if (i==size-1)
{
pOutput[i]=pInput[i];
}
else pOutput[i]=(pInput[i-1] + pInput[i] + pInput[i+1])/3.0;
}
printf("%5d%18.2f%18.2f\n", i+1, *(pInput+i), *(pOutput+i));
}
}
void PrintTable(int size, float *pInput, float *pOutput)
{
int i;
printf("Signal No Input Signals Output Signals\n");
printf("--------- ------------- --------------\n");
for (i=0; i<size; i++){
printf("%5d%18.2f%18.2f\n", i+1, pInput[i], pOutput[i]);
}
}