fix: Make already existent functions compliant with the task.
This commit is contained in:
parent
0248ccf6cb
commit
1b9f5bbaf8
92
MMS24_25.c
92
MMS24_25.c
@ -1,34 +1,104 @@
|
||||
//
|
||||
// Created by minhd on 03.12.2024.
|
||||
//
|
||||
/* =========================STYLE-GUIDELINES===========================
|
||||
* All comments use MD-Syntax;
|
||||
* Formulas are written in KaTeX/TeX Syntax.
|
||||
* We adhere by the `kernel.org` style-guidelines.
|
||||
* See: https://www.kernel.org/doc/html/v4.10/process/coding-style.html
|
||||
* =============================AUTHORS================================
|
||||
* Created by Frederik Beimgraben, Minh Dan Cam and Lea Hornberger in
|
||||
* the winter term of 2024/25 at the faculty of computer science at
|
||||
* Reutlingen University.
|
||||
* After grading the full source code will be available at:
|
||||
* https://git.beimgraben.net/MMS-2024-25/MMS-Loesung-2024-25.git
|
||||
*/
|
||||
|
||||
#include "MMS24_25.h"
|
||||
#include "math.h"
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include "MMS24-25.h"
|
||||
#include <stdio.h>
|
||||
|
||||
// NULL Pointer
|
||||
#ifndef NULL
|
||||
#define NULL 0
|
||||
#endif
|
||||
|
||||
double interpolateLine(
|
||||
double dX1,
|
||||
double dY1,
|
||||
double dX2,
|
||||
double dY2,
|
||||
double dXq
|
||||
) {
|
||||
double y = (
|
||||
(dY2 - dY1) / (dY2 - dX1)
|
||||
) * dXq - (
|
||||
(dY2 - dY1) / (dX2 - dX1)
|
||||
) * dX1 + dY1;
|
||||
|
||||
#ifdef _DEBUG_
|
||||
// DEBUG: print the parameters and result
|
||||
printf("interpolateLine(%lf, %lf, %lf, %lf, %lf) -> %lf\n",
|
||||
dX1,dY1,dX2,dY2,dXq,y);
|
||||
#endif
|
||||
|
||||
double interpolateLine(double dX1, double dY1,double dX2, double dY2, double dXq) {
|
||||
double y = ((dY2 - dY1) / (dY2 - dX1)) * dXq + dY1 - ((dY2 - dY1) / (dX2 - dX1)) * dX1;
|
||||
return y;
|
||||
}
|
||||
|
||||
void rescaleDoubleArray(double *pdIn, int iLen, double dMin, double dFactor, double *pdOut) {
|
||||
|
||||
void rescaleDoubleArray(
|
||||
double *pdIn,
|
||||
int iLen,
|
||||
double dMin,
|
||||
double dFactor,
|
||||
double *pdOut
|
||||
) {
|
||||
/* Rescale an array of double values, so that the following rules apply:
|
||||
* Given $ |pdIn| = |pdOut| = iLen $ it should be, that:
|
||||
* $ min(pdIn) > dMin $, as well as
|
||||
* \[ \forall i, j \in (0,\dots,iLen-1):
|
||||
* (pdOut_i - pdOut_j) = (pdIn_i - pdIn_j) * dFactor \],
|
||||
* which naturally results from:
|
||||
* $ pdOut_i = pdIn_i * dFactor + dMin $
|
||||
*/
|
||||
for (int i = 0; i < iLen; i++) {
|
||||
pdOut[i] = pdIn[i] * dFactor + dMin;
|
||||
}
|
||||
}
|
||||
|
||||
double *generateSineValues(
|
||||
int iNumValues,
|
||||
int iNumSamplesPerPeriod,
|
||||
double dAmp
|
||||
) {
|
||||
/* Generate an array of `iNumValues` double value, so that the values
|
||||
* represent the Y-coordinates of a sine curve of which one full period
|
||||
* occupies `iNumSamplesPerPeriod` values
|
||||
*/
|
||||
|
||||
// Initialize the output array
|
||||
double* sineArray = NULL;
|
||||
sineArray = (double*) malloc(sizeof(double) * iNumValues);
|
||||
|
||||
if (sineArray == NULL) {
|
||||
printf("Failed to allocate memory for SineArray\n");
|
||||
exit(-1);
|
||||
}
|
||||
|
||||
double *generateSineValues(int iNumValues, int iNumSamplesPerPeriod, double dAmp) {
|
||||
double* sineArray = (double*)malloc(iNumValues * sizeof(double));
|
||||
for (int i=0; i<iNumValues;i++){
|
||||
sineArray[i] = dAmp*sin(((2*M_PI)/iNumSamplesPerPeriod) * i);
|
||||
}
|
||||
|
||||
return sineArray;
|
||||
}
|
||||
|
||||
void writeDoubleArray(double *pdOut, int iLen, char *pcOutName) {
|
||||
/* Write a list of double values to a file
|
||||
*/
|
||||
|
||||
FILE* datei = fopen(pcOutName, "w");
|
||||
if (datei == NULL) {
|
||||
printf("Fehler beim Öffnen der Datei.\n");
|
||||
return;
|
||||
printf("Error while opening file '%s'.\n", pcOutName);
|
||||
exit(-1);
|
||||
}
|
||||
|
||||
for (int i = 0; i < iLen; i++) {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user