Informatika3-2024/Gyakorlat4

A MathWikiből
(Változatok közti eltérés)
(Átlagnál kisebb)
 
5. sor: 5. sor:
 
'''Mostantól .cpp kiterjesztésû file-okban dolgozzunk!'''
 
'''Mostantól .cpp kiterjesztésû file-okban dolgozzunk!'''
  
==== Súlypont (2. gyakról) ====
+
==== Súlypont (3. gyakról) ====
  
 
Írjunk C++ programot, mely beolvas a felhasználótól tetszõleges számú, de maximum 10 három dimenziós koordinátát és kiszámolja a súlypontjukat (koordináták átlaga). A beolvasás megáll, ha a (0,0,0) pontot adjuk meg (és ez a pont nem lesz része a számolásnak).
 
Írjunk C++ programot, mely beolvas a felhasználótól tetszõleges számú, de maximum 10 három dimenziós koordinátát és kiszámolja a súlypontjukat (koordináták átlaga). A beolvasás megáll, ha a (0,0,0) pontot adjuk meg (és ez a pont nem lesz része a számolásnak).

A lap jelenlegi, 2024. március 21., 15:31-kori változata

Tartalomjegyzék

Feladatok

Minden feladathoz nyiss új projektet IDE-ben vagy írd új file-ba ha parancssorból dolgozol!

Mostantól .cpp kiterjesztésû file-okban dolgozzunk!

Súlypont (3. gyakról)

Írjunk C++ programot, mely beolvas a felhasználótól tetszõleges számú, de maximum 10 három dimenziós koordinátát és kiszámolja a súlypontjukat (koordináták átlaga). A beolvasás megáll, ha a (0,0,0) pontot adjuk meg (és ez a pont nem lesz része a számolásnak).

Tipp: nem is kell semmi bonyolult struktúra, hisz elég a koordinátákat egyenként átlagolni. Elég ha a 3 koordinátához létrehozunk 1-1 float tömböt.

Ha kész vagyunk akkor módosítsuk úgy a kódot, hogy elõször olvassuk be pontosan mennyi koordináta érkezik, majd kérjünk be annyit és számoljuk ki a súlypontjukat. Ezesetben nem kell a (0,0,0)-nak speciálisnak lennie. Példa bemenet:

3
3.2 -1.2 2.2
3.4 5.7 1.8
4.2 5.0 0.2

Ha ezzel is megvagyunk, gondoljuk végig, hogy egyáltalán le kell menteni a koordinátákat a feladat megoldásához? Meg lehet oldani úgy, hogy nem tároljuk le õket tömbben?

String szelet

Írjunk C++ függvényt, ami kap egy C string-et és két nemnegatív egészet. A függvény adja vissza a két egész szám, mint index, közötti rész string-et dinamikusan foglalt tömbként. Például a "denever", 2, 5 bemenetre a "neve" string-et adja vissza.

Ne felejtsük el a main függvényben felszabadítani ezt a tömböt!

Átlagnál kisebb

Írjunk függvényt, ami kap egy float tömböt (és hosszát), kiszámolja az elemek átlagát, majd visszaadja azon elemek tömbjét amik kisebbek az átlagnál.

Nem kellene még valamit visszaadni? (Ha igen akkor adjuk vissza paraméterként kapott pointeren keresztül.)

Láncolt lista

Az elõadásról idézzük fel a láncolt lista megvalósítását, fordítsuk is le:

#include<iostream>
 
using namespace std;
 
struct list_e {
  int num;
  struct list_e *next;
};
 
void append(struct list_e **start, int n) {
  struct list_e *e = new struct list_e;
  e->num = n;
  e->next = NULL;
  if (*start == NULL) {
    *start = e;
  } else {
    struct list_e *p = NULL;
    for(p = *start; p->next != NULL; p = p->next){}
    p->next = e;
  }
}
 
int main(void) {
  struct list_e *start = NULL;
  append(&start, 1);
  append(&start, 5);
  append(&start, -2);
  append(&start, 15);
  for(struct list_e *e = start; e != NULL; e = e->next) {
    cout << e->num << endl;
  }
  return 0;
}

Láncolt lista index

Írjunk függvényt, ami megkap egy láncolt lista elsõ elemére mutató pointert és egy n nemnegatív egészet. A függvény adja vissza az n-edik lista elemben tárolt értéket (0-tól számolva). Nem kell figyelnünk rá, hogy jó indexet kapunk-e, feltételezhetjük, hogy létezni fog annyiadik elem.

Láncolt lista felszabadítása

Írjunk függvényt ami felszabadítja a kapott láncolt listát. (Elsõ elem pointerét kapja meg.) Tipp: Egy adott elemet már nyugodtan felszabadíthatunk, ha lementettük a rákövetkezõ elem pointerét.

Láncolt lista beszúrás

Írjunk függvényt ami képes beszúrni adott index helyére elemet. Például ha adott az 1, 5, 2-t tartalmazó lista és beszúrjuk a 0. pozícióra a 6-ot, akkor a 6, 1, 5, 2-t kapnánk, ha a 2-es pozícióra akkor az 1, 5, 6, 2-t.

Láncolt lista eleme-e

Írjunk függvényt ami el tudja dönteni, hogy a kapott érték benne van-e a kapott láncolt listában. (Most már C++-ban használhatunk bool típusú változókat, ezeknek true vagy false értéke van.)

Két irányú láncolt lista

Implementáljunk két irányú láncolt listát, amiben minden elemben nem csak a rákövetkezõ van tárolva, hanem az elõzõ is. A start elem elõzõje NULL legyen.

Implementáljuk legalább az append függvényt.

Személyes eszközök