**Feladat**: adott egy 8 elemű float vektor, adja össze a vektor elemeit és írja ki a konzolra. Első megoldás, egyszerű ciklus: #include int main() { float vektor[ ] = {1.2, 2.3, 3.4, 4.5, 5.5, 6.7, 4.5, 0.4} ; float szumma = 0; int k, elemszam; elemszam = 8; for ( k = 0 ; k < elemszam; k++) { szumma += vektor[ k ]; } printf("Szumma= %f", szumma); } Második megoldás, lebegőpontos mutatóval: #include int main() { float vektor[ ] = {1.2, 2.3, 3.4, 4.5, 5.5, 6.7, 4.5, 0.4}; float szumma = 0; int k, elemszam = 8; float *v = vektor; for ( k = 0 ; k < elemszam; k++) { szumma += *v; v++; } printf("Szumma= %f", szumma); } Harmadik megoldás, a k változót próbáljuk elhagyni: #include int main() { float vektor[ ] = {1.2, 2.3, 3.4, 4.5, 5.5, 6.7, 4.5, 0.4}; float szumma = 0; int elemszam = 8; float *v = vektor; for ( ; v != &vektor[elemszam]; v++) { szumma += *v; } printf("Szumma= %f", szumma); } Negyedik megoldás, do-while ciklussal, valamit a pointer növelését ne elkülönítve végezzük: #include int main() { float vektor[ ] = {1.2, 2.3, 3.4, 4.5, 5.5, 6.7, 4.5, 0.4}; float szumma = 0; int elemszam = 8; float *v = vektor; do { szumma += *v; } while(++v != &vektor[elemszam]); printf("Szumma= %f", szumma); } Fontos megjegyzés: itt nem baj hogy a vektor index túl van címezve ( &vektor[elemszam] ), mert pontosan arra a memóriaterületre mutat, amit már nem szabad használnia, azaz ha a **v** pointer értékét először megnövelve, majd öszehasonlítva az utolsó utáni vektorelem memóriacimével megegyezik, pontosan akkor nem lesz a ciklus többször végrehajtva. Ötödik megoldás, próbáljuk meg az elemszám változót is elhagyni: #include int main() { float vektor[ ] = {1.2, 2.3, 3.4, 4.5, 5.5, 6.7, 4.5, 0.4}; float szumma = 0, *v = vektor; do { szumma += *v; } while(++v != &vektor[sizeof(vektor)/sizeof(float)]); printf("Szumma= %f", szumma); }