- Ha egy függvényen belül, a MAIN függvényben létrehozott változónak szeretnénk felül írni az értékét, akkor függvényhíváskor referenciaként kell átadni (&).
- Rekurzív függvény, amely saját magát hívja.
- Fájlok használata input/output műveletekre. FILE * típusú filemutató az állományokhoz. fopen paranccsal nyitjuk meg használatra. Ügyelünk a fopen helyes paraméterezésére. Majd használat végén fclose függvénnyel lezárjuk a file-okat.
Néhány feladat amiből kiindulhatunk:
/*
Irjunk programot, melyben letrehozunk egy 2D int tombot, majd toroljunk belole egy adott sort.
Ekkor ugyebar eggyel feljebb kerul az osszes sor, helyettesitve a kitorolt sor helyet,
persze kiveve az utolso sor eseten. A torlendo sort a felhasznalotol kerjuk be.
Ugyeljunk arra, hogy mindenkeppen a tomb sorainak szama tartomanyon belul erkezzen a beolvasott ertek.
Az utolso sort toltsuk fel 0-kal minden esetben, jelezve, hogy ures.
*/
#include <stdio.h>
#define N 10
int main(){
int tomb[N][N], szam = 1, i, j, sor;
// tomb feltoltese 1-tol
for (i=0; i<N; i++){
for (j=0; j<N; j++){
tomb[i][j] = szam++;
}
}
// tomb kiiratasa
// ezt praktikus lenne fuggvenybe irni, de hat erre valo a hazi feladat
for (i=0; i<N; i++){
for (j=0; j<N; j++){
printf("%3d ",tomb[i][j]);
}
printf("\n");
}
printf("\n\n");
// torlendo sor bekerese
printf("Hanyadik sort toroljuk: ");
scanf("%d",&sor);
// egesz addig amig helyes erteket nem adunk meg
while (sor > N || sor < 1){
printf("\nCsak %d soros a tomb! Add meg ujra: ", N);
scanf("%d",&sor);
}
// a torlendo sortol lefele az eggyel lentebbi sort mindig eggyel feljebb masoljuk
// a kovetkezto 8 sort ugyszinten fuggvenyben lenne szep kivitelezni
for (i=(sor-1); i<N; i++){
for (j=0; j<N; j++){
tomb[i][j] = tomb[i+1][j];
}
}
// utolso sor feltoltese 0-kal
for (j=0; j<N; j++){
tomb[9][j] = 0;
}
// ismetelt kiiratas
// redundancia, ugyebar ezt a 6 sort mar masodszor latjuk a programon belul, motivacio a fuggvenyhasznalathoz
for (i=0; i<N; i++){
for (j=0; j<N; j++){
printf("%3d ",tomb[i][j]);
}
printf("\n");
}
return 0;
}
/*
Keszitsunk egy kis bejelentkezo feluletet. Hozzunk letre 4 char tombot.
Elso kettoben egy default felhasznalonev-jelszo parost taroljunk le,
a masik kettobe pedig a felhasznalo tudjon irni egy felhasznalonev-jelszo párost.
Ezutan hasonlitsuk ossze a ket-ket string-et.
Ha megegyeznek, akkor "belephet" az felhasznalo, ellenkezo esetben nem.
Az osszehasonlitast egy fuggvenyen belul oldjuk meg!
*/
#include<stdio.h>
#include<string.h>
// Fuggveny a validalashoz. Ket bemeneti parameter az osszehasonlitando karakter tomb.
// 0-val ter vissza a fuggveny, ha kulonbozok voltak es 1-gyel, ha egyformak
int validate (char str1[], char str2[]){
int i, j, // ciklusvaltozok
len1 = strlen(str1), // hossz lekerese
len2 = strlen(str2); // hossz lekerese
if (len1 == len2){ // ha a hosszuk nem egyezik, alapbol nem lehetnek egyformak
for (i=0; i<len1; i++){ // ellenkezo esetben nezzuk vegig elemenkent
if (str1[i] != str2[i] ){ // ha mar egy kulonbozo elem is volt, akkor terjunk vissza 0-val
return 0;
}
}
} else { // es ha hossz nem volt megegyezo, akkor is 0-t adjunk vissza
return 0;
}
return 1; // ha ide eljutottunk, akkor biztos, hogy megegyeztek
}
int main(){
int equ = 1, eqp = 1, i, j;
char stru[20], strp[20], strlogu[20], strlogp[20];
// default ertekek megadasa
strcpy(strlogu,"belavagyok");
strcpy(strlogp,"1234");
// felhasznaloi adatok bekerese
printf("Add meg a felhasznaloneved a belepeshez:\n");
scanf("%s",&stru);
printf("Add meg a jelszavadat a belepeshez:\n");
scanf("%s",&strp);
// a validate fuggveny segitsegevel az egyezosegek ellenorzese es a visszaadott erteket letarolasa
equ = validate(stru, strlogu);
eqp = validate(strp, strlogp);
if (equ == 0 || eqp == 0){ // ha mar az egyik is 0 volt, akkor valahol kulonbseg volt, ekkor ne engedjuk be a felhasznalot
printf("Sikertelen belepes!\n");
} else { // ellenkezo esetben siker
printf("Sikeres belepes!\n");
}
return 0;
}
Innentől kezdve már 10 pontért!
Téma:
3. - 7. gyakorlat anyaga.
Gyakorlásra:
A honlapomon a 3. - 7. gyakorlathoz tartozó anyag, magyarázatokkal, példákkal.
A gyakorlatok végén lévő házi feladat és gyakorló feladatok megoldása.
A honlapom mellet további feladatok találhatóak a PUB-ban. (/n/pub/ProgramozasAlapjai/Gyakorlat/ - erős átfedés van az "itt" és "ott" található feladatok között).
Egyéb infó:
Előreláthatóan 45 percetek lesz a feladatok megoldására és beadására (tehát 8:55-ig/12:45-ig). A feladatokat a BÍRÓ rendszeren keresztül fogjátok megkapni és beadni is, és az értékelést is a bíró fogja csinálni ott helyben. Tehát egyből látni fogjátok a pontszámokat amiket a bíró adott. Aki késik, az is csak a fenti időintervallum alatt írhatja a ZH-t, mivel a bíró rendszer nyit, majd automatikusan zár is. Hiányozni csak igazolással lehet, de a ZH akkor sem pótolható!
Vissza a lap tetejére.