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

C++ C a C++ Funkce - správné využití?

Avatar
goublin
Člen
Avatar
goublin:

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:

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):

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):

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):

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
Redaktor
Avatar
Odpovídá na Libor Šimo (libcosenior)
David Dostal:

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:

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.