Hirdetés
- Nvidia GPU-k jövője - amit tudni vélünk
- Elkezdte felszámolni a GPU-s PhysX támogatását az NVIDIA
- AMD Ryzen 9 / 7 / 5 / 3 5***(X) "Zen 3" (AM4)
- AMD Navi Radeon™ RX 7xxx sorozat
- Apple asztali gépek
- Hobby elektronika
- Akciókamerák
- Intel Core i3 / i5 / i7 / i9 10xxx "Comet Lake" és i3 / i5 / i7 / i9 11xxx "Rocket Lake" (LGA1200)
- Milyen processzort vegyek?
- Vezeték nélküli fülhallgatók
Új hozzászólás Aktív témák
-
dany27
őstag
válasz
Jester01 #2982 üzenetére
Íme:
#include <stdio.h>
#include <stdlib.h>
#include<conio.h>
#include<string.h>
#define ESC 27
#define ENTER 13
#define BS 8
typedef struct ag{
char betu;
struct ag *jobb,*bal;
} Fa;
Fa* uj()
{
Fa* elem=(Fa*)malloc(sizeof(Fa));
elem->bal=NULL;
elem->jobb=NULL;
return elem;
}
void insert(Fa* root, char betu, char *kod)
{
Fa *hely, *elozo;
int i=0;
hely=root;
while (kod[i]!='\0')
{
elozo=hely;
if (kod[i]=='.')
hely=hely->jobb;
else
hely=hely->bal;
if (hely==NULL)
{
hely=uj();
if (kod[i]=='.')
elozo->jobb=hely;
else
elozo->bal=hely;
}
i++;
}
hely->betu=betu;
}
void check(Fa *root,char kod[7])
{
Fa *hely;
int i=0;
hely=root;
while(kod[i]!='\0' && hely!=NULL)
{
if(kod[i]=='.')
hely=hely->jobb;
else
hely=hely->bal;
i++;
}
if(hely!=NULL)
printf("\n%c",hely->betu);
else
printf("\nA megadott morse kod helytelen!");
}
void fill(Fa* root)
{
insert(root, 'A', ".-");
insert(root, 'B', "-...");
insert(root, 'C', "-.-.");
insert(root, 'D', "-..");
insert(root, 'E', ".");
insert(root, 'F', "..-.");
insert(root, 'G', "--.");
insert(root, 'H', "....");
insert(root, 'I', "..");
insert(root, 'J', ".---");
insert(root, 'K', "-.-");
insert(root, 'L', ".-..");
insert(root, 'M', "--");
insert(root, 'N', "-.");
insert(root, 'O', "---");
insert(root, 'P', ".--.");
insert(root, 'Q', "--.-");
insert(root, 'R', ".-.");
insert(root, 'S', "...");
insert(root, 'T', "-");
insert(root, 'U', "..-");
insert(root, 'V', "...-");
insert(root, 'W', ".--");
insert(root, 'X', "-..-");
insert(root, 'Y', "-.--");
insert(root, 'Z', "--..");
insert(root, '0', "-----");
insert(root, '1', ".----");
insert(root, '2', "..---");
insert(root, '3', "...--");
insert(root, '4', "....-");
insert(root, '5', ".....");
insert(root, '6', "-....");
insert(root, '7', "--...");
insert(root, '8', "---..");
insert(root, '9', "----.");
insert(root, '.', ".-.-.-");
insert(root, ',', "--..--");
insert(root, ':', "---...");
insert(root, '?', "..--..");
insert(root, '-', "-....-");
insert(root, '/', "-..-.");
insert(root, '(', "-.--.-");
insert(root, '@', ".--.-.");
insert(root, '=', "-...-");
}
void clreol()
{
int i;
printf("\r");
for(i=1;i<80;i++)
{
printf(" ");
}
printf("\r");
}
void felszabadit(Fa *root)
{
if (root==NULL)
return;
felszabadit(root->jobb);
felszabadit(root->bal);
free(root);
}
int main()
{
Fa* root=uj();
char beolv[7];
int index=0;
int key=0;
fill(root);
printf("Morse kod ellenorzo! Adatbevitel megszakitalsa az ESC lenyomasaval!\n");
printf("Morse kod: ");
do
{
key=getch();
if(((key>=45) && (key<=46)) && (index<6))
{
beolv[index]=(char)key;
index++;
printf("%c",(char)key);
}
else if(key==BS && strlen(beolv)>0)
{
beolv[index-1]=(char)0;
index--;
clreol();
printf("Morse kod: %s",beolv);
}
}while((key!=ESC) && (key!=ENTER || index==0));
beolv[index]='\0';
if(key==ENTER)
check(root,beolv);
else
printf("Adatbevitel megszakitva");
felszabadit(root);
return 0;
}Ezzel próbáljátok ki:
.-. Ez elvileg R betűt ad ami helyes.
.-.- Ez G-t ad ami nem helyes mivel a G morse kódja --. és ha ezt beírom erre is G-t ad![ Módosította: #65675776 ]
-
dany27
őstag
válasz
Jester01 #2980 üzenetére
Elnézést!
Csak azt hidtem hogy valamit a check fgv-ben rontottam el, de aztán kiderült hogy nem és akkor már nem tudtam szerkeszteni a régebbi hozzászólásomat.
Raktam egy if-et oda ahol elhelyezi a betűt a fában,
azért hogy megbiznyosodjak róla hogy a fa jobb vagy bal oldalára rakja... De egy kicsit érdekes lett a végeredmény.
Nem mindegyik betűt tölti fel valamiért, mert sem a bal sem a jobb nem teljeseül....
Erre gondoltam debuggernak a kódba:
if (elozo->bal)
{
hely->betu=betu;
printf("\nBal: %c",betu);
}
else if(elozo->jobb)
{
hely->betu=betu;
printf("\nJobb: %c",betu);
}E szerint minden elem jó helyre kerül szval a feltöltéssel elvileg nem lehet gond...
-
dany27
őstag
válasz
Gyuri16 #2976 üzenetére
Így töltöm fel:
void beilleszt(Fa* gyoker, char betu, char *kod)
{
Fa *hely, *elozo;
int i=0;
hely=gyoker;
while (kod[i]!='\0')
{
elozo=hely;
if (kod[i]=='.')
hely=hely->jobb;
else
hely=hely->bal;
if (hely==NULL)
{
hely=uj();
if (kod[i]=='.')
elozo->jobb=hely;
else
elozo->bal=hely;
}
i++;
}
hely->betu=betu;
} -
dany27
őstag
Sziasztok!
Írtam C-ben egy morse kód ellenőrző progit bináris fát használva de egy érdekes anomáliába futottam....
Ha beadom az a kódot neki hogy .-. akkor kidobja hogy ez az R betű kódja... de ha beírom neki azt hogy .-.- akkor azt mondja hogy G pedig ilyen morse küd nem is létezik....
Sőt mi több a G az pont a fa másik oldalán van.... Már a legelelején pont ellentétes irányba kellene elindulni hogy G-t kapjunk... elméletileg a .-.--nak null pointert kéne hogy adjon mivel a .-. az R betű és utánna nincs már semmi sem...Hol csesztem el?
Ez a rész ellenőrzi hogy van e ilyen morse kód(megpróbálja a beadott kód szerint bejárni a fát):
void check(Fa *gyoker,char kod[7])
{
Fa *hely;
int i=0;
hely=gyoker;
while(kod[i]!='\0')
{
if(kod[i]=='.')
hely=hely->jobb;
else
hely=hely->bal;
i++;
}
if(hely!=NULL)
printf("\n%c",hely->betu);
else
printf("\nA megadott morse kod helytelen!");
}A fa jól van feltöltve az elemekkel!
-
-
dany27
őstag
sziasztok!
Adott egy láncolt lista. Hogyan tudom helyben megfordítani, azaz nem használok segédlistát hozzá??
Előre is köszi!
-
dany27
őstag
Sziasztok!
GTK segítségével készítek egy alkalmazást.
Egy olyan kérdésem lenne hogy a szöveg beviteli mezőből kinyert szöveget milyen adat típusba tudom belepakolni?Mert ezért reklamál:
char test[100];test=gtk_entry_get_text(GTK_ENTRY(szerzo));
előre is köszi!
-
dany27
őstag
Sziasztok!
GTK+C párossal dolgozom. Egy olyan kérdésem lenne hogy hogyan tudnám elkapni a felhasználó által leütött billentyűt? Szöveg mezőbe szeretném ha csak bizonyos karaktereket tudnának írni....
Előre is köszi!
-
dany27
őstag
válasz
Sk8erPeter #2835 üzenetére
Köszi!!
De azért kiírtam, mert hátha valaki lusta rákattintani, és így előbb ráakad ha csak a keresőt használja esetleg! -
-
dany27
őstag
Teljes mértékben igazad van Sk8erPeter!
A hiba forrása az volt hogy nem elég felrakni az alap GTK dev kitet hozzá hanem van még melette 4 pakk ami kell neki!(glib, cairo, atk, pango)
Nem nem ez az első szűrő egyébként, de ki a franc gondolná h nem rakják bele akkor normálisan egy pakkba az egészet. Akkor mi értelme van külön kiadni ha úgyis már a legalapabb szarnál is kell neki a többi csomag!
[ Szerkesztve ]
-
dany27
őstag
na ezeket sikerült kiküszöbölnöm...
Most ilyenért köhög: C:\Users\Dani\Documents\C\konyvtar\main.c|7|undefined reference to `gtk_window_new'|
Egyszerű sima példaprogramot szeretnék lefutattani hogy lássam müködik a dolog...
#include <gtk/gtk.h>
int main (int argc, char *argv[]) {
GtkWidget * main_window;
// gtk_init (&argc, &argv);
// main_window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
// gtk_widget_show (main_window);
// gtk_main ();
return 0;
}[ Szerkesztve ]
-
dany27
őstag
Sziasztok!
Code blocks+GTK segítségével szeretnék GUI-s alkalmazást írni c-ben...De valamiért nem akar lefordulni már az első példa program sem...
Ilyen hiba tömkellegét dobja: C:/GTK/include/gtk-2.0/gdk/gdkdnd.h:126: error: expected ')' before '*' token
Fent van a dev kit a GTK-hoz és be is van állítva a linker meg a compiler is!
Mi lehet a gond?
Előre is köszi!
[ Szerkesztve ]
-
dany27
őstag
Sziasztok!
ANSI C-ben hogy tudok grafikus alkalmazásokat készíteni??
C++ nem játszik, ez kitétel hogy ANSI C-ben készüljön a program....
Előre is köszi!
-
dany27
őstag
sziasztok!
Én most szeretném elkezdeni a C-t tanulgatni de nem tudom melyiket lenne érdemes elkezdeni. Mivel nem tudom hogy mi a különbség a sima C a C++ és C# között!
Előre is köszönöm a válaszaitokat!
Ú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!
- Nvidia GPU-k jövője - amit tudni vélünk
- Futás, futópályák
- Elkezdte felszámolni a GPU-s PhysX támogatását az NVIDIA
- Diablo IV
- RETRO beárazás (mobil, PC, konzol)
- One mobilszolgáltatások
- Anglia - élmények, tapasztalatok
- Windows 11
- Gyúrósok ide!
- AMD Ryzen 9 / 7 / 5 / 3 5***(X) "Zen 3" (AM4)
- További aktív témák...