Zdravím potřeboval bych poradit, jak vyřešit tento úkol:
Napište v jazyku C funkci long double prumer(char* format, ...), která výpočítá aritmetický průměr ze zadaných hodnot různých datových typů. Typy předávaných hodnot jsou určeny pomocí parametru format, který může tvořit libovolná posloupnost znaků odpovídající typům následujících parametrů - znak "i" pro typ int, "d" pro typ double a "l" pro long double.
Zatím jsem napsal tohle, ale nefunguje to,myslím, že na to jdu špatně:
#include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>
#include <string.h>
long double prumer(const char *format, ...){
long double out = 0;
int pocet = strlen(format), i;
va_list param;
va_start(param, format);
for(i = 0; i < pocet; i++){
switch (format[i]){
case 'i': {
out += (long double) va_arg(param, int);
break;
}
case 'd': {
out += (long double) va_arg(param, double);
break;
}
case 'l': {
out += va_arg(param, long double);
break;
}
}
}
va_end(param);
return out/ pocet;
}
int main(){
long double pr = prumer("idld", 1, (double) 3, (long double) 2, 3.5);
printf("Prumer je %Lf. \n", pr);
}
Budu vděčný za každou radu, děkuji.