Vissza

Függvények

Házi feladatok:
I. Írjunk programot, amely függvényt alkalmazva a részfeladatok megoldására, meghatározza két szám összegét, különbségét, szorzatát, osztási maradékát, osztási hányadosát, otszási eredményét.
II. A részfeladatok megoldására függvényt írva, írjunk programot, amely
egy szövegállományban levő
  1. számok mindegyikére meghatározza a számok abszolút értékét,
  2. számok mindegyikére meghatározza a számok négyzetgyökét, alkalmazva a következő iterációs képletet(az iterálást addig kell végezni míg két egymásutáni érték egyforma nem lesz):
    y0 = 1
    yn = 1/2·(yn-1 + x/yn-1)
  3. számpárok mindegyikére, ahol a számpárok egy adott terület szélességét és hosszát jelentik, meghatározza a terület és kerületértékeket. Határozzuk meg, továbbá a legnagyobb területű, és a legkisebb kerületű területeket,
  4. számhármasok mindegyikére, ahol a számhármasok egy adott téglatest szélességét, hosszúságát és magasságát jelentik, meghatározza a térfogat és az oldalhosszak összegének értéket,
  5. számnégyesek mindegyikére, ahol a számnégyesek egy diák négy jegyét jelentik, meghatározza diákonként az átlagjegyet és a legnagyobb jegyét minden diáknak,
  6. számok mindegyikére meghatározza a szám
    1. utolsó számjegyét,
    2. első számjegyét,
    3. a számjegyek számát,
    4. a számjegyek összegét,
    5. a számjegyek szorzatát,
  7. számok mindegyikére meghatározza
    1. a kettes számrendszerbeli alak utolsó számjegyét,
    2. a kettes számrendszerbeli alakban a számjegyek számát,
    3. a kettes számrendszerbeli alakban az egyesek számát,
  8. számok mindegyikére megvizsgálja, hogy prímszám-e vagy sem,
  9. az a, x számpárok mindegyikére meghatározza ax értékét.
  10. számpárok mindegyikére megvizsgálja, hogy relatív prímek-e.

Megoldott feladatok:

1. Írjunk programot, amely függvényt alkalmazva a részfeladatok megoldására, meghatározza két szám osztási hányadosát, otszási eredményét.
#include <iostream>
using namespace std;
int osztI(int, int);
float osztF(int, int);

int main()
{
   
int res1, a, b;
    float res2;
    cout << "a = "; cin >> a;
    cout << "b = "; cin >> b;

    res1 = osztI(a, b);
    cout << "az osztasi hanyados: " << res1 << endl;

    res2 = osztF(a, b);
    cout << "az osztas eredmenye: " << res2 << endl;
    return 0;
}

int osztI(int a, int b)
{
    return a/b;
}

float osztF(int a, int b)
{
    return (float) a/b;
}


2. Írjunk függvényt, mely meghatározza egy szám abszolút értékét.
#include <iostream>
using namespace std;
int absz(int);

int main()
{
    int a, sz;
    cout << "sz = ";
    cin >> sz;
    a = absz(sz);
    cout << "az abszolut ertek: " << a << endl;
    return 0;
}

int absz(int szam)
{
    if (szam < 0) return -szam;
    else return szam;
}


3. Írjunk függvényt, mely meghatározza egy szám számjegyeinek összegét.
#include <iostream>
using namespace std;
int szjOsszeg(int);

int main()
{
    int
eredmeny, sz;
    cout << "sz = ";
    cin >> sz;
   
eredmeny = szjOsszeg(sz);
    cout << "a szamjegyek osszege: " << eredmeny << endl;
    return 0;
}

int szjOsszeg(int szam)
{
   
int sum = 0; //lokalis valtozo deklaralas
    while (szam > 0){
         sum = sum + (szam % 10);
         szam = szam / 10;
    }
   
return sum;
}

4. Írjunk függvényt, mely megvizsgálja hogy egy szám prímszám-e vagy sem.
#include <iostream>
using namespace std;
int prim(int);

int main()
{
    int p, sz;
    cout << "sz = ";
    cin >> sz;
    p = prim(sz);
    if (p == 1) cout << "prim szam"<< endl;
    else cout << "nem prim szam" << endl;
    return 0;
}

