- Honor Magic6 Pro - kör közepén számok
- Karaktere biztos lesz az első Nothing fejhallgatónak
- Samsung Galaxy S24 FE - később
- Kedden érkezik a Galaxy S25 Edge
- Samsung Galaxy A54 - türelemjáték
- iPhone topik
- Honor Magic7 Pro - kifinomult, költséges képalkotás
- Honor 200 Pro - mobilportré
- Fotók, videók mobillal
- 45 wattos vezeték nélküli töltés jön az új iPhone-ba
Új hozzászólás Aktív témák
-
Lortech
addikt
Nem fogja egyiket se használni, mert nem fog lefordulni a konfliktus miatt, ha kettő van. A második stimmelne, de kis tesztelés, nyomozás után arra jutottam, hogy a mai verziójú glibc-ben külön #define nélkül is be van includeolva stdio.h-val a getline, mivel az már szerepel a POSIX C 2008 szabványban. A leírás nem túl naprakész.
-
Lortech
addikt
válasz
Szőkecica #2435 üzenetére
A C getline függvény ahogy linkelték korábban, egy függvénykönyvtárnak a része (GNU C kiterjesztés), tehát nem fog _bárhol_ lefordulni neked egy standard c fordítóval, standard libekkel.
Ha olyan környezeten vagy, ahol nem áll rendelkezésre ez a kiterjesztés, ott az általad is írt hibát kapod (undefined reference to 'getline').
Nyilván, ha te magad definiálsz egy ilyen nevű függvényt, mint ahogy tetted azzal, hogy bemásoltad a getline függvény egy megvalósítását, akkor azt használhatod, de ettől az még nem ugyanaz a függvény, amit ajánlottak korábban, de nincs ezzel baj, számodra lehet jó megoldás. Nem azt írtam, hogy nem jó, hanem azt, hogy nem ugyanaz.
Talán még annyit érdemes megjegyezni, hogy olyan környezeten, ahol viszont rendelkezésre áll a GNU C könyvtár, ott esetleg nem fogod tudni lefordítani a programodat, mert két getline függvény is lesz (a sajátodat érdemes máshogy elnevezni).szerk: j0k3r! kolléga megelőzött közben, jól megírta a lényeget.
-
Lortech
addikt
válasz
Szőkecica #2419 üzenetére
Ha windowson vagy, akkor a nem szabvány gnu kiterjesztés getline problémás lesz, meg lehet, hogy a főiskolán, egyetemen se fogadják el.
Egyébként a programkód megnyomása ennyit szúr be a szövegdobozba, ha kézzel bemásolod:
[M][ C ][ /C ][/M]
S így használhatod:
[M][ C ]formázandó programkód[ /C ][/M]A [ C ]-knél a space-t ki kell venni.
-
Lortech
addikt
válasz
cellpeti #1952 üzenetére
Mert hibás.
ok változó nem kell, ok = 0-nál return 0, felesleges továbbmenni, ha már ott látod, hogy hibás.
nincs is benne csak return 1, szóval sohasem tér vissza 0-val.
1. for ciklus
0,1,2,3 -as string indexekre fut le, az if-re 4-es indexszel kerül a vezérlés, tehát jó rendszámnál is azt fogja jelezni, hogy a megfelelő karakter nem jó, mert nem "-". if-nél feleslegesen növeled i-t is.#1955: de a legalaposabb is.
Azért bámulatos, hogy tizenx sorban hány baklövést lehet elkövetni c-ben.
-
Lortech
addikt
Szerintem érdemes két külön függvényt írni a két számításra, ezzel elkerülve a problémát.
A return valóban egy értéket ad vissza, de ez az érték lehet akár egy memória cím is, ami egy tömbre, listára, struktúrára stb. mutat, ami bármennyi értéket takarhat.
Voiddal is megoldható - ha konkrétan ez volt a feladat -, de akkor átmenő paramétert vagy globális változót kell alkalmaznod (ezt csak a lehetőség miatt említettem, ne így csináld). Ez pl. úgy néz ki, hogy egy mutatót adsz át paraméterként, és az általa mutatott értéket megváltoztatod a kivánt értékre az eljárás végrehajtása során, majd az értéket felhasználod.pl.
"r változó mint mutató deklarálása, inicializálása";
függvényhívás(r (címe),...,...);
eredmeny = r (értéke);Kódot szándékosan nem írok, mert ebben a stádiumban szerintem jobb, ha te magad fedezed fel ezeket a fogalmakat.
-
Lortech
addikt
Kiemeled hogy void függvény, pedig a void mint típus, ill. típus "hiánya" éppen procedúrát jelent, nem függvényt, nincs visszatérési értéke, ezért a "felszin=A..."
értékadó kifejezés nyilvánvalóan hibás. A függvénynek egy megfelelő (2*PI*r*(r+h) -vel kompatibilis) adattípust kell megadnod visszatérési érték típusának void helyett.
(szerk: és persze vissza is kell térned a függvényből a visszatérési értékkel a return kulcsszóval) -
Lortech
addikt
válasz
Jester01 #899 üzenetére
Ez elég tesco gazsdaságos program lett tényleg, egy pár szemetet beleraktam a már meglévők mellé is (/0, nev[0]). De a lényeg részemől valami finesz belevitele volt a logikába, az ebből a szempontból lényegtelen és hibás részeket egy az egyben átvettem, ha megnézed.
-áhá, az ismétlős tényleg így működik. Több mint egy éve nem írtam hagyományos telefonon, el kellett volna olvasni a feladatot.
-const: nekem mindegy, van jelentősége azonkívül, hogy tényleg konstansként van használva és odakívánkozik a const ?
-gets és tsai: másoltam, nem értem, miért tanítják ezeket az elavult és kerülendő dolgokat a diákoknak. pl. [link]
-strlen: másoltam, tényleg ki kéne váltani egy azonnali értékkel.
-printf: szintén.
-toupper: az jogos, egy-két sor megspórolható.
-szám / egyéb nekem úgy tűnik, nem volt feladat. Persze input vizsgálat kéne. -
Lortech
addikt
jó sok if. nekem valami ilyesmi szimpibb lenne.
char * tomb[] = {"2\0", "22\0", "222\0","3","33","333","4","44",
"444","5","55","555","6","66","666","7","77","777","7777","8",
"88","888","9","99","999","9999"};
int abetu = 'a';
int Abetu = 'A';
char nev[10000];
gets(nev);
int i = 0;
//* char elozo=0;
while(i<(strlen(nev)))
{
if (i > 0 && nev[i] == nev[i-1]) {printf(" "); }
//*vagy if (elozo == nev[i]) {printf(" ");}
//* elozo = nev[i];
if (nev[0] < abetu) {printf("%s",tomb[nev[0]-Abetu]);}
else {printf("%s",tomb[nev[0]-abetu]);}
i++;
} -
Lortech
addikt
válasz
Fire/SOUL/CD #767 üzenetére
Mégis mi mást váhatnál azoktól, akiknek segítesz megírni programokat helyettük - hogy később mondjuk egy az egyben bevigyék a te megoldásodat, miközben ők nem érték el azt a szintet, hogy megírjanak maguktól ilyet -, minthogy lelkendezzenek, hogy milyen jó arc vagy te és milyen jó, amit csinálsz.
Engem nem zavar, azt csinálsz, amit akarsz, de hogy helyesen teszed-e, hogy kérdés nélkül full megoldásokat prezentálsz, azt erősen kétlem. A szakmai témától kb. oda jutott a topik, hogy jönnek a nullhsz-es tagok feladatleírással, te meg beírod nekik a megoldást. Ettől még a büdös életben nem fog tudni magától egy programot megírni véleményem szerint, de te lehet, hogy hozzásegíted ahhoz, hogy egy tárgyon átvergődjön valahogyan, amiről lövése nem sok, de majd verheti a mellét az info diplomájára.szerintem is többet ér megírni egy progit, mintha nem válaszolna rá esetleg senki
Ezzel kb. egyet tudok érteni, viszont nem hiszem, hogy ez volna a normális út. Eleve a kérdezőt eléggé pofátlannak tartom, aki bedob egy feladatleírást, hozzá se tud kezdeni, nincs kérdése, csak valami megoldást vár. A cél nem az kéne legyen, hogy a te megoldásoddal átjuttatod őket, hanem hogy eljussanak olyan szintre, amivel meg tudnak felelni a tárgyi követelményeknek, maguktól is képesek megírni, amit kell. Ehhez pedig részükről sok kitartás, szorgalom és tanulás kell, és el kell jutniuk legalább arra a szintre, hogy kérdezni tudjanak. De mint mondtam, azt csinálsz, amit jónak látsz, ez az én véleményem. -
Lortech
addikt
Fogalmam sincs, mit szeretnél konkrétan, de ha az a gond hogy nem olvassa végig a teljes sort, akkor ajánlom olvasásra a getline specifikációját. Ha nem elegendő a buffered a következő sorvégéig akkor hiba keletkezik és nem megy tovább a beolvasás. Ajánlom még a ifstream fail, rdstate és clear függvényeit.
-
Lortech
addikt
válasz
Fire/SOUL/CD #465 üzenetére
Megmondom őszintén, azt hittem, hogy elírtad, majd helyesbítettél az utóiratodban. amargo kifejtette már: értelmetlen a kérés / kérdés.
-
Lortech
addikt
válasz
Fire/SOUL/CD #462 üzenetére
Örülök, hogy sikerült.. Te CLR projektet hoztál létre (.NET managed kód, amit írtam), ami .NET BCL-ből dolgozik, ezért volt WriteLine.
Natív win32 projekt teljesen más tészta.
ui: Nem rendszerprogramozó, hanem simán okleves programozó (programtervező informatikus). -
Lortech
addikt
válasz
Fire/SOUL/CD #457 üzenetére
Én pedig csak bátorkodtam jelezni, hogy hiányos információid miatt nevetgélsz a WriteLine-on és félrevezeted a kérdezőt tisztelt 12 éve végzett rendszerprogramozó kolléga.
-
Lortech
addikt
válasz
Fire/SOUL/CD #455 üzenetére
Nem azért, de te vs. 2008-ban managed c++ projektet nyitottál, nem natívat.
Egyébként ~ugyanaz a kód lefordítható vele mint amit devcpp-hez írtál. -
Lortech
addikt
Inicializálás ~ kezdőértékadás, nem pedig deklarálás, amit az említett sorban csináltál.
Ezzel a sorral létrejött a két változó, lefoglalódott nekik a típusuknak megfelelő memóriahely, de ez nem járt explicit értékadással, az lesz innentől a változók értéke, ami a lefoglalt memóriarészben maradt (random szemétként kezelendő). Így elméletileg lehetséges, hogy a tipp értéke megegyezik azzal, amit majd a rejtett változóba bekérsz, így a program hibás.
tipp:
int rejtett, tipp;
beolvasás
tipp=rejtett + 1
ciklus.. -
Lortech
addikt
-
Lortech
addikt
válasz
Wizardmon #362 üzenetére
scanf("%1s", &b);
Bennemarad az inputban az előző beolvasásból az enter és azt húzza be a karakter beolvasásánál.
scanf(" %c",&b) is jó (szóköz a c előtt), de ez csak egy db white-spacet küszöböl ki.
Ha pl. azt írod, hogy számnak, hogy:
1 szóközszóközszóköz akkor már nem jó. -
Lortech
addikt
válasz
Wizardmon #349 üzenetére
Nyiss egy cmd ablakot (parancssor), és ott futtasd le a kapott exe fájlt, és látni fogod a programod kimenetét, ha volt neki.
Ennek kell történnie, amit leírtál, mivel a program befejeződik felhasználói interakció nélkül, és a parancssor bezáródik, ezért nem látod az eredményt. -
Lortech
addikt
1, int x, i, j = 0;
Ez nem azt jelenti, hogy x = 0 i = 0, j= 0, hanem x és y = meghatározatlan és j =0.
2, amiért nem fordul a programod az az, hogy i és j a cikluson kívül is deklarálva van, meg a ciklus fejében is.
3, minek ide a double? Ha %d-vel akarsz kiiratni, akkor pl int-ként deklaráld illetve fordítva, ha double-t akarsz kiiratni akkor "%f" a szimbólum.
-
Lortech
addikt
Például létrehozol egy egyszerű structot két mezővel:
int szam;
char * szo;Aztán implementálsz egy neked szimpatikus dinamikus adatszerkezetet (pl láncolt lista) melynek elemtípusa az előbbi struct és amelyben tudsz keresni a "szo" mezo szerint. Aztán feldolgozod a szavakat, és ha van már egy adott szó a listában, akkor a megfelelő elem szam mezőjéhez hozzáadsz egyet, ha nincs, akkor befűzöl a lista végére egy új elemet. Nyilván itt keményen memóriát kell kezelni, de ez alap.
-
Lortech
addikt
válasz
Retekegér #279 üzenetére
Uff. Szóval if után nem teszünk ;-t, hacsak nem egy üres utasítást akarsz szimbolizálni.
Itt most az történt, hogy az igaz ágadban lett egy üres utasítás (;). Majd jön egy blokk ( {} )ami mindig lefut az előbbi if-től függetlenül, így persze egyből kilép az exit miatt.
Meg az ilyen exit(-1) is felesleges, egy if () {} else {} megoldás szimpibb.De hozzán legközelebb az áll, hogy ha a két param sikeresen beolvasódott, akkor csinálsz valamit, egyébként meg nem (nincs else ág sem), és végetér a program a main blokk végén.
-
Lortech
addikt
válasz
Retekegér #277 üzenetére
Normális olyan értelemben, hogy vsz. nem bug. Nem normális olyan értelemben, hogy gondolom nem ezt szeretnéd. Esetleg bennemarad a pufferben valami az előző beolvasásokból, ezért egyből lefut a beolvasás. Ha bemásolod a kódot, akkor egyértelművé tehető. A system("PAUSE"); a program végén nem szép megoldás, és kerülendő is valódi alkalmazásoknál, de tesztelni és tanulgatni megteszi az előbbi figyelembevételével.
-
Lortech
addikt
válasz
feherpeter #236 üzenetére
Nem a gépeddel van a "baj", hanem a rutinnal. Mai ( és "tegnap előtti" ) gépeken nem fog megfelelően futni, mert túl gyorsak.
De ott van leírva jól a probléma, és lehetséges alacsonyszintű megoldási módok is. Jobban, jobbat én se tudok írni.
Hardver / operációs rendszer / fordítófüggetlen, jó megoldás nem nagyon van erre az egyszerűnek tűnő problémára.Turbo C + DOS-ról van szó egyáltalán? A legemészthetőbb megközelítés talán az, hogy egy ciklusban lekéred az aktuális időt addig, amíg a kiinduláshoz képest megfelelő idő eltelt. Ez azért nem jó megoldás, mert hiába nem csinál semmi hasznosat a program, a várakozás közben folyamatosan terheli a gépet.
-
Lortech
addikt
válasz
feherpeter #234 üzenetére
traits of turbo c
8. oldal: 15.12.2 delay( ) pont. -
Lortech
addikt
Házikkal legyetek szivesek máshova fáradni, ez nem az "itt a házim csináld má' meg" topik!
Ha elkezditek, látni valamit, hogy próbáljátok megoldani, biztos lesz segítség is. -
Lortech
addikt
A .c-n mit akarsz futtatni? Az a forráskódod (elvileg
). Azért írja ki, hogy hozzáférés megtagadva, mert nincs beállítva rá az x attribútum (futtatható). //de még egyszer mondom, egyébként sincs értelme futtatni, mert nem futtatható állomány, csak a forráskód.
"gcc filenev -o filenev.c -lncurses" még véletlenül sem jó, mert nem a filenev nevűt kéne fordítanod, hanem a filenev.c nevű forráskódodat a filenev nevű binárisba, azaz
gcc filenev.c -o filenev -lncurses, még egyszer: ahol filenev.c a forráskódod, filenev pedig az a fájlnév, amiben a lefordított programod szeretnéd látni.
Ezután futtatás ./filenev-vel.
Ha még így is hibaüzenet a válasz, akkor a hibaüzenetet másold be, mert anélkül nem tudok segíteni. -
Lortech
addikt
Minek utaztatod meg a stringeket?
Hiszen csak a char*-okra mutató pointereket kell kicserélni ahhoz, hogy **matrixban kialakuljon a helyes a sorrend:if (strcmp(matrix[i], matrix[j]) < 0)
{
char *sp = matrix[i];
matrix[i] = matrix[j];
matrix[j] = sp;
}De ha mégis úgy kéne, akkor pl :
#include <stdio.h>
#include <string.h>void rendez(char **matrix)
{
int i, j;
char ideiglenes[20]="";for(i = 0; i < 10; i++)
for(j = 0; j < 10; j++)
{
if (strcmp(matrix[i], matrix[j]) < 0)
{
strcpy(ideiglenes, matrix[i]);char *segedp;
segedp = (char *)realloc(matrix[i], strlen(matrix[j]) + 1);
matrix[i] = segedp;
strcpy(matrix[i], matrix[j]);segedp = (char *)realloc(matrix[j], strlen(ideiglenes) + 1);
matrix[j] = segedp;
strcpy(matrix[j], ideiglenes);
}
}
printf("\nRendezve: \n\n");
for(i = 0; i < 10; i++)
printf("%s\n",matrix[i]);}
int main(void)
{char *automarkak[10];
automarkak[0]=(char *)malloc(strlen("Mercedes") + 1);strcpy(automarkak[0], "Mercedes");
automarkak[1]=(char *)malloc(strlen("Ferrari") + 1);strcpy(automarkak[1], "Ferrari");
automarkak[2]=(char *)malloc(strlen("Audi") + 1);strcpy(automarkak[2], "Audi");
automarkak[3]=(char *)malloc(strlen("Lada") + 1);strcpy(automarkak[3], "Lada");
automarkak[4]=(char *)malloc(strlen("Chevrolet") + 1);strcpy(automarkak[4], "Chevrolet");
automarkak[5]=(char *)malloc(strlen("Ford") + 1);strcpy(automarkak[5], "Ford");
automarkak[6]=(char *)malloc(strlen("Ferrari") + 1);strcpy(automarkak[6], "Skoda");
automarkak[7]=(char *)malloc(strlen("Suzuki") + 1);strcpy(automarkak[7], "Suzuki");
automarkak[8]=(char *)malloc(strlen("Opel") + 1);strcpy(automarkak[8], "Opel");
automarkak[9]=(char *)malloc(strlen("Chrysler") + 1);strcpy(automarkak[9], "Chrysler");rendez(automarkak);
} -
Lortech
addikt
A hibaüzenet azért van, hogy ki tudj indulni belőle.
Ha be van includeolva a math.h, működnie kéne első ránézésre (annak a sornak). Miért log(2)? Miért nem log(b)? A ciklusban az első értékadás fordítva van. Ráadásul ha egy karaktertömbnek elemének értékül adsz egy int-et, akkor nem a megfelelő szám karaktere kerül bele, hanem a kódja.
szerk: while () után pontosvessző. -
Lortech
addikt
Nyilván nincs rá beépített függvény, ha lenne, nem ez lenne a feladatod.
Neked kell megírnod.Gondold végig (ha eddig nem tetted volna), hogyan áll össze egy szám tetszőleges számrendszerben általánosan, majd azt, hogyan lehet átváltani egy decimális számot másik számrendszerbe (pl binárisba). Nincs nehéz dolgod, mert eléggé le van egyszerűsítve a feladat.
A fv. kb 10 sor cicomázással együtt. A fő rész egy ciklus, benne két db értékadás. -
Lortech
addikt
válasz
kicsitomi88 #71 üzenetére
A néhány éves forráskódjaimban.
Annyit csinál, hogy átugorja a white-space-eket, ha vannak, és az első nem white-space-t teszi a c-be.
-
Lortech
addikt
válasz
kicsitomi88 #69 üzenetére
Megnéztem normális megoldást is: scanf("%1s", &c);
(Csak hogy ne az előző maradjon meg. ) -
Lortech
addikt
válasz
kicsitomi88 #67 üzenetére
Dehogynem. A 2. számot beviszed egy enterrel, a szám megy a változóba, a sorvége meg benne marad a pufferben, és a %c meg egyből behúzza.
Gányolás megoldás: scanf("%c%c", &c,&c);szerk: amúgy meg a scanf monnyon le.
-
Lortech
addikt
válasz
FehérHolló #5 üzenetére
Amire reakcióként az illető moderátornak jeleztem is, hogy nem egészen jók azok a topikok, amiket linkelt (először csak a C++ és a VS C# topikokat linkelte, később az ajánlásom hatására a linuxos c topikot is beralta), mivel elég jelentősen eltérnek ezek a nyelvek gyakorlati szempontból, és sokszor feleslegesen keveredik a kettő (c/c++) és ez félreértésekre adhat okot. Felvetette válaszában, hogy moderátor kollégáival megbeszélik és majd idővel rendbe szedik a szoftverfejlesztés részt.
Szerintem igencsak fáférne már a ph-ra a szoftverfejlesztés rész rendberakása. Legalább minden nyelvnek vagy jól elkülönülő témakörnek egy külön topik, normális kezdőhozzászólással (mint pl ebben a topikban), nem olyanokkal, amik pl. egy házifeladat megoldásában kérnek segítséget, aztán úgy maradtak, és nagy topikokká váltak.
Ú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!
- A fociról könnyedén, egy baráti társaságban
- TCL LCD és LED TV-k
- Honor Magic6 Pro - kör közepén számok
- sziku69: Fűzzük össze a szavakat :)
- Luck Dragon: Asszociációs játék. :)
- Autós topik
- Karaktere biztos lesz az első Nothing fejhallgatónak
- Samsung Galaxy S24 FE - később
- Milyen alaplapot vegyek?
- Kormányok / autós szimulátorok topikja
- További aktív témák...
- Telefon felvásárlás!! Apple Watch Series 9/Apple Watch Ultra/Apple Watch Ultra 2
- ÁRGARANCIA! Épített KomPhone i5 13400F 32/64GB RAM RX 7700 XT 12GB GAMER PC termékbeszámítással
- Újszeru GIGABYTE G5 - 15.6" FullHD 144Hz - i7-13620H - 48GB - 1TB - RTX 4050 - Win11 - 1,5 év gari
- Csere-Beszámítás! Asus Számítógép PC Játékra! R5 1600X / GTX 1080 8GB / 32GB DDR4 / 256SSD + 2TB HDD
- BESZÁMÍTÁS! Apple MacBook Pro 14 M4 16GB RAM 512GB SSD garanciával hibátlan működéssel
Állásajánlatok
Cég: CAMERA-PRO Hungary Kft
Város: Budapest
Cég: PC Trade Systems Kft.
Város: Szeged