Informatika2-2014/Gyakorlat10

A MathWikiből
(Változatok közti eltérés)
121. sor: 121. sor:
 
* A függvény paraméterként kapja meg a tömböt és annak méretét
 
* A függvény paraméterként kapja meg a tömböt és annak méretét
 
* Próbáld ki a függvényt úgy, hogy egy main függvényen belül hozol létre egy példa tömböt.
 
* Próbáld ki a függvényt úgy, hogy egy main függvényen belül hozol létre egy példa tömböt.
 +
=== Összeg ===
 +
* Írj függvényt, mely összeadja egy tömb elemeit.
 +
=== Rebdezés ===
 +
* Írj függvényt, mely nagyság szerint rendezi egy tömb elemeit.
 
=== Sakktábla ===
 
=== Sakktábla ===
 
* Rajzolj ki egy ''NxN''-es sakktábla mintát, ahol X-szel jelöljük a fekete mezőket, és üresen hagyjuk (egy szóköz) a fehéreket. Nem kell keretet adni a táblának.
 
* Rajzolj ki egy ''NxN''-es sakktábla mintát, ahol X-szel jelöljük a fekete mezőket, és üresen hagyjuk (egy szóköz) a fehéreket. Nem kell keretet adni a táblának.
 
* A sakktábla méretét (''N'') a felhasználótól kérd be.
 
* A sakktábla méretét (''N'') a felhasználótól kérd be.
 +
=== Mátrixok, 2 dimenziós tömbök ===
 
* Írd ki egy 2 dimenziós tömb elemeit a képernyőre. Próbáld ki a függvényt úgy, hogy egy main függvényen belül hozol létre egy példa tömböt.
 
* Írd ki egy 2 dimenziós tömb elemeit a képernyőre. Próbáld ki a függvényt úgy, hogy egy main függvényen belül hozol létre egy példa tömböt.
 +
* Hasonlóan számold ki és jelenítsd meg a mátrix transzponáltját és négyzetét is.
 +
* Írj függvényt, mely összead / kivon egymásból / összeszoroz 2 mátrixot és a megoldást megjeleníti a képernyőn.
 
=== Prímtényezõ keresés ===
 
=== Prímtényezõ keresés ===
 
* Írj programot, ami megkeresi egy a felhasználó által adott szám prímtényezõit és sorban kiírja azokat.
 
* Írj programot, ami megkeresi egy a felhasználó által adott szám prímtényezõit és sorban kiírja azokat.
 
* Meg lehet oldani úgy is, hogy egyesével megpróbáljuk elosztani az adott számunkat 2-tõl kezdve egyesével haladva egész számokkal, amíg 1-hez nem jutunk.
 
* Meg lehet oldani úgy is, hogy egyesével megpróbáljuk elosztani az adott számunkat 2-tõl kezdve egyesével haladva egész számokkal, amíg 1-hez nem jutunk.
 
* A maradék képzés (modulo) jele C-ben is a %
 
* A maradék képzés (modulo) jele C-ben is a %

A lap 2014. április 15., 09:47-kori változata

Tartalomjegyzék

Elmélet

2013 előadás

Függvények

Tömbök

  • Tömbök esetén "tömbösítve" foglaljuk le a változók helyét a memóriában.
  • Példa deklarációra:
int a[10];
  • Példa inicializálásra:
int t[10]={6,8,-2,6,123,-8,3,4,2,1};
  • A tömb elemei 0-tól indexelődnek.
  • Deklaráláskor tehát le kell rögzítenünk egy konstanssal a tömb méretét
  • Fontos, hogy a méretet csak konstanssal adhatjuk meg. Néhány fordító támogatja a tömb méretének változóval való megadását, de ezt általánosan nem alkalmazhatjuk.
  • Ha fordítási időben nem ismert, mekkora tömbre lesz szükség, használjuk dinamikus tömböt. (lsd. később)
  • Mindig kötelező a tömbnek méretet adni.
  • A tömb nem másolható az = operátorral, végig kell iterálnunk elemenként a két tömbön másoláskor:
  • Lehetőségünk van többdimenziós tömbök deklarálására.
  • Többdimenziós tömbök sorfolytonosan tárolódnak a memóriában, tehát a következő két inicializálás (mely egyben példa is) ekvivalens:
int t[3][4][2]={34,-5,3,20,12,5,-1,0,4,77,12,-3,-14,3,1,23,75,2,10,24,78,1,2,7};
int t[3][4][2]={{{34,-5},{3,20},{12,5},{-1,0}},{{4,77},{12,-3},{-14,3},{1,23}},{{75,2},{10,24},{78,1},{2,7}}};

