Regisztráció Blogot indítok
Adatok
szajbergyerek

0 bejegyzést írt és 8 hozzászólása volt az általa látogatott blogokban.

Admin Szerkesztő Tag Vendég
Ez a poszt a vizsgázókat segíti. A vizsga lehet írásbeli vagy szóbeli, a hallgató szabad választása szerint. Bármely vizsgán használható bármi (kivéve a másokkal való direkt kommunikáció pl. chat, facebook, email stb. A vizsgát videóra rögzítjük, akár az utólagos elemzés…..
szajbergyerek 2013.06.26 21:35:01
@nb: "... az ugyancsak, ha valaki olyan kérdésre nem tudja a választ, ami bevezető első védéses sztenderd kérdésem volt, pl. másolókonstruktor stb. témában."

Tisztelt Tanár Úr!

Ez eszembe juttatott egy másik kérdést is. A vizsga kb. mennyire támaszkodik elméleti kérdésekre? Be kell vágni azt a rengeteg oldalt a KÖNYV-ben, ami az év folyamán fel volt adva kötelező olvasmányként? Melyek azok a részek, amelyekre nagyobb figyelmet kell szentelni? Esetleg jó, ha készítünk egy rövid jegyzetet a kötelezően feladott részek tartalmából?

A gyakorlatot Godó Zoltán tanár úrnál vettem fel, ezért egy másik kérdés: melyek azok az ominózus bevezető első védéses sztenderd kérdések, amelyekre nagyon kell ügyelni?
Ez a 6. (logikai) előadás posztja. Fő feladatunk a védés előkészítése után maga a védés. Aki már az április 9-i héten a laborján vállalja a z3a7.cpp forrás celebrálását, annak máris megvan a félév közepei védése, feltéve persze, hogy a celebráció sikeres. (Áprilisban…..
Ez a poszt az év közbeni védést támogatja. Laborfeladatként a védés "C vetületét" készítjük el. Itt nem adok teljes kódot, hogy a hallgató rá legyen szorítva az önálló munkára. (A közelgő aktuális védésre ez nem igaz, hiszen az annak alapjául szolgáló teljes…..
szajbergyerek 2012.03.30 17:29:05
szajbergyerek 2012.03.30 17:32:44
K&R feladat

Készítő: KDániel
Binom: szajbergyerek

6.3. gyakorlat - Írjunk kereszthivatkozási programot, amely kiírja egy dokumentumban lévő szavakat az előfordulás, helyüket megadó sorszámmal együtt! A program ne vegye figyelembe az olyan töltelékszavakat, mint "a", "az", "és" stb.!

---

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <ctype.h>
#define SOR_MAX 1000
#define SZO_MAX 100

typedef struct szavak
{
char szo[SZO_MAX];
int sorok[SOR_MAX];
struct szavak *kov;
} SZAVAK;

SZAVAK *fej=NULL;

void kiir (void)
{ int i;
SZAVAK *akt=fej;
while(akt!=NULL)
{
printf("[%s] - ",akt->szo);
for(i=0;i<SOR_MAX;i++)
{ if(akt->sorok[i]==0) break;
printf("%d, ",akt->sorok[i]);
}
printf("\n");
fej=akt;
akt=akt->kov;
free(fej);
}
return;
}

int string_compare(char mivel[], char mit[])
{int i=0,j=0;
while(i<=strlen(mivel) && j<=strlen(mit))
{
if(mivel[i]!=mit[j]) return 0;
else {
i++;
j++;
}
}
if(i==strlen(mivel) && j==strlen(mit)) return 1;
}

SZAVAK *melyik(char mit[])
{ SZAVAK *akt=fej;
while(akt!=NULL)
{
if(string_compare(akt->szo,mit))
return akt;
akt=akt->kov;
}
return NULL;

}

int van_e_mar(char mit[])
{int az=0;
SZAVAK *akt=fej;
if(akt==NULL) return 0;
while(akt!=NULL)
{
if(string_compare(akt->szo,mit)) az++;
akt=akt->kov;

}

if(az>0) return 1;
else return 0;
}

void cross_referencer(FILE *fp)
{ SZAVAK *uj=NULL;
char sor[SOR_MAX],szo[SZO_MAX];
int i,j,sor_szam=1,k;
//Végig megyek a fájlon
while(!feof(fp))
{

for(i=0;i<SOR_MAX;i++) sor[i]='\0';
//Soronként olvasom be a fájlt...
fgets(sor,SOR_MAX,fp);
k=0;
while(k<strlen(sor)){
for(i=0;i<SZO_MAX;i++) szo[i]='\0';
i=0;
//de feldolgozni szavanként akarom
while((sor[k]!=' ') && (sor[k]!=';') && (sor[k]!='\t') && (sor[k]!='\0') && (sor[k]!='\n') && (sor[k]!='.') && (sor[k]!=':') && (sor[k]!=','))
{szo[i]=tolower(sor[k]);
i++;
k++;
if(i>SZO_MAX) {
printf("Hiba! - Tul rovid szohossz van megadva!\n");
exit -1;
}
}
if(strlen(szo)>0)
if(!van_e_mar(szo))
{
//Ha még nincs felvéve ez a szó, akkor megkísérlek lefoglalni neki helyet, és eltárolom
if((uj=(SZAVAK *) malloc(sizeof(SZAVAK)))==NULL)
{
printf("Hiba! - Kifogytunk a memoriabol!\n");
exit -1;
}
else {
strcpy(uj->szo,szo);
i=0;
while(i<SOR_MAX)
{uj->sorok[i]=0;
i++;
}
uj->sorok[0]=sor_szam;
uj->kov=fej;
fej=uj;
}
}
else {
//Ha már fel van véve, megnézem melyik szóról is van szó és ha még nincs letárolva a találati sor, akkor beleírom
if((uj=melyik(szo))==NULL) { printf("Hiba! - Azt kaptam, hogy benne van mar, de meg sincs!\n");
exit -1;
}
i=0;
while(uj->sorok[i]!=0 && i<SOR_MAX)
{ if(uj->sorok[i]==sor_szam) break;
i++;
}
if(uj->sorok[i]==0) uj->sorok[i]=sor_szam;
else if(i>=SOR_MAX)
{ printf("Hiba! - Tul kicsi sor szam van megadva!\n");
exit -1;
}

}
k++;
}
sor_szam++;
}

//Végül kiírás után felszabadítom
printf("A talalt szavak: (szo - sorok szamai)\n");
kiir();
return;
}

main() {
FILE *fpp=fopen("document.txt","r");

if(fpp==NULL) {
printf("Hiba! - Nincs meg a fájl!\n");
exit -1;
}
else cross_referencer(fpp);

fflush(fpp);
fclose(fpp);
return 0;
}

---

Screenshot:
kepfeltoltes.hu/view/120330/screenshot_exercise63_www.kepfeltoltes.hu_.png
Az elmúlt héten többen szóvá tették, hogy Ők nem olvasták a labor posztját, ezért nem tudták, hogy pontosan milyen olvasmányélményekkel kell, hogy a laborra rendelkezzenek. A hallgatói laborkártya kezdeményezés kb. olyan, mint amikor a magyar tanárod rákérdezett, hogy "a…..
szajbergyerek 2012.03.19 23:37:22
@KDániel: Üdv!

KDániel binomja vagyok. Ellenőriztem az általa beküldött programokat, és itt vannak a kódok, valamint a képernyőmentések is:

---

1.12. gyakorlat - Írjunk programot, ami a bemenetére adott szöveg minden szavát új sorba írja ki!

#include <stdio.h>
int main()
{
int i=0,k;
char s[80];
printf("Kerem a szoveget: ");
while((s[i]=getchar())!='\n')
i++;
for(k=i;k<80;k++)
s[k]='\0';
for(k=0;k<i;k++)
if(s[k]==' ') printf("\n");
else printf("%c",s[k]);
printf("\n");
return 0;
}

kepfeltoltes.hu/view/120319/screenshot_exercise_1-12_www.kepfeltoltes.hu_.png

---

1.17. gyakorlat - Írjunk programot, ami kiírja az összes, 80 karakternél hosszabb bemeneti sort!

#include <stdio.h>
#include <string.h>
#define MAX_SOR 1000
int main ()
{
char sor[MAX_SOR]={'\0'};
int i=0,k;
while((sor[i]=getchar())!=EOF)
{
if(sor[i]=='\n')
{
if(strlen(sor)>81)
printf("%s\n",sor);
for(k=0;k<i; k++)
sor[k]='\0';
i=-1;
}
i++;
}
return 0;
}

kepfeltoltes.hu/view/120319/screenshot_exercise_1-17_www.kepfeltoltes.hu_.png

---

4.1. gyakorlat - Írjuk meg az 'strindex(s, t)' függvénynek azt a változatát, amely a 't' minta 's'-beli legutolsó előfordulásának indexével, vagy ha 't' nem található meg 's'-ben, akkor -1-gyel tér vissza!

#include <stdio.h>
#include <string.h>
int strindex(char *miben, char *mit)
{
int i=0,van=1,j=0,l;
while (i<strlen(miben))
{
van=1;
if(miben[i]==mit[0])
{
j=i+1;
for(l=1;l<strlen(mit); l++)
{
if(miben[j]==mit[l]) van++;
j++;
}
if(van==strlen(mit)) return i+1;
}
i++;
}
return -1;
}

main () {
char s[80],t[80]; int i=0,k;
printf("Kerem a szoveget: ");
while((s[i]=getchar())!='\n') i++;
for(k=i;k<80; k++) s[k]='\0';
printf("Kerem a keresett szovegreszt: ");
i=0;
while((t[i]=getchar())!='\n') i++;
for(k=i;k<80; k++) t[k]='\0';
printf("Az eredmeny (ha szam, akkor onnantol kezdodik a szovegben, ha -1 akkor nincs meg): %d\n",strindex(s,t));

return 0;
}

kepfeltoltes.hu/view/120319/screenshot_exercise_4-1_www.kepfeltoltes.hu_.png
szajbergyerek 2012.03.19 23:38:11
@szajbergyerek:

4.13. gyakorlat - Írjuk meg az 's' karaktersorozatot helyben megfordító 'reverse(s)' függvény rekurzív változatát!

#include <stdio.h>
#include <string.h>
#define MAX_ 120

int reverse_recursive(char *mit,int hossz)
{
printf("%c",mit[hossz]);
if(hossz>=0)
printf("%c",reverse_recursive(mit,hossz-1));
else
return;
}

int main(void)
{
char s[MAX_]={'\0'};
int i=0,k;

printf("Kerem a szoveget: ");
while((s[i]=getchar())!='\n')
i++;
for(k=i;k<MAX_; k++)
s[k]='\0';
reverse_recursive(s,strlen(s));
printf("\n");

return 0;
}

kepfeltoltes.hu/view/120319/screenshot_exercise_4-13_www.kepfeltoltes.hu_.png

---

5.4. gyakorlat - Írjon 'strend(s, t)' néven függvényt, amely 1 értékkel tér vissza, ha a 't' karaktersorozat megtalálható az 's' karaktersorozat végén, és 0 értékkel, ha nem!

#include <stdio.h>
#include <string.h>
#define MAX_ 100

int strend(char *miben, char *mit)
{
int i,j,l,van=1;
for(i=(strlen(miben)-strlen(mit)); i<strlen(miben); i++)
{
if(miben[i]==mit[0])
{
l=i+1;
for(j=1;j<strlen(mit); j++)
{
if(miben[l]==mit[j])
van++;
else break;
l++;
}
if(van==strlen(mit))
return 1;
}
van=1;
}
return 0;
}

int main(void)
{
char s[MAX_],t[MAX_];
int i=0,k;
printf("Kerem a szoveget: ");

while((s[i]=getchar())!='\n')
i++;

for(k=i;k<MAX_; k++)
s[k]='\0';

printf("Kerem a keresett szovegreszt: ");
i=0;

while((t[i]=getchar())!='\n')
i++;

for(k=i;k<MAX_;k++)
t[k]='\0';

printf("Az eredmeny: %d \n(- 1 benne van a vegen\n - 0 nincs benne a vegen)\n",strend(s,t));
return 0;
}

kepfeltoltes.hu/view/120319/screenshot_exercise_5-4_www.kepfeltoltes.hu_.png

---

5.13. gyakorlat - Írjuk meg a 'tail' programot, amely kinyomtatja az utolsó 'n' bemeneti sort! Alapfeltételezés szerint legyen n=10, de tegyük lehetővé 'n' változtatását egy opcionális argumentummal pl. a

tail -n

formában. (Ennek hatására az utolsón sor íródjon ki.) A program viselkedjen ésszerűen akkor is, ha a bemenet vagy az 'n' értéke ésszerűtlen. A programot úgy írjuk meg, hogy a lehető legjobban használja a rendelkezésére álló tárterületet: a szövegsorokat a rendezőprogramnál leírt módon tároljuk és ne rögzített méretű kétdimenziós tömbként.

#include <stdio.h>
#include <string.h>
#define MAX_ 1000

main(int argc, char *argv[])
{
char s[MAX_]={'\0'}, sorok[MAX_][MAX_]={'\0'};
int n=23,i=0,sor=0,k;

if(argc==1) n=10;

else n=*argv[1]-'0';

while((s[i]=getchar())!=EOF)
{
if(s[i]=='\n')
{
strcpy(sorok[sor],s);
for(k=0;k<i; k++) s[k]='\0';
i=-1;
sor++;
}
i++;
}

if(n>sor)
{
printf("Nincs annyi bejovo adat\n");
return 1;
}
else for(i=sor-n;i<sor;i++)
printf("%s",sorok[i]);
return 0;
}

kepfeltoltes.hu/view/120319/screenshot_exercise_5-13_www.kepfeltoltes.hu_.png

---

7.1. gyakorlat - Írjunk programot, amely a hívásakor az argv[0]-ban elhelyezett paramétertől függően a nagybetűket kisbetűvé vagy a kisbetűket nagybetűvé alakítja!

#include <stdio.h>
#include <ctype.h>
#include <string.h>

int strend(char *miben, char *mit)
{int i,j,l,van=1;
for(i=(strlen(miben)-strlen(mit)); i<strlen(miben); i++)
{
if(miben[i]==mit[0])
{
l=i+1;
for(j=1;j<strlen(mit); j++)
{
if(miben[l]==mit[j]) van++;
else break;
l++;
}
if(van==strlen(mit)) return 1;
}
van=1;
}
return 0;
}
main(int argc,char *argv[])
{
char s;
printf("* vegjelig atalakitja a bemenetet a hivasnak megfeleloen\n");
if (strend(argv[0],"lower"))
while((s=getchar())!=EOF)
{
putchar(tolower(s));
if(s=='*') break;
}
else if(strend(argv[0],"upper"))
while((s=getchar())!=EOF)
{
putchar(toupper(s));
if(s=='*') break;
}
else
{
printf("Hibas hivas\n");
return 1;
}
return 0;
}

kepfeltoltes.hu/view/120319/screenshot_exercise_7-1_www.kepfeltoltes.hu_.png