Hirdetés
- Az AI miatt biztonságosabb az Android, mint az iPhone
- Huawei Watch GT 6 és GT 6 Pro duplateszt
- Google Pixel 10 Pro XL – tíz kicsi Pixel
- „Új mérce az Android világában” – Kezünkben a Vivo X300 és X300 Pro
- Telekom mobilszolgáltatások
- Honor Magic V2 - origami
- Xiaomi 15T Pro - a téma nincs lezárva
- Mégis lesz Galaxy S26 Edge. Vagy nem? De!
- iPhone topik
- Samsung Galaxy S24 Ultra - ha működik, ne változtass!
Új hozzászólás Aktív témák
- 
			
			  aviator tag válasz  dabadab
							
							
								#5585
							
							üzenetére dabadab
							
							
								#5585
							
							üzenetéreNem akartam untatni a népet a teljes feladattal, illetve én is csak egy részét próbáltam megcsinálni első körben. Arról van szó, hogy van egy függvény, ami bekér három koordinátát, azaz csúcsonként hármat, tehát egy for ciklussal feltölti a csucsok tömböt 3x3 koordinátával, majd ezután visszaadja a haromszog típusú triangle struktúra címét. (Ezért kell, hogy pointer legyen a tömb típusa.) Ezt a címet veszi át egy másik függvény, ami elvégzi a lefoglalt terület felszabadítását. Eközben a főfüggvényben meg kell még oldani azt, hogy háromszög struktúrából (háromszögekből) is többet lehessen bevinni, méghozzá előre nem meghatározott darabot (dinamikus tömb). A magyarázatod egyszerűsíthető úgy, hogy azért szállt el a program mert a tömb tele volt null pointerekkel, illetve a hiba a foglalással azért oldódott meg, mert a foglalás után a pointereknek már lett értékük? Tehát inicializálatlan pointerekkel nem dolgozunk? 
- 
			
			  aviator tag Tisztelt Szakértő Urak! Újabb kérdésem lenne: typedef struct koordinata 
 {
 int x;
 int y;
 int z;
 }koordinata;
 typedef struct haromszog
 {
 koordinata* csucsok[3];
 }haromszog;Tehát létre lett hozva egy koordináta struktúra három int mezővel, illetve egy háromszög struktúra egy háromelemű pointertömbbel: A háromszög struktúra egy 3D-s háromszöget tárol amelynek három csúcsa van, egy csúcsnak pedig három koordinátája. Azért lett pointer a tömb típusa mert később a koordináták címeire lesz szükség. A továbbiakban egy egyszerű koordinátabekérést szeretnék csinálni a 0 indexű csúcsra a következő módon: haromszog triangle; //struktúra típusú változó létrehozása 
 scanf("%d %d %d", &(triangle.csucsok[0]->x),&(triangle.csucsok[0]->y),&(triangle.csucsok[0]->z))Nem árulok el szerintem nektek újdonságot: ez így nem működik. Lefut, a fordító jónak látja de nem működik. Ti már biztos tudjátok az okát én még nem, viszont a megoldást igen: haromszog* triangle=(haromszog*)malloc(sizeof(haromszog)); 
 triangle->csucsok[0]=(koordinata*)malloc(sizeof(koordinata));
 scanf("%d %d %d", &(triangle->csucsok[0]->x),&(triangle->csucsok[0]->y),&(triangle->csucsok[0]->z))Amit nem értek: miért nem működik lefoglalás nélkül? Miért kell a csúcsoknak is külön helyet foglalni? Azt hiszem sajnos ez már az a szint amikor nagyon összefüggéseiben kéne látnom a dolgokat, úgy tűnik ezzel hadilábon állok. A válaszokat előre is köszönöm, aki esetleg érez némi motivációt arra, hogy egy kicsit részletesebben elmesélje ezt nekem, felépítve egy gondolatmenetet ami alapján érthetőbbé válik, hogy mi miért van, mi miből következik azzal sokat segítene...akár privátban is, hogy ne terheljük másoknak triviális dolgokkal a fórumot. 
- 
			
			  aviator tag válasz  aviator
							
							
								#5569
							
							üzenetére aviator
							
							
								#5569
							
							üzenetérechar szoveg[101]; 
 char*szpt;
 scanf("%s",szoveg);
 szpt=(char*)malloc(sizeof(char)*((strlen(szoveg))+1));
 strcpy(szpt,szoveg);
 printf("%s",szpt);
 free(szpt);Újabb hasonló probléma. A strcpy itt elméletileg egy char típusú tömböt másol egy char* típusú tömbbe, ami nem lenne lehetséges. Sejtem, hogy az előző "indexelés megeszi a pointert" dolognak lesz itt is jelentősége, gondolom itt az indexelés a string-ben áll annak ellenére, hogy nem látszik az indexelő [] operátor. Kiíratáskor pedig látszólag string-ként íródik ki a pointer típus. 
 Amit nem értek az az, hogy a strcpy két paramétere hogy lesz azonos típusú, melyiknek változik meg a típusa (ha egyáltalán megváltozik) és miért, illetve, hogy a kiíratáskor hogy lesz a pointerből kiíratható string.
