#include <stdio.h>

//Menüauswahl
int menueAuswahl(){
	int a, check;

	Start:
	printf("1. Testdurchlauf\n2. Simulierte Messwerte\n3. Exit\nWas wollen Sie tun? ");
	check = scanf("%d", &a);
	fflush(stdin);
	if (check == 1){
		return a;
	}
	else{
		printf("\nKeine gueltige Eingabe!\n\n");
		goto Start;
	}
}

//Eingabe Aderzahl
int eingabeAder(){
	int aderZahl, check;
	char c;

	printf("Eingabe Aderzahl: ");
Start:
	check = scanf_s("%d", &aderZahl);
	fflush(stdin);
	if (check == 1 && aderZahl > 0){
		printf("");
	}
	else{
		printf("Eingabe Ungueltig!\nBitte Eingabe wiederholen: ");
		goto Start;
	}

	fflush(stdin);
	printf("Sind Ue-Adern vorhanden (j/n)? ");
Start2:
	fflush(stdin);
	c = getchar();
	if (c != 'j' && c != 'n'){
		printf("Eingabe Ungueltig!\nBitte Eingabe wiederholen: ");
		goto Start2;
	}
	else{
		if (c == 'j'){
			aderZahl += 2;
		}
	}

	return aderZahl;
}

//Eingabe Kabellänge
int eingabeLaenge(){
	int kabelLaenge, check;

	printf("Eingabe Kabellaenge (in km): ");
Start:
	check = scanf_s("%d", &kabelLaenge);
	fflush(stdin);
	if (check == 1 && kabelLaenge > 0){
		return kabelLaenge;
	}
	else{
		printf("Eingabe Ungueltig!\nBitte Eingabe wiederholen(in km): ");
		goto Start;
	}
}

//Array erstellen
int arrayErstellen(int aderZahl, int array){
	int i, size = 0;

	for (i = 1; i <= aderZahl - 1; i++){
		size += aderZahl - i;
	}
	size += 2 * aderZahl;

	array = (int *)malloc(size * sizeof(int));
	if (array != NULL){
		printf("");
	}
	else{
		printf("Der Speicher ist belegt!\n");
	}

	return array;
}

//Messung Ader gegen Erde
int messungAgE(int aderZahl, int array[], int index){
	int i, check;

	for (i = 0; i < aderZahl; i++){
	Start:
		printf("Messung Ader %d gegen Erde: ", i + 1);
		check = scanf_s("%d", &array[index]);
		fflush(stdin);
		if (check == 1 && array[index] > 0){
			index++;
		}
		else{
			printf("Eingabe Ungueltig!\n");
			goto Start;
		}
	}

	return index;
}

//Messung Ohm pro Km
int messungOhmKm(int aderZahl, int array[], int index, int km){
	int i, check;

	for (i = 0; i < aderZahl; i++){
		array[index] = array[i] / km;
		index++;
	}

	return index;
}

//Messung Ader gegen Ader
int messungAgA(int aderZahl, int array[], int index){
	int i, j, check;

	for (i = 0; i < aderZahl; i++){
		for (j = i + 1; j < aderZahl; j++){
			printf("Messung Ader %d gegen Ader %d: ", i + 1, j + 1);
			scanf_s("%d", &array[index]);
			index++;
		}
	}

	return index;
}








//Main
int main(){

	int ader, laenge;
	int *messwerte=0;
	int n = 0;

Start:

	switch (menueAuswahl()){

	case 1: printf("\n");

		ader = eingabeAder();
		laenge = eingabeLaenge();
		messwerte = arrayErstellen(ader, messwerte);
		printf("\nAlle Messungen sind in Kiloohm einzutragen!\n\n");
		n = messungAgE(ader, messwerte, n);
		n = messungOhmKm(ader, messwerte, n, laenge);
		n = messungAgA(ader, messwerte, n);


		printf("%d", n);
		printf("case 1\n");

		break;


	case 2: printf("\n");

		printf("case 2\n");

		break;


	case 3: printf("\n");

		printf("case 3\n");

		break;


	default: printf("\n");

		printf("Keine gueltige Eingabe!\n\n");

		goto Start;

		break;
	}

	return 0;
}