Skip to content

Latest commit

 

History

History
86 lines (75 loc) · 2.65 KB

141124-U.md

File metadata and controls

86 lines (75 loc) · 2.65 KB

Übung 8

Aufgabe 23

Erweitern Sie Ihr Programm zu Aufgabe 13 um eine Funktion, die eine beste Bank ermittelt. Diese soll sowohl die Rendite als auch den Namen der Bank liefern. Verwenden Sie dazu Zeiger und Zeichenketten. Sie dürfen annehmen, dass alle Namen von Banken kürzer als 20 Zeichen sind. Fügen Sie an allen geeigneten Stellen assert-Anweisungen hinzu, um ungültige Eingaben abzufangen. Hinweis: NULL ist der Wert eines nicht initialisierten Zeigers.

Schreiben Sie mehrere Tests (Unit-Tests) für die Funktion, die die beste Bank ermittelt und für die Funktion, die die Rendite berechnet. Die Tests m üssen g ültige als auch ungültige Eingaben enthalten.

Hinweis: Nehmen Sie an, dass Zinssätze nicht kleiner als -1% und nicht größer als 100% sind.

s. Datei 23.c

Aufgabe 24

Schreiben Sie eine Funktion, die die Summe eines Arrays vom Typ double berechnet (wurde für int bereits in der Vorlesung behandelt). Verwenden Sie diese zusammen mit der map2-Funktion und einer geeigneten Hilfsfunktion, um den Wert eines Warenlagers zu berechnen. Das Warenlager besteht aus Artikeln, die eine Anzahl und einen Preis besitzen.

Sie müssen dazu in der map2-Funktion aus Aufgabe 22 Datentypen ändern.

#include<stdio.h>
#define N 5
double f_warenwert(double menge, double preis){
	return menge * preis;
}
double f_summe(double *a, int laenge){
	int i;
	double summe=0.0;
	for (i = 0; i < laenge; i++){
		summe += a[i];
	}
	return summe;
}
void map2(double* a1, double* a2, double* e, int laenge, double(*f)(double, double)){
	int i;
	for (i = 0; i<laenge; i++){
		e[i] = (*f)(a1[i], a2[i]);
	}
	//no return value as its void
}
int main(void){
	double a1[] = { 1.0, 42, 5, 12, 13 };//anzahl
	double a2[] = { 5.99, 69.99, 0.69, 14.99, 19.95 };//verkaufspreis
	double ergebnis[N];
	int i;
	for (i = 0; i < N; i++)
		printf("%2.2lf ", a1[i]);
	printf("\n");
	for (i = 0; i < N; i++)
		printf("%2.2lf ", a2[i]);
	printf("\n");
	map2(a1, a2, ergebnis, N, f_warenwert);
	for (i = 0; i < N; i++)
		printf("%2.2lf ", ergebnis[i]);
	printf("\nZusammen: %8.2f\n", f_summe(ergebnis, N));
	(void)getchar();
	return 0;
}

Freiwillige Zusatzaufgabe: Verwenden Sie map und sum, um die Anzahl nicht vorrätiger Artikel zu bestimmen.

double f_nichtda(double a, double b){
	if (a == 0.0){
		return 1;
	}
	else{
		return 0;
	}
}
int main(void){
	double a1[] = { 0, 42, 5, 0, 13 };//anzahl
	double a2[] = { 5.99, 69.99, 0.69, 14.99, 19.95 };//verkaufspreis
	double ergebnis[N];
	int i;
	for (i = 0; i < N; i++)
		printf("%2.2lf ", a1[i]);
	printf("\n");
	printf("\nNicht vorraetig: %8.0f\n", f_summe(ergebnis, N));
	//(void)getchar();
	return 0;
}