int prim(int szam)
{
    int i;
    if (szam == 2) return 1;
    if (szam%2 == 0) return 0;
    for (i = 3; i*i <= szam; i += 2)
        if(szam%i == 0) return 0;
    return 1;
}

5. Írjunk függvényt, amely az a, x számpárok esetében  meghatározza ax értékét.
#include <iostream>
using namespace std;
int my_pow(int, int);

int main()
{
    int a, x, res;
    cout << "alap = ";
    cin >> a;
    cout << "kitevo = ";
    cin >> x;

    res = my_pow(a, x);
    cout << "az eredmeny: " << res << endl;
    return 0;
}

int my_pow(int pa, int px)
{
    int r = 1;
    while (px != 0) {
        if (px % 2 == 1) r = r * pa;
        pa = pa * pa;
        px = px / 2;
    }
    return r;
}

A fenti feladatok standard C író/olvasó függvényekkel

1. Írjunk programot, amely függvényt alkalmazva a részfeladatok megoldására, meghatározza két szám osztási hányadosát, otszási eredményét.
#include <stdio.h>
#include <stdlib.h>

int osztI(int, int);
float osztF(int, int);

int main()
{
    int res1, a, b;
    float res2;

    printf("a = "); scanf("%i", &a);
    printf("b = "); scanf("%i", &b);

    res1 = osztI(a, b);
    printf("az osztasi hanyados: %i\n",res1);

    res2 = osztF(a, b);

    printf("az osztas eredmenye: %.3f\n",res2);
    system("pause");
    return 0;
}

int osztI(int a, int b)
{
    return a/b;
}

float osztF(int a, int b)
{
    return (float) a/b;
}

2. Írjunk függvényt, mely meghatározza egy szám abszolút értékét.
#include <stdio.h>
#include <stdlib.h>
int absz(int);

int main()
{
    int a, sz;
    printf("sz = ");
    scanf("%i", &sz);
    a = absz(sz);
    printf("az abszolut ertek: %i\n",a);
    system("pause");
    return 0;
}

int absz(int szam)
{
    if (szam < 0) return -szam;
    else return szam;
}

3. Írjunk függvényt, mely meghatározza egy szám számjegyeinek összegét.
#include <stdio.h>
#include <stdlib.h>
int szjOsszeg(int);

int main()
{
    int eredmeny, sz;
    printf("sz = ");
    scanf("%i", &sz);
    eredmeny = szjOsszeg(sz);
    printf("a szamjegyek osszege: %i\n", eredmeny);
    system("pause");
    return 0;
}

int szjOsszeg(int szam)
{
    int sum = 0; //lokalis valtozo deklaralas
    while (szam > 0){
         sum = sum + (szam % 10);
         szam = szam / 10;
    }
    return sum;
}

4. Írjunk függvényt, mely megvizsgálja hogy egy szám prímszám-e vagy sem.
#include <stdio.h>
#include <stdlib.h>
int prim(int);

int main()
{
    int p, sz;
    printf("sz = ");
    scanf("%i", &sz);
    p = prim(sz);
    if (p == 1) printf("prim szam\n");
    else printf("nem prim szam\n");
    system("pause");
    return 0;
}

int prim(int szam)
{
    int i;
    if (szam == 2) return 1;
    if (szam%2 == 0) return 0;
    for (i = 3; i*i <= szam; i += 2)
        if(szam%i == 0) return 0;
    return 1;
}

5. Írjunk függvényt, amely az a, x számpárok esetében  meghatározza ax értékét. #include <stdio.h>
#include <stdlib.h>
int my_pow(int, int);

int main()
{
    int a, x, res;
    printf ("alap = ");
    scanf("%i", &a);
    printf("kitevo = ");
    scanf("%i", &x);

    res = my_pow(a, x);
    printf("az eredmeny: %i\n", res);
    return 0;
}

int my_pow(int pa, int px)
{
    int r = 1;
    while (px != 0) {
        if (px % 2 == 1) r = r * pa;
        pa = pa * pa;
        px = px / 2;
    }
    return r;
}