Függvények

  • Programozásban a függvény egy nagyobb program forráskódjának része, mely adott feladatot hajt végre, és többször felhasználható anélkül, hogy a program kódjának több példányban is tartalmaznia kellene.
  • Egy függvény mindig bemenő paraméterek egy értékhalmazát kapja meg és futása után valamilyen visszatérési értéket ad vissza. Itt most a hangsúly az értéken van mindkét esetben.
  • C nyelvben egy függvénynek mindig tetszőleges számú és típusú argumentuma, és egyetlen visszatérési értéke van.
  • Az általános felépítés mindig a következő:
visszatérési-típus függvénynév (argumentumdeklarációk){
   deklarációk és utasítások
}
  • A függvény függvényfejből és függvénytörzsből épül fel.
  • A függvényfej megadja a függvény típusát (milyen típusú adatot ad vissza), a függvény nevét, valamint paramétereinek típusát és nevét.
int hatvanyozo(int alap, int kitevo)
  • A függvénytörzs tartalmazza a függvényt felépítő utasítássorozatot.
{
  int i;
  for( ... )
  ...
  return ... ; 
}
  • A függvénydefiníció maga a függvény, azaz a függvényfej és a függvénytörzs együtt.
int hatvanyozo(int alap, int kitevo){
  int i;
  for( ... )
  ...
  return ... ; 
}
  • A függvény prototípusa a függvényfej pontosvesszővel lezárva, paraméternevek nélkül.
int hatvanyozo(int,int);
  • A függvénydeklaráció a függvény prototípusa paraméterek nélkül. Csak a függvény típusát és nevét tartalmazza.
int hatvanyozo();
  • A prototípus és deklaráció jelentősége, hogy egy C program csak olyan függvényt tud meghívni, amelynek deklarációja megelőzi a kódban a függvényhívást.


Egy példa

Tömböket és függvényeket tartalmazó példa.

#include<stdio.h>
 
void f(int a[], int N){
  int i = 0;
  for( i =0; i<N; i++){
    printf("%d ",a[i]);
  } 
  printf("\n");
}
 
int main(void) {
  int a[2] = {1,2};
  f(a,2);
  return 0;
}

Feladatok

Üzemanyag

  • A program bemenetként kapja meg, hogy a felhasználó hány gallon üzemanyagot használna fel.
  • A program írja ki az alábbi információkat:
    • A felhasznált üzemanyag mennyisége literben
      • 1 gallon = 3.7854 l
    • Az üzemanyag gyártásához szükséges olaj mennyisége hordóban mérve.
      • Mindenképpen egész hordók vásárlására van szükség.
      • 1 hordó olajból 19.5 gallon üzemanyag készíthető.
    • A megfelelő CO2 terhelés kg-ban
      • 1 gallon üzemanyag esetén ez ~ 9 kg CO2
    • A hordókban vásárolt alapanyag olaj ára az aktuális árfolyamon 3 különböző pénznemben: EUR, USD, HUF.

Fizika

  • A program bemenetként kapja meg, hogy az űrutazáshoz használt űrhajó sebessége hány %-a a fény sebességének (300 000 000 m/s).

Maximum keresés (már megint)

  • írj függvényt, mely visszaadja egy tömb maximális elemét
  • A függvény paraméterként kapja meg a tömböt és annak méretét
  • Próbáld ki a függvényt úgy, hogy egy main függvényen belül hozol létre egy példa tömböt.

Összeg

  • Írj függvényt, mely összeadja egy tömb elemeit.

Rebdezés

  • Írj függvényt, mely nagyság szerint rendezi egy tömb elemeit.

Sakktábla

  • Rajzolj ki egy NxN-es sakktábla mintát, ahol X-szel jelöljük a fekete mezőket, és üresen hagyjuk (egy szóköz) a fehéreket. Nem kell keretet adni a táblának.
  • A sakktábla méretét (N) a felhasználótól kérd be.

Mátrixok, 2 dimenziós tömbök

  • Írd ki egy 2 dimenziós tömb elemeit a képernyőre. Próbáld ki a függvényt úgy, hogy egy main függvényen belül hozol létre egy példa tömböt.
  • Hasonlóan számold ki és jelenítsd meg a mátrix transzponáltját és négyzetét is.
  • Írj függvényt, mely összead / kivon egymásból / összeszoroz 2 mátrixot és a megoldást megjeleníti a képernyőn.

Prímtényezõ keresés

  • Írj programot, ami megkeresi egy a felhasználó által adott szám prímtényezõit és sorban kiírja azokat.
  • Meg lehet oldani úgy is, hogy egyesével megpróbáljuk elosztani az adott számunkat 2-tõl kezdve egyesével haladva egész számokkal, amíg 1-hez nem jutunk.
  • A maradék képzés (modulo) jele C-ben is a %
Személyes eszközök