Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: Funkce - správné využití?

Aktivity
Avatar
goublin
Člen
Avatar
goublin:24.4.2014 11:41

Ahoj, učím se v c++ funkce a mám do školy jednoduchý úkol, který vypadá že jede tak jak by měl jít, ale chci se zeptat - jsou v pořádku proměnné? Nejsem si jistý jak je to s těma proměnnýma, které jsou ve funkci a v hlavním programu. Mám to správně?

#include <cstdlib>
#include <iostream>
#include <math.h>
using namespace std;

bool sude (int a)
{
     if (a%2==0)
     return true;
     else
     return false;
}

float odmocni (float c)
{
      float u;
      u=sqrt(c);
      return u;
      }

bool znamenko (int b)
{
    if (b>0)
    return true;
    else
    return false;
}

int main(int argc, char *argv[])
{
    int sw;
    cout << "1 - sude/liche cislo \n";
    cout << "2 - odmocnina \n";
    cout << "3 - znamenko \n";
    cin >>sw;

    switch(sw){
               case 1:
  int x;
  cout << "zadej x \n";
  cin >> x;
   if (sude(x))
   {
               cout <<"cislo "<<x<<" je sude \n";
               }
               else
               {
                   cout <<"Cislo " <<x<<" je liche \n";
               }
   break;
   case 2:
        float t,y;
        cout <<"odmocnina \n";
        cin >>t;
        y=odmocni(t);
        cout << "odmocnina je " << y <<"\n";
   break;
   case 3:
        int v;
        cout <<"zadej cislo, zjisti se znamenko\n";
        cin >> v;
        if(znamenko(v))
        {
                       cout << "+ \n";
                       }
                       else
                       {
                           cout <<"- \n";
                       }
   break;
}
    system("PAUSE");
    return EXIT_SUCCESS;
}
 
Odpovědět
24.4.2014 11:41
Avatar
MrPabloz
Člen
Avatar
Odpovídá na goublin
MrPabloz:24.4.2014 12:18

Jen bych tam dodal default ve switchi, jinak nevidím nikde problém :) dalo by se to i bez fci, ale když se je učíš tak to můžeš i tak.

Nahoru Odpovědět
24.4.2014 12:18
Harmonie těla a duše, to je to, oč se snažím! :)
Avatar
Odpovídá na goublin
Libor Šimo (libcosenior):24.4.2014 13:21

Je to OK, len tie funkcie sú zbytočne obšírne a premenné máš vlastne zadefinované funkciou.
Skús takto:

bool sude (int a)
{
     return a % 2 == 0 ? true : false;
}

float odmocni (float c)
{
      return sqrt(c);
}

bool znamenko (int b)
{
    return b > 0 ? true : false;
}
Editováno 24.4.2014 13:23
Nahoru Odpovědět
24.4.2014 13:21
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Libor Šimo (libcosenior):24.4.2014 13:25

Doplním ešte, že sa nič nestane, keď budú funkcie definované takto:

bool sude (int a)
{
     return a % 2 == 0 ? true : false;
}

float odmocni (float a)
{
      return sqrt(a);
}

bool znamenko (int a)
{
    return a > 0 ? true : false;
}

Premenná pracuje len vnútri funkcie.

Editováno 24.4.2014 13:27
Nahoru Odpovědět
24.4.2014 13:25
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Libor Šimo (libcosenior):24.4.2014 13:29

Ešte jedna vec, vo funkcii znamenko() nemáš ošetrenú nulu, ale to vieš opraviť.

Editováno 24.4.2014 13:29
Nahoru Odpovědět
24.4.2014 13:29
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
David Dostal
Tvůrce
Avatar
Odpovídá na Libor Šimo (libcosenior)
David Dostal:24.4.2014 13:30

Nestačí jen

bool sude (int a)
{
     return a % 2 == 0;
}

bool znamenko (int b)
{
    return b > 0;
}

?

 
Nahoru Odpovědět
24.4.2014 13:30
Avatar
Nahoru Odpovědět
24.4.2014 13:43
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
goublin
Člen
Avatar
goublin:24.4.2014 14:10

Fajn, děkuji moc oběma :)

 
Nahoru Odpovědět
24.4.2014 14:10
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 8 zpráv z 8.