Hirdetés

2024. május 1., szerda

Gyorskeresés

Hozzászólások

(#1551) Sk8erPeter válasza Jester01 (#1550) üzenetére


Sk8erPeter
nagyúr

Már érthető a dolog, bár számomra a típusdeklaráció nem egészen... :B
char** helyiertek[10];
ezzel próbálkoztam, de nem jó... :B Bocs, most ez nem tiszta.

Sk8erPeter

(#1552) Jester01 válasza Sk8erPeter (#1551) üzenetére


Jester01
veterán

char* (*helyiertek)[10];

Jester

(#1553) Sk8erPeter válasza Jester01 (#1552) üzenetére


Sk8erPeter
nagyúr

Na basszus, ez nem jutott volna eszembe... :W :B
Amúgy itt miért számít ennyit a zárójelezés?
Köszi! :R

Sk8erPeter

(#1554) Jester01 válasza Sk8erPeter (#1553) üzenetére


Jester01
veterán

Mindenütt számít, úgy hívják operátor precedencia. :DD A [ ] index operátor erősebb mint a * dereferencia operátor tehát ha neked előbb kell a * akkor bizony zárójelezni kell.

char** helyiertek[10] 10 elemű tömb melynek minden eleme egy char** pointer
char* (*helyiertek)[10] 1 darab pointer ami egy 10 elemű tömbre mutat melynek elemei char* pointerek (stringek)

Jester

(#1555) Sk8erPeter válasza Jester01 (#1554) üzenetére


Sk8erPeter
nagyúr

Minden világos, köszi! :K :R

Sk8erPeter

(#1556) VaZso válasza Jester01 (#1502) üzenetére


VaZso
senior tag

Köszönöm a segítséget, végül megoldódott / tisztázódott a problémám.

(#1557) LevyZidane


LevyZidane
csendes tag

Sziasztok!

Lenne egy nagy problémám. Hogyan lehet fájlból láncolt listába visszaolvasni?
A fájl .txt kiterjesztésű, és az alábbi formátumban vannak eltárolva az adatok:
"%s\t%s\t%s\t%s\t"
Remélem ennyiből megértitek, hogy mit is akarnék csinálni, előre is köszi a válaszokat!!

U.I.: Bocs, ha hülyeséget kérdezek!

(#1558) bpx válasza LevyZidane (#1557) üzenetére


bpx
őstag

egyesével olvasod be az adatokat és adod hozzá a listához

(#1559) grabber


grabber
addikt

Hali!

Valaki tudna segíteni,mert nem működik a program?

#include <stdio.h>

void main
{
FILE * fp;
FILE * brain
char c;
fp=fopen("C:\\Tanuljunk meg programozni.txt","rt");
brain=fopen("Grabber:\\Head\\Brain.txt","a+t");
if(fp==NULL){printf("Hiba\n"); return(1);}
while(!feof(fp)){
c=fgetc(fp);
fwrite(c, ?, brain);
fclose(brain);
}
fclose(fp);
return(0);
}

(#1560) LevyZidane


LevyZidane
csendes tag

Helló megint!

Először is köszi a gyors választ, de sajnos újabb jéghegybe ütköztem.
Eljutottam a következőig, innen viszont hogyan tovább? A listámban nem lép a következő rekordra, hanem felülírja az előzőt, esetleg nem tudnátok megmondani, hogyan kell léptetni a listát?
Az adatszerkezetem a következő:
struct adat{
char kod [5];
char nev [50];
char tel [12];
char fogla [50];
struct adat * next;
};

És ez lenne az a függvényrészlet, amivel beolvasom a fájlt:
fgets(str,1024,file);
pch = strtok (str,"|");
while (pch != NULL){
sprintf(temp->kod,pch);
pch = strtok (NULL, "|");
sprintf(temp->nev,pch);
pch = strtok (NULL, "|");
sprintf(temp->tel,pch);
pch = strtok (NULL, "|");
sprintf(temp->fogla,pch);
//én úgy gondolom, itt kéne léptetni a listát
pch = strtok (NULL, "|");
}

Előre is köszi a válaszokat!

(#1561) Jester01 válasza LevyZidane (#1560) üzenetére


Jester01
veterán

Igazából a ciklusmag elején kellene foglalni mindig egy új elemet amit a végén (ha sikerült az összes mezőt beolvasni) hozzáadsz a listához.

Jester

(#1562) Jester01 válasza grabber (#1559) üzenetére


Jester01
veterán

1. a main után hiányzik a zárójelpár
2. a FILE * brain után hiányzik egy pontosvessző
3. a pointerek csillagja ízlés szerint vagy a típushoz vagy a változóhoz írandó, középre semmiképp (mert úgy aztán tényleg szorzásnak néz ki - de szintaktikailag helyes)
4. ha egyszer void a main akkor nem lehet benne return(1)
5. a return nem függvényhívás nem kell oda a zárójel (de ez is helyes szintaktikailag)
6. a Grabber:\ nem tudom micsoda de bízom benne, hogy a géped tudja :F
7. viszont érdemes lenne azért ellenőrizni a brain pointert is, hátha mégse
8. konstans szöveg kiírásához az (f)puts ajánlott, főleg, ha nem tudod mi a szöveg
9. hibajelzéseket tipikusan az stderr kimenetre küldjük
10. a while(feof(fp)) az esetek többségében hibás struktúra, helyette az adott beolvasó függvény visszatérési értékét kell vizsgálni
11. az fgetc meglepő módon int típust ad vissza, hogy tudja jelezni a fájl végét. Tehát a c változó típusa ez legyen
12. az fwrite hívást gyanítom a fórummotor tette tönkre, tessék szépen használni a Programkód gombot (egy őstagnak magyarázzam? :P )
13. mindazonáltal ha fgetc van, akkor a kiíráshoz fputc ajánlott, mert az a párja
14. a kiírás sikerességét is jó ellenőrizni
15. a kimeneti fájlt nem annyira célszerű bezárni a ciklusban egyetlen karakter kiírása után :N

#include <stdio.h>

int main()
{
FILE* fp;
FILE* brain;
int c;
fp = fopen("C:\\Tanuljunk meg programozni.txt", "rt");
brain = fopen("Grabber:\\Head\\Brain.txt", "a+t");
if (fp == NULL || brain == NULL) {
fputs("Hiba a fajlok megnyitasakor\n", stderr);
return 1;
}
while((c = fgetc(fp)) != EOF) {
if (fputc(c, brain) == EOF) {
fputs("Hiba iras kozben!\n", stderr);
fclose(brain);
fclose(fp);
return 1;
}
}
fclose(brain);
fclose(fp);
return 0;
}

[ Szerkesztve ]

Jester

(#1563) grabber válasza Jester01 (#1562) üzenetére


grabber
addikt

Poénnak szántam,Beolvas egy fájlt,ami elmenti az agyamba :DDD Direkt nem raktam smiley-t,mert kíváncsi voltam leesik-e. Grabber:\\Head\\Brain.
Köszi azért,próbáltam helyesen megírni :R

ON is legyek és haladjak a tanulásban.Egy fésült láncolt lista kellene,2D-és.Ilyet nem csináltam és nem is találok róla infot.Már azt is tudom,hogy 210 soros lesz a hz.

[ Szerkesztve ]

(#1564) Foximaxi101


Foximaxi101
csendes tag

Sziasztok!

Szeretném a C programozási nyelvet megtanulni.
Tudtok ajánlani egy értelmes doksit a neten, ahonnét elsajátíthatom a tudást?
Illetve egy program sem ártana hozzá, amibe begépelhetem a kódot, és lefordíthatom :)

Előre is köszönöm.

(#1565) bpx válasza Foximaxi101 (#1564) üzenetére


bpx
őstag

kernighan-ritchie féle C könyvet érdemes megnézni, van belőle már elektronikus változat is

fejlesztőkörnyezet meg pl. CodeBlocks

(#1566) Foximaxi101 válasza bpx (#1565) üzenetére


Foximaxi101
csendes tag

Köszi!

Megtaláltam a Te általad javasolt könyvet is, illetve közben egy egész jól érthető leírást is:
http://kr-c.freeweb.hu/

A melóhelyemen van linux, sikerült is lefordítanom és lefuttatnom az első "hello world" színű programomat is :)

(#1567) bama


bama
csendes tag

Sziasztok!!

Segitenétek nekem,hogy müködjön a progi??Van benne pár hiba!!!!!
Sűrgős lenne!!!Nagyon köszi!!!Leirná valaki müködöképesen???

int strcmp(char *a;char*b){
char res;
whil (1);
if ((res=(a-b++))|!a++)
break;
return res;
}

(#1568) Jester01 válasza bama (#1567) üzenetére


Jester01
veterán

Mostanában mindenki ilyen házit kap? :F
Házi feladatokat egy-az-egyben nem csinálunk itt meg. Annak viszont akiben látjuk a hajlandóságot szívesen segítünk. Mondjuk a "sürgős" az eleve kizáró tényező, mint ahogy a rengeteg írásjel is :(
Persze ez a személyes véleményem.

Jester

(#1569) Sk8erPeter válasza bama (#1567) üzenetére


Sk8erPeter
nagyúr

Ha az strcmp megírásával van gondod, akkor
Google!!!

És: [link]

Sk8erPeter

(#1570) Karma válasza Jester01 (#1568) üzenetére


Karma
félisten

Nem. A múltkor is ő kérdezett ilyen "mi a hiba" házit.

“All nothings are not equal.”

(#1571) bama


bama
csendes tag

Igen Karma én kérdeztem:D:D De nem házi hatalmas tévedés!!Segits kérlek!!:D:D:D

(#1572) Sk8erPeter válasza bama (#1571) üzenetére


Sk8erPeter
nagyúr

Nem láttad a linkemet? :U :(

Sk8erPeter

(#1573) bama


bama
csendes tag

Kösz Sk8erPeter a linket de én igy se tudom a progit megcsinálni elég gyök 3 a tudásom belöle!Aztán ezeket a feladtaokat erölteti a könyvem és nem értem hogy hogyan fogjak hozzá
!!!Aztán ezért kéne a megcsinált progi talán ragadna rám vmi!!Megköszönném:D:D

(#1574) 3man válasza bama (#1573) üzenetére


3man
csendes tag

Nem "MEGERTENI" kell, hanem megtanulni az alapokat. A nelkul hiaba bohockodsz itt, nem fogsz elorebb jutni.

(#1575) 3man


3man
csendes tag

Az emberi agy viselkedes mintak alapjan mukodik. Ezek bevalt semak. Teljesen mindegy, hogy adott esetben a netrol szarmazik, az egyetemrol vagy sajat tapasztalatbol. A matek is egy sema, a szamitogep alaplogikaja kozel all a matekhoz.
Ha egy gyereknek 5-7 eves koraba a kezebe adsz egy gepet egy forditoval, es ERDEKLI /mert a motivacio mindennel fontosabb/, akkor tudni fog elobb utobb programozni akkor is, ha soha eleteben nem tanul matekot. Akar a vektorokra is "rajohet", csak epp nem fogja tudni, hogy azok a vektorok.

A ganyolasrol csak annyit, ha egy program azt csinalja amit kell, az egy profi program, fuggetlenul attol, mit mond a kod formajara a katedra. Amit tanitanak azok elfogadott modszerek, de nem feltetlenul mindig a leghatekonyabb.

(#1576) 3man válasza RazoR_45 (#50) üzenetére


3man
csendes tag

az elozo az #50.-re ment volna, csak kozben irtam egy masikat, es "elfelejtette". Vagy nem klikkeltem a valaszra.

[ Szerkesztve ]

(#1577) 3man válasza doc (#60) üzenetére


3man
csendes tag

Pontosan az egyik ilyen modszer, amit a katedra "profinak" tart, a lancolt lista.

Gyakorlatilag, ha az ember tudja, mit csinal a gep az adott esetben, tisztaban van azzal, hogy ugyanaz a feladat tombokkel sokkal gyorsabban lefut. Lancolt listat viszont konnyebb atrendezni, kivenni egy elemet, beszurni. Ebben profi, de ugyan ezt egy jol megirt tomb osztallyal is meg lehet tenni. Az eredmeny, "ganyolt" de gyorsabb program.

xd

(#1578) 3man válasza 3man (#1574) üzenetére


3man
csendes tag

Errol a "megerteni" szorol mindig a kinai nyelv jut az eszembe.
Szerezz egy kinai konyvet, es probald "megerteni". Vajon hany szaz ev kellene hozza?

Ha kiulsz a kinai piacra, az eselyed a szovegek megertesere megnovekednek. Hiszen latni fogod, mint csinalnak, mikozben beszelnek. Fel fogsz ismerni nehany szo ismetlodeseben valami logikat, amit egy adott cselekmenyhez lehet kapcsolni.
Ez az az eset, amikor minden tudas nelkul leulsz a gep ele egy c forditoval, es egy peldaprogramot modositol. Jarhato ut, de ez is lassu.

Egy kinai-magyar szotar mar sokat segit, de ha valaki, aki kinaiul is tud meg magyarul is, es elmondja neked a nyelv alapszabalyait, akkor leszel hatekony igazan.

(#1579) 3man válasza 3man (#1578) üzenetére


3man
csendes tag

A kinai nyelv, mint a tobbi is, egy olyan jelkeprendszer, amit az emberek kozosen elfogadtak.
A programnyelveket sem egy univerzalis "LOGIKA" alakitotta ki, hanem egy kompromisszum a gep hardver felepitese altal diktalt logika, es az emberi agy szavakra epulo logikajanak egy furcsa kevereke. Ez latszott a legoptimalisabbnak a feladatra. Vannak matematikai beutesei is, peldaul a for ciklus a matek szumma fogalmahoz kozelit. (nem az osszeadaas miatt ) .
Olyan kifejezeseket hasznal, amelyeket ebben a formaban lehet hogy mashol nem is talaljuk meg. Az = jel lehet ertekadas, de a == ket valami egyenloseget vizsgalja. Az & adhat cimet, lehet binaris ES, vagy megduplazva logikai ES.

Ezt mint meg kell tanulni, mashogy nem megy.

(#1580) bama


bama
csendes tag

Kösz 3man! de nem jutottam sokkal előrébb a piti kis programomban!!!!!!:D:D:D:D

(#1581) grabber válasza Jester01 (#1568) üzenetére


grabber
addikt

Én is idetartoznék?Próbáltam utánajárni,de nem sok mindent találtam a láncolt listáról,ami nekem kéne(legtöbb c++ ráadásul)

(#1582) bpx válasza grabber (#1581) üzenetére


bpx
őstag

veled (a legutóbbi kérdéseddel) csak az a baj, hogy még soha nem hallottam fésült láncolt listáról, de még a google se talál semmit rá :)

(#1583) Karma válasza bpx (#1582) üzenetére


Karma
félisten

Szerintem nagyjából erről van szó, csak tömbök helyett láncolt listákkal. Szép név a láncolt listák láncolt listájára :)

Nem én találtam ki egyébként az elnevezést.

[ Szerkesztve ]

“All nothings are not equal.”

(#1584) grabber válasza bpx (#1582) üzenetére


grabber
addikt

Elméletileg létezik :K Prog haver mondta,hogy azzal járok a legjobban.De majd holnap kiderítem.

(#1585) Sk8erPeter válasza grabber (#1584) üzenetére


Sk8erPeter
nagyúr

Ha "prog haver" (az milyen? :D) ennyire vágja, akkor tőle kérdezd meg, és írd meg itt, miről is van szó konkrétan. :K

Sk8erPeter

(#1586) grabber válasza Sk8erPeter (#1585) üzenetére


grabber
addikt

Csütörtök délelőtt találkozok vele,csak addig szerettem volna gyakorolni.Mégse úgy menjek,hogy nem foglalkoztam a proggal eleget,meg gyakorolni szerettem volna.

Szerk: Prog haver.Fogalmam sincs,de jól hangzik.Haver aki tud programozni és segít is.Ez röviden ;)

[ Szerkesztve ]

(#1587) lmark


lmark
csendes tag

Sziasztok !
Lenne egy feladat amiben segítséget kérnék, hosszabb időt venne igénybe ( néhány órát )- persze fizetségért cserébe (3-4000 Ft) és az elkövetkezendő egy hétben kellene megoldani. Akit érdekel az e-mailben érdeklődjőn !

(#1588) 3man válasza bama (#1580) üzenetére


3man
csendes tag

int strcmp(char *a;char*b){
char res;
whil (1);
if ((res=(a-b++))|!a++)
break;
return res;
}

Ha megtanulnad azt a par jelolest, ami ebben a rovid valamiben talalhato, mar tudnad mi a baja.

A 'res' 'char'-kent van definialva az 'a' es a 'b' 'char *'. Az = ertekadasnal legtobbszor a ket oldal tipusa egyenlo. Hogy lesz a 'char *a'-bol 'char'? Mar valahol leirtam, a definicio megmondja 'char , *a' -ra is fel lehet bontani, meg 'char* , a'-ra . Tehat az 'a' az mutato a '*a' az char. Egyszeru.

A c megengedi a nagyon tomor kod irasat, de ez nem celravezeto. Evek mulva ha eloveszed a kodot, egy eleg osszetett sornal gondolkozni kell, hogy hogyan is gondoltad ezt annak idejen. Atlathato egyszeru kodot kell irni, ami konnyen modosithato. Ilyen elemi szinten nem mindig kell modositani egy programot, de akkor is az a helyes ut. Es ugy kevesebb a hibalehetoseg is.

(#1589) 3man


3man
csendes tag

Visszaterve a lancolt listara, az egyik lassito tenyezo , hogy az elemeket nem lehet kozvetlenul elerni. Erre vannak modszerek, amivel ez kikerulheto.

Ami igazan lassu, az a letrehozasanal a memoriafoglalas. Ha egy eleme int-et tartalmaz, es sok elem van, akkor igazan lassu az egesz folyamat. Erre is van kerulout, kell egy olyan memoriafoglalo modult beiktatni, ami egyszerre egy nagyobb szelet memoriat foglal le, es kis egyforma darabokat tud belole gyorsan kiosztani. Ezzel ismet jelentos sebessegnovekedes erheto el.

[ Szerkesztve ]

(#1590) bama


bama
csendes tag

Szia 3man köszi a leirást!!!

ehez a megoldáshoz mit szólsz???

int strcmp(char *a;char*b){
char res=0;
while (1)
{
if ( (res=(b++))!=a++)
break;
}
return res;
}

(#1591) Sk8erPeter válasza bama (#1590) üzenetére


Sk8erPeter
nagyúr

Te le is fordítod a programjaidat? Még nem tűnt fel, hogy a while(1) olyan végtelen ciklus, mint a ház?
Kérlek használd a "Programkód" gombot a programsorokra a "Kattintható kódok és arcocskák" résznél! :R

Sk8erPeter

(#1592) shev7 válasza Sk8erPeter (#1591) üzenetére


shev7
veterán

nem veletlen az a break a while cikluson belul... ha a es b ket vegtelen hosszu egyforma string akkor tenyleg vegtelen ciklus lesz...

''Gee, Brain, what do you want to do tonight?'' ''The same thing we do every night, Pinky: Try to take over the world!''

(#1593) Sk8erPeter válasza shev7 (#1592) üzenetére


Sk8erPeter
nagyúr

Ja tényleg, kösz a korrekciót. :R Őszintén szólva nem igazán néztem meg a programkódot, csak a while(1) számomra értelmetlennek tűnő sora tűnt fel.

Sk8erPeter

(#1594) VaZso


VaZso
senior tag

Lehet, hogy rosszul fogom meg a dolgot, de a következő problémám támadt:

Van egy **Getlist nevezetű függvényem, ami feladata egy szövegfileból összeszedni a vesszővel elválasztott adatokat és arra beállítani a pointertömb elemeit...

Tehát egy lefoglalt memóriaterületen rendelkezésemre állnak az értékek.
A lista elemeinek pointerét a megfelelő pozícióra állítom, ill. a vesszők helyét '\0'-lal lezárom.

Elviekben minden ok, de nem tudom, hogy allokáljak memóriát a pointertömbnek.
...vagyis erre gondoltam, de ez nagy hülyeségnek tűnik /mondjuk ez egy makrót hív, de elvileg ez lényegtelen/:

MALLOC (*data, sizeof(char *) * cnt);

Tehát van egy *data[cnt] nagyságű pointertömböm, ennek szeretném lefoglalni a tömb egyes mutatói címének letárolásához szükséges memóriaterületet.
Hogy kéne ezt csinálnom?

(#1595) Jester01 válasza VaZso (#1594) üzenetére


Jester01
veterán

Pedig nem hülyeség. :N Ránézésre jó ha a makró tulajdonképpen ezt csinálja:

char** data = malloc(sizeof(char*) * cnt);

Jester

(#1596) VaZso válasza Jester01 (#1595) üzenetére


VaZso
senior tag

Köszi, úgy tűnik, valahogy a deklarációm nem fért össze azzal, amit csinálni akartam... :)

Így nézett ki: char *data[cnt];

Ugye jól sejtem, hogy a tömb elemszámának "lekérdezésére" nem igazán van jobb módszerem, mint az n+1. elemet NULL-ra állítani és erre vizsgálni?

Köszi mégegyszer, most jónak tűnik a függvényem működése.

(#1597) 3man válasza bama (#1590) üzenetére


3man
csendes tag

Mivel nem en vok Chuck Norris, ezert nem fogom fejben debuggolni a progit.

A szokasos eljaras, hogy egy tesztelo reszt irsz hozza. Meghivod ket egyenlo stringgel, majd egyrovidebb/egyhosszabb es forditva stringgel. Ha eletben marad a kod, es az eredmeny amit kiir helyes, akkor kesz.

masik adag xd

(#1598) 3man válasza VaZso (#1596) üzenetére


3man
csendes tag

Igen, igy mukodik a strlen(), megkeresi a string veget jelzo 0-at.
De lehet egy strukturat hasznalni tomboknel, ahol mindig tarolod a hosszat. /egy megjobb c++ modszert mar leirtam valahol itt./
Egy kezdonek ez bonyolitasnak tunik, de nem az. Csak azert latszik bonyolultnak, mert egy kezdo rovid programokban gondolkodik.
Egy nagyobb projectnel ez nagy terheket vesz le az ember valarol. /nem konkretan ez az egyszeru modszer, hanem a mar emlitett c++-os/

(#1599) 3man válasza VaZso (#1596) üzenetére


3man
csendes tag

Regebben olyat is lattam, hogy a char [] elso 4 erteket kihagytak, es radefinialtak egy int-et. Mondanom sem kell, nagyon csunya es veszelyes megoldas, de igy tartalmazta a string a hosszat is.

(#1600) VaZso válasza 3man (#1598) üzenetére


VaZso
senior tag

Köszönöm a válaszokat.

Az strlen függvénnyel meg tudom nézni egy string hosszát, de egy tömb elemeinek számát miképpen? (Ha simán meghívom, eredményként 0-át kapok.)

Rosszul értettem, hogy meghatározható így?

Copyright © 2000-2024 PROHARDVER Informatikai Kft.