Informatika2-2013/Hazi03

A MathWikiből
(Változatok közti eltérés)
(4. feladat)
 
(egy szerkesztő egy közbeeső változata nincs mutatva)
46. sor: 46. sor:
 
=== 4. feladat ===
 
=== 4. feladat ===
  
Írjatok függvényt ''csokkentNovel'' névvel, ami két int pointer-t kap és ha az elsõ nagyobb mint nulla, akkor csökkenti az elsõt majd növeli a másodikat, különben nem csinál semmit.
+
Írjatok függvényt ''tombKezel'' névvel, ami egy mindenképpen 10 elemû double tömböt kap egyetlen paramétereként, beolvas a felhasználótól (scanf-el) 10 double-t, majd kiírja a beadott számok összegét, átlagát, minimumát és maximumát. A feladat különleges megkötése, hogy a tömbön való lépéseket mindenképpen pointerekkel oldjátok meg. [http://wiki.math.bme.hu/view/Informatika2-2013/Eloadas#T.C3.B6mb.C3.B6k Itt] van erre példa, és igazán csak azt kell megértenetek, hogy amikor azt írjuk, hogy t+4 és a t egy tömb, akkor ez a tömb 4. indexû elemének a pointere lesz, azaz ebbe lehet közvetlen scanf-el beolvastatni (scanf("%lf", t+4)).
  
Példa bemenetek és eredmények:
+
A következõ main függvényt használhatjátok:
  
 
<c>
 
<c>
// függvény hívás elõtt: x = 5, y = 8
+
int main(void){
csokkentNovel(&x, &y);
+
    double t[10];
// függvény hívás után:  x = 4, y = 9
+
   
 
+
    tombKezel(t);
// függvény hívás elõtt: x = 65, y = 34
+
    return 0;
csokkentNovel(&x, &y);  
+
}
csokkentNovel(&x, &y);
+
</c>
csokkentNovel(&x, &y);  
+
Példa bemenet:
csokkentNovel(&x, &y);  
+
<c>
csokkentNovel(&x, &y);
+
2.5
// függvény hívás után: x = 60, y = 39
+
3.6
 
+
4.7
// függvény hívás elõtt: x = 0, y = 8
+
5.8
csokkentNovel(&x, &y);
+
6.9
// függvény hívás után:  x = 0, y = 8
+
8.8
 
+
4.2
// függvény hívás elõtt: x = 2, y = 8
+
1.6
csokkentNovel(&x, &y);
+
8.4
csokkentNovel(&x, &y);
+
6.3
csokkentNovel(&x, &y);
+
</c>
// függvény hívás után: x = 0, y = 6
+
Erre a kimenet:
 +
<c>
 +
Osszeg: 52.8
 +
Atlag: 5.28
 +
Minimum: 1.6
 +
Maximum: 8.8
 
</c>
 
</c>

A lap jelenlegi, 2013. március 7., 23:06-kori változata


Ismét 4 feladat lesz:

1. feladat

Írj hatványozás függvényt, hasonló szerepelt már a 4. gyakorlaton. Most írj hatvDouble névvel függvényt amely egy double-t (alap) és egy int-et (kitevõ) kap, eredményül pedig az alapot a kitevõre emelve adja. Figyeljünk most oda a negatív kitevõkre is. Értelemszerûen a függvény visszatérési értéke double legyen.

Példa bemenetek és kimenetek:

hatvDouble(3.5, 4) // 150.0625
hatvDouble(6.32, 0) // 1
hatvDouble(2.0, -2) // 0.25

2. feladat

Írj függvényt charSzamol névvel, ami az elsõ argumentumként adott tömbben megszámolja hányszor szerepel a második argumentumként adott karakter és ezt visszaadja, harmadik paramétere legyen a tömb hossza.

Például a következõ main függvényre

int main(void){
    char ch[12] = { 'a', 'c', 'd', 'b', 'b', 'p', 'o', 'a', 'a', 'b', 'c', 'p'};
 
    printf("%d\n", charSzamol(ch, 'b', 12));
    return 0;
}

a 3 eredményt adja.

3. feladat

Írjatok függvényt rendez névvel, ami 2 int pointert kap bemenetként (2 paramétere van), és rendezi õket nagyság szerint növekvõ sorrendbe, azaz az elsõbe kerüljön a kisebb, a másodikba a nagyobb.

Példa bemenetek és eredmények:

// függvény hívás elõtt: x = 5, y = 8
rendez(&x, &y); 
// függvény hívás után:  x = 5, y = 8
 
// függvény hívás elõtt: x = 65, y = 34
rendez(&x, &y); 
// függvény hívás után:  x = 34, y = 65

4. feladat

Írjatok függvényt tombKezel névvel, ami egy mindenképpen 10 elemû double tömböt kap egyetlen paramétereként, beolvas a felhasználótól (scanf-el) 10 double-t, majd kiírja a beadott számok összegét, átlagát, minimumát és maximumát. A feladat különleges megkötése, hogy a tömbön való lépéseket mindenképpen pointerekkel oldjátok meg. Itt van erre példa, és igazán csak azt kell megértenetek, hogy amikor azt írjuk, hogy t+4 és a t egy tömb, akkor ez a tömb 4. indexû elemének a pointere lesz, azaz ebbe lehet közvetlen scanf-el beolvastatni (scanf("%lf", t+4)).

A következõ main függvényt használhatjátok:

int main(void){
    double t[10];
 
    tombKezel(t);
    return 0;
}

Példa bemenet:

2.5
3.6
4.7
5.8
6.9
8.8
4.2
1.6
8.4
6.3

Erre a kimenet:

Osszeg: 52.8
Atlag: 5.28
Minimum: 1.6
Maximum: 8.8
Személyes eszközök