C - funkce s proměnlivým počtem parametrů – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

C - funkce s proměnlivým počtem parametrů – C / C++ – Fórum – Programujte.comC - funkce s proměnlivým počtem parametrů – C / C++ – Fórum – Programujte.com

 

Toto vlákno bylo označeno za vyřešené.
DeaconCZ0
Duch
9. 3. 2013   #1
-
0
-

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.

Nahlásit jako SPAM
IP: 176.102.128.–
vitamin+8
Grafoman
9. 3. 2013   #2
-
0
-

Co ti na tom nefunguje?

Nahlásit jako SPAM
IP: 95.105.157.–
obfuscate: "The cruel god Malloc will strike you down. "
ZMeson: "That's the C god. C++ has a new god. "
DeaconCZ0
Duch
9. 3. 2013   #3
-
0
-

#2 vitamin
vrací to výsledek -0.000000 ale měl by být 2.375

Nahlásit jako SPAM
IP: 176.102.128.–
vitamin+8
Grafoman
9. 3. 2013   #4
-
+1
-
Zajímavé

#3 DeaconCZ
Mne to funuje, na akom systeme to prekladas?

Nahlásit jako SPAM
IP: 95.105.157.–
obfuscate: "The cruel god Malloc will strike you down. "
ZMeson: "That's the C god. C++ has a new god. "
DeaconCZ0
Duch
9. 3. 2013   #5
-
0
-

Mám Windows 7 - 64 a používám teda CodeBlocks, ale tak jsem to teď hodil do VisualStudia 2012 a tam to jde - zvláštní:D

Nahlásit jako SPAM
IP: 176.102.128.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 70 hostů

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý