- sziku69: Fűzzük össze a szavakat :)
- Luck Dragon: Asszociációs játék. :)
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- Magga: PLEX: multimédia az egész lakásban
- Tomasz72: Ventilátor upgrade
- Elektromos rásegítésű kerékpárok
- Chosen: Canon 5D II - portrézás 2025-ben
- Szevam: „Rendszerleállás” – egy AI képzeletbeli halál utáni élménye
- bambano: Bambanő háza tája
- Geri Bátyó: B550 szűk keresztmetszet, de mi és miért?
Ú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
Új hozzászólás Aktív témák
Hirdetés
● olvasd el a téma összefoglalót!
● ha kódot szúrsz be, használd a PROGRAMKÓD formázási funkciót!
- Honor 200 Pro - mobilportré
- Milyen belső merevlemezt vegyek?
- Audi, Cupra, Seat, Skoda, Volkswagen topik
- Intel Core i3 / i5 / i7 / i9 10xxx "Comet Lake" és i3 / i5 / i7 / i9 11xxx "Rocket Lake" (LGA1200)
- Kerékpárosok, bringások ide!
- Motorolaj, hajtóműolaj, hűtőfolyadék, adalékok és szűrők topikja
- Fotók, videók mobillal
- Le Mans Ultimate
- AMD K6-III, és minden ami RETRO - Oldschool tuning
- Xbox Series X|S
- További aktív témák...
- DUPLA XEON GOLD 6134!!! HP Z8 G4 LEGNAGYOBB WORKSTATION 64GB 2x8 mag 2x16 szál gamer, szerver, munka
- Apple iPhone SE 2020 64GB, Yettel függő, 1 Év Garanciával
- ÁRGARANCIA! Épített KomPhone i5 10600KF 16/32/64GB RAM RX 7600 8GB GAMER PC termékbeszámítással
- Realme 8i 64GB / Normál állapotban / 12 hónap jótállással
- BESZÁMÍTÁS! ASRock Z370 i5 8500 16GB DDR4 512GB SSD 2060 Super 8GB Zalman Z9 Plus Enermax 750W
Állásajánlatok
Cég: CAMERA-PRO Hungary Kft
Város: Budapest
Cég: Promenade Publishing House Kft.
Város: Budapest