- 
			
			  aviator tag typedef struct koordinata 
 {
 int x;
 int y;
 int z;
 } koordinata;
 void beolvas(koordinata* pont)
 {
 scanf("%d %d %d",&(pont->x),&(pont->y),&(pont->z));
 }
 int main()
 {
 int a,i;
 printf("Kerem a koordinatak szamat");
 scanf("%d",&a);
 koordinata* koord = (koordinata*) malloc(sizeof(koordinata)*a);
 
 for(i=0;i<a;i++)
 {
 beolvas(&koord[i]);
 }
 for(i=0;i<a;i++)
 {
 printf("(%d;%d;%d)",koord[i].x,koord[i].y,koord[i].z);
 }
 free(koord);
 return 0;
 }Üdv! A feladat itt az volt, hogy függvénnyel töltsek fel egy koordinátákat tároló struktúrát ahol a struktúrák egy dinamikus tömb elemei. A feladatot sikerült megoldani, a kód így működőképes, egy dolgot viszont nagyon nem értek: A nyíl operátort ha jól tudom akkor használjuk, ha pointeren keresztül akarjuk elérni egy struktúra mezőit. Ha pointer nélkül hivatkozunk akkor a pont operátort használjuk. Ha ez így van, akkor miért van az, hogy a függvény definíciójában a pointer típusú, pont nevű paraméteren keresztül nyíllal hivatkozok a mezőkre, alul a kiíratásnál pedig már ponttal, annak ellenére, hogy a koord változó még mindig koordináta típusú pointer? 
- 
			
			  aviator tag Köszönöm a választ! Amit írtál azt értem: a memóriaterület címét kell, hogy megkapja a scanf, ez alapján tudja, hogy hova írja a változó értékét. Azt nem értem, hogy ha ez így van, akkor miért NEM kell az & jel, ha az x nem egy dinamikus tömb, hanem egyetlen pointer. 
- 
			
			  aviator tag Sziasztok! Valaki el tudja nekem magyarázni, hogy dinamikus tömbök esetén miután malloc-cal lefoglaltam a helyet az elemeknek és olvasom be őket scanf-fel, miért kell a változó neve elé & jel? Most tanulom ezt a témakört, szóval lehet hülye kérdés volt, de azért nem értem, mert ha nem tömbről van szó, hanem csak egy sima pointernek adom értékül a malloc által lefoglalt helyet (x=malloc(sizeof(int))), akkor a scanf-ben nem kell az & jel (scanf("%d",x)), mivel már megvan, hogy hova fog kerülni a beolvasott érték. Köszönöm, ha valaki segít. 
Ú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 Spectre x360 Érintős TERVEZŐ Laptop Tab 16" -60% i7-1360P 32/2TB Intel Arc A370M 4GB UHD OLED
- Szép Dell Latitude 7320 -60% "Kis Gamer" Üzleti Profi Ultrabook 13,3" i7-1185G7 32/512 FHD IRIS Xe
- Ahh! Dell Latitude 7430 "Kis Gamer" Üzleti Profi Ultrabook 14" -50% i5-1245U 16/512 FHD IRIS Xe
- 6 DARAB! DELL Latitude Laptop Tartós-Golyóálló-AKÁR SULIBA IS 7410 7430 7440 7320 5320 5410 5420
- Ohh! Dell Latitude 7430 "Kis Gamer" Üzleti Profi Ultrabook 14" -60% i5-1245U 16/512 FHD IRIS Xe
- GYÖNYÖRŰ iPhone 12 mini 128GB Blue -1 ÉV GARANCIA - Kártyafüggetlen, MS3853, 94% Akkumulátor
- ÁRGARANCIA!Épített KomPhone Ryzen 5 5600X 16/32/64GB RAM RX 7600 8GB GAMER PC termékbeszámítással
- Microsoft Surface Pro // Surface // Surface laptop 10.gen i5, Ryzen // 12,5 13,5 15 //
- Tablet felvásárlás!! Apple iPad, iPad Mini, iPad Air, iPad Pro
- BESZÁMÍTÁS! ASUS ROG Z790 i9 14900KF 32GB DDR5 1TB SSD RTX 5070TI 16GB NZXT H6 Flow RGB 1200W
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest
Cég: Promenade Publishing House Kft.
Város: Budapest
 
						 
								 
							 
							 
							 Sajnos ilyen apróságok kimaradnak ha önállóan tanul programozni az ember.
 Sajnos ilyen apróságok kimaradnak ha önállóan tanul programozni az ember.

