- Vezetékes FEJhallgatók
- Amlogic S905, S912 processzoros készülékek
- Milyen belső merevlemezt vegyek?
- Milyen egeret válasszak?
- NVIDIA® driverek topikja
- AMD GPU-k jövője - amit tudni vélünk
- Házi hangfal építés
- Apple asztali gépek
- Lelövi a Roccat márkanevet a Turtle Beach
- AMD Ryzen 9 / 7 / 5 7***(X) "Zen 4" (AM5)
Hirdetés
-
AMD Radeon undervolt/overclock
lo Minden egy hideg, téli estén kezdődött, mikor rájöttem, hogy már kicsit kevés az RTX2060...
-
Közel 1 billió dollárt vesztettek a big tech óriásai
it Nagyot kaszáltak a shortolók, az úgynevezett Magnificent 7 közel 1 billió dollárt veszített a piaci értékéből a múlt héten.
-
MG4 menetpróba
ma Mindenképpen van fantázia az MG4-ben, az alapfeladatokat olcsón kipipálja, de többet akar nyújtani, mint amire képes.
Új hozzászólás Aktív témák
-
blaces
tag
Közben a harmadikkal is foglalkozom... szinte egésznap, lehet a fáradtságtól nem tudok már oda figyelni rendesen.
Feladat:
[I]Írj programot, amely egy egész számokat tartalmazó szöveges állományból felépít egy bináris fát, és eldönti, hogy a fa inorder és preorder bejárásával ugyanazt a számsorozatot kapja-e! A számokat tartalmazó állomány nevét az első parancssori argumentumként kapja meg a program.A szöveges állomány soronként pontosan egy tízes számrendszerbeli egész számot tartalmaz. A sorokat az újsor karakter (\n) zárja. Az állományt az állomány vége (EOF) jelig kell olvasni.
A bináris fa felépítésében két szabályt kell figyelembe venni. Ha a beszúrandó szám nagyobb, mint az, amelyik a gyökérben van, akkor a gyökértől jobbra kerüljön, ha kisebb vagy egyenlő, akkor a gyökér bal oldalára. Azaz ez a fa nem bináris keresőfa.
A program járja be a fát inorder és preorder módon. Ha a két bejárás ugyanazt a számsorozatot adja eredményül, akkor a program a második parancssori argumentumként megkapott nevű állományba írja az "igen", különben a "nem" szót. [/I]
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#define HAMIS 0
#define IGAZ (!HAMIS)
typedef struct faelem {
char *adat;
int szamlalas, input;
struct faelem *bal, *jobb;
} FA;
void beszuras(FA **gyok, char *adat, int fajlnev) {
if(*gyok == NULL) {
*gyok = (FA*)malloc(sizeof(FA));
(*gyok)->adat = (char*)malloc((strlen(adat)+1)*sizeof(char));
strcpy((*gyok)->adat, adat);
(*gyok)->szamlalas = 1;
(*gyok)->input = fajlnev;
(*gyok)->bal = (*gyok)->jobb = NULL;
} else if(strcmp((*gyok)->adat, adat) < 0) {
beszuras(&(*gyok)->jobb, adat , fajlnev);
} else if(strcmp((*gyok)->adat, adat) > 0) {
beszuras(&(*gyok)->bal, adat, fajlnev);
} else if((strcmp((*gyok)->adat, adat) == 0) && ((*gyok)->input != fajlnev)) {
(*gyok)->szamlalas++;
(*gyok)->input = fajlnev;
}
return;
}
void bejaras(FA *gyok, int n) {
if(gyok != NULL) {
bejaras(gyok->bal, n);
if(gyok->szamlalas == n) {
printf("%s\n",gyok->adat);
}
bejaras(gyok->jobb, n);
}
return;
}
void torles(FA *gyok) {
if(gyok != NULL) {
free(gyok->adat);
torles(gyok->bal);
torles(gyok->jobb);
free(gyok);
}
return;
}
int atugras(int ch) {
if(ch != (int)' ' && ch != (int)'\n' && ch != (int)'\r' &&
ch != (int)'\t' && ch != (int)'.' && ch != (int)',' && ch != (int)';' &&
ch != (int)EOF) {
return HAMIS;
}
return IGAZ;
}
char *memoriafoglalas(char *szo, int j) {
return (szo == NULL) ?
(char*)malloc(sizeof(char)) : (char*)realloc(szo,(j+1)*sizeof(char));
}
int main(int argc, char **argv) {
FILE **fp = NULL;
char *szo = NULL;
int ch;
FA *gyok = NULL;
int i, j;
if((fp = (FILE**)malloc((argc-1)*sizeof(FILE*)))==NULL)
exit(1);
for(i=1;i<argc;++i)
if((fp[i-1] = fopen(argv[i],"rt+"))==NULL)
exit(1);
for(i=1;i<argc;++i) {
j = 0;
while((ch = fgetc(fp[i-1]))) {
if((szo = memoriafoglalas(szo, j))==NULL)
exit(1);
if(atugras(ch) == HAMIS) {
szo[j++] = tolower(ch);
} else if(j > 0 || ch == (int)EOF) {
szo[j] = '\0';
beszuras(&gyok, szo, i-1);
free(szo);
szo = NULL;
j = 0;
if(ch == (int)EOF) {
break;
}
}
}
fclose(fp[i-1]);
}
free(fp);
bejaras(gyok, argc-1);
torles(gyok);
return 0;
}Ez lefordul, csak hibás kimenetet ad vissza az egyetemi tesztelőn
[ Szerkesztve ]
Új hozzászólás Aktív témák
● olvasd el a téma összefoglalót!
● ha kódot szúrsz be, használd a PROGRAMKÓD formázási funkciót!
- HP ENVY x360 15-fh0755ng Convertible - ÚJ - 15,6" notebook - Ryzen 5, 16GB, 512SSD, Win11
- Iphone 12 64GB független 94% akku
- HP PROBOOK 450 G9 (6A150EA) - ÚJ - 15,6" FullHD IPS üzleti notebook - i3-1215U, W11pro
- fehér RTX3060Ti Gamer PC Intel i5-11400F, Zotac Gaming RTX3060Ti 8GB, 16GB Corsair RAM, vízhűtés!
- PlayStation 5 825GB - 1 év garancia, vállalkozástól!