Keresés

Új hozzászólás Aktív témák

  • Pala

    veterán

    Hali! Újra a segítségeteket szeretném kérni!
    Az a feladat, hogy írjak egy programot C-ben, amelynek megadhatunk 3 számot (a, b, c) és utána ezeket kiírja növekvő sorrendben, méghozzá úgy, hogy a számhoz hozzáírja azt is, hogy melyik volt az ''a'', melyik a ''b'' és melyik a ''c''.
    Tehát pl:
    a=7
    b=4
    c=5
    és akkor ezt adná ki, hogy: b=4, c=5, a=7.

    Abban kéne egy kis help, hogy milyen gondolatmenet alapján készítsem el a progit. Létezik valami olyasmi művelet, amellyel az (a,b,c) halmaz legkisebb v. legnagyobb elemét ki lehet választani?
    Nem kell megírni helyettem :), csak szeretném, ha valaki tudna segíteni, hogy milyen algoritmussal kell ezt megcsinálni...
    úgy meg tudom írni, hogy szépen végig beprogramozom egyesével az összes esetet, ahogy a számok lehetnek egymás után, de ez elég macerás, és szinte biztos, hogy van ennél optimálisabb megoldás.

  • Pala

    veterán

    Egy kis help kellene!

    #include <stdio.h>
    void osszeadas ();
    void szorzas ();
    int main ()
    {
    int c;
    c=0;
    printf (''Udvozlom a szamologepben! Kerem valasszon muveletet!\n\n'');
    while (c!=3)
    {
    printf (''1 - Osszeadas\n'');
    printf (''2 - Szorzas\n'');
    printf (''-------------\n'');
    printf (''3 - Kilepes\n\n'');
    printf (''Valasztott muvelet szama: '');
    fflush (stdin);
    if (scanf (''%d'',&c)!=1) c=0;
    switch (c)
    {
    case 1: osszeadas (); break;
    case 2: szorzas (); break;
    case 3: break;
    default: printf (''Nem megfelelo muveletszam [%d]. Adjon meg egy masikat!\n\n'',c);
    }
    }
    printf (''\n\nTovabbi jo munkat!\n'');
    return 0;
    }
    void osszeadas ()
    {
    double a,b;
    printf (''\nOsszeadas\n'');
    printf (''---------\n'');
    printf (''Kerem az elso szamot:\t '');
    fflush (stdin);
    scanf (''%lg'',&a);
    printf (''Kerem a masodik szamot:\t '');
    fflush (stdin);
    scanf (''%lg'',&b);
    printf (''EREDMENY: %g\n\n'',a+b);
    }
    void szorzas ()
    {
    double a,b;
    printf (''\nSzorzas\n'');
    printf (''-------\n'');
    printf (''Kerem az elso szamot:\t '');
    fflush (stdin);
    scanf (''%lg'',&a);
    printf (''Kerem a masodik szamot:\t '');
    fflush (stdin);
    scanf (''%lg'',&b);
    printf (''EREDMENY: %g\n\n'',a*b);
    }

    ez egy kis progi, amit én írtam (most kezdtem c nyelven tanulni). azt tudja, hogy két tetszőleges számot összead vagy összeszoroz a ''felhasználó'' igényeinek megfelelően:)
    na most.... az ''osszeadas'' és ''szorzas'' programrészekben a scanf-eknél ott van a ''%lg'', illetve az eredmény kiíratásánál a ''%g'' ezek pontosan mit jelentenek, konkrétan a ''lg'' és ''g'' érdekel, és hogy ebben a progiban a megfelelő helyeken miért az(oka)t kell használni...a progit példaprogramokból kiemelt részek alapján írtam, ezért nem tudom, hogy mit jelentenek pontosan; maga a program működik. milyen esetekben használjuk továbbá a ''%d'', ''%u'', ''%lg'' és ''%g''-ket???...annyit tudok, hogy ezek mind adatbevitelkor a változó értékének megadására vonatkoznak.

Új hozzászólás Aktív témák