Hirdetés

2024. május 1., szerda

Gyorskeresés

Hozzászólások

(#1951) Sk8erPeter válasza _kovi_ (#1950) üzenetére


Sk8erPeter
nagyúr

Mindenesetre ahogy PazsitZ is javasolta, NE használj void visszatérési értékű main()-t, NAGYON rossz gyakorlat.

Sk8erPeter

(#1952) cellpeti


cellpeti
veterán

Sziasztok!

Tud valaki nekem írni egy rendszam ellenorzo fv-t?

ezt nem fogadja el:

int rendszam(char s[])
{
int i,ok,h;
h=strlen(s);

if(h!=7) {ok=0;}
for(i=0;i<=3;i++)
{
if(!isupper(s[i])) {ok=0;}
}
if(!s[i]!="-") {ok=0;} {i++;}

for(i=3;i<h;i++)
{
if(!isdigit(s[i])) {ok=0;}
}
return 1;
}

Tigris, tigris, csóvafény...

(#1953) shev7 válasza cellpeti (#1952) üzenetére


shev7
veterán

mondjuk ha nem return 1 lenne a vegen tobb szerencsed lenne :D

ok valtozonak kezdoerteknek 1-et adsz es o lesz a visszateresi ertek.

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

(#1954) Lortech válasza cellpeti (#1952) üzenetére


Lortech
addikt

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.

[ Szerkesztve ]

Thank you to god for making me an atheist

(#1955) Jester01 válasza cellpeti (#1952) üzenetére


Jester01
veterán

Talán mert van vele némi probléma :K
Pl. az első ciklusod <=3 feltéle már a kötőjelet is nézi, tehát amiatt kapásból hibás lesz minden jó rendszám is. Ugyanezen feltétel esetleg túl is címez a stringen, ha az nincs is 4 karakter. A kötőjel ellenőrzésnél i-re hivatkozni nem túl jó ötlet, ha egyszer azt akarod ellenőrizni, hogy a 4. karakter kötőjel-e, akkor azt írd oda (most ugye a hibás ciklusfeltétel miatt az i itt 4 lesz, tehát az ötödik karaktert nézed). A "-" az string konstans nem pedig karakter, és a feltételben kicsit sok a felkiáltójel.

A legrosszabb pedig az, hogy a végén fixen "return 1" van, akármi is az ok változó értéke.

Lehetséges javítás:

int rendszam(const char* s)
{
if (!s || strlen(s) != 7 || s[3] != '-') return 0;
for(i=0;i<3;i++)
{
if(!isupper(s[i]) || !isdigit(s[i+4])) return 0;
}
return 1;
}

MOD: jó hát én voltam a leglassabb :B

[ Szerkesztve ]

Jester

(#1956) cellpeti válasza Jester01 (#1955) üzenetére


cellpeti
veterán

Köszönöm szépen nektek!
Már 8.jára fogok menni prog1-ből! :W Jó lenne,ha most sikerülne! :U

Tigris, tigris, csóvafény...

(#1957) emvy válasza cellpeti (#1956) üzenetére


emvy
nagyúr

milyen szakon tanulsz?

while (!sleep) sheep++;

(#1958) cellpeti válasza emvy (#1957) üzenetére


cellpeti
veterán

Mérnök Informatika...Győr :U
Csak szopó,mert ha nincs prog1 nincs se prog2,se algo,se szoft2,se adatbázis, se semmi... :O

[ Szerkesztve ]

Tigris, tigris, csóvafény...

(#1959) Sk8erPeter válasza cellpeti (#1958) üzenetére


Sk8erPeter
nagyúr

Most nem szivatásból mondom, de nem véletlenül találták ki az egymásra épülő tárgyakat... bocs, de ha ilyen szintű feladatot nem tudsz megoldani prog1-ből, akkor nincs túl sok értelme prog2-re menned...

Sk8erPeter

(#1960) emvy válasza cellpeti (#1958) üzenetére


emvy
nagyúr

Szerinted ebbol igy meg fogsz elni valaha is? En a helyedben vagy nagyon tanulnek, vagy (inkabb) keresnem egy masik szakot.

while (!sleep) sheep++;

(#1961) futo001


futo001
senior tag
LOGOUT blog

Sziasztok!

Szeretnék a Windows mobilomra programot írni. Ehhet a Pelles C nevű programot ajánlották, ami többek között tartalmaz WinCE fordítót. A következő igen egyszerű pár soros progit fordítanám le:

# include <windows.h>
int main()
{
int a,b,c;
//clrscr();
fprintf(stdout,"Kerem az elso szamot: ");
fscanf(stdin,"%i",&a);
fprintf(stdout,",\nKerem a masodik szamot: ");
fscanf(stdin,"%i",&b);
c=a+b;
fprintf(stdout,"\n\nA ket szam osszege: %i",c);
fgetc(&a);
return 0;
}

Compile után nincs hibaüzenet, build-re a következő üzenetet kapom:
POLINK: error: Unresolved external symbol 'WinMain'.
POLINK: fatal error: 1 unresolved external(s).

Tudja valaki mi lehet ennek az oka? Ha a maint-t cserélem WinMain-re jelezve, hogy windowsos alkalmazás, akkor a következő a hibaüzenet fordítás után:
C:\Users\eeePC\Desktop\proba.c(5): error #2009: Conflicting argument declarations for function 'WinMain'.

I'm a man with a plan... the plan is to booze as much as I can! ¯\_(ツ)_/¯

(#1962) Karma válasza futo001 (#1961) üzenetére


Karma
félisten

A WinMainnak kicsit más a szignatúrája, azért vernyog.

Ez a helyes:
int WINAPI WinMain(
HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPWSTR lpCmdLine,
int nShowCmd );

Ld. itt.

Egyébként én a helyedben inkább a .NET Compact Frameworkkel kezdenék, kevésbé fájdalmas.

“All nothings are not equal.”

(#1963) futo001 válasza Karma (#1962) üzenetére


futo001
senior tag
LOGOUT blog

Sikerült, köszönöm!
A #include <winuser.h> hiányzott, az általad linkelt oldalon írják, hogy kell ez a header. Én azt hittem csak a windows.h kell.

A .NET tanácsot biztosan megfogadom, az már most látszik, hogy ez az út nyűgös lesz.

I'm a man with a plan... the plan is to booze as much as I can! ¯\_(ツ)_/¯

(#1964) cellpeti


cellpeti
veterán

Sziasztok!

Lenne egy feladatom. Azt hogy üres sorig kérjen megírtam,azt is,hogy a 0 és 100 között legyen a kor, azt is,hogy csak kisbetuk lehetnek benne. De azt nem tudom,hogy az elválasztó szóközök helyén _ legyen. :O

Tudnátok segíteni? :U

Tigris, tigris, csóvafény...

(#1965) cellpeti válasza cellpeti (#1964) üzenetére


cellpeti
veterán

elképzelésem van rá. Végig megyek a tömbön és ahol fehér karakter van(' '), azt kicserélem aláhúzásra. De biztos van ennél egyszerűbb is.

[ Szerkesztve ]

Tigris, tigris, csóvafény...

(#1966) Sk8erPeter válasza cellpeti (#1965) üzenetére


Sk8erPeter
nagyúr

Miért akarod kicserélgetni a whitespace-eket? Akkor eleve félreértetted a feladatot, az a feladat, hogy az alsóvonásokat cseréld szóközökre, és amentén válaszd el a neveket, sőt, eleve a bevitt karaktersorozat nem tartalmazhat whitespace-t, csupán "aláhúzásjelet", ha mégis tartalmaz, akkor hibaüzenetet kell dobni!
Simán megcsinálhatod azt is, hogy karakterenként ellenőrzöd, tárolgatod, és ha valahol hibát találsz, akkor befejezed, hibaüzenetet dobsz, egyébként meg átalakítgatsz.

Sk8erPeter

(#1967) cellpeti válasza Sk8erPeter (#1966) üzenetére


cellpeti
veterán

catherine_zeta-jones

For-val végig megyek rajta és ha nem kisbetu valamelyik karakter, vagy nem _ vagy nem - , akkor kileptetem a programot. Ha jól gondolom...miért kell letárolnom a karaktereket?

Tigris, tigris, csóvafény...

(#1968) Sk8erPeter válasza cellpeti (#1967) üzenetére


Sk8erPeter
nagyúr

Ha nincs eltárolva a karaktersorozat, akkor hogy akarod később átalakítani? :U
Mindegy, milyen adatfolyamból olvasol (pl. fájlból, standard inputról), a későbbi átalakításhoz, kiíratáshoz mindenképp el kell tárolnod... Miért, eddig hogy képzelted, egyből kiíratod, vagy mi? Akkor a feladatokat nem fogod tudni megcsinálni...

Sk8erPeter

(#1969) Karma válasza Sk8erPeter (#1968) üzenetére


Karma
félisten

Az átalakítás szempontjából marha mindegy lenne (ha a +1-es alfeladattól eltekintünk), hogy letárolja-e az egész nevet vagy sem. Meg az átlagszámításhoz se, ebben szerintem neki van igaza.

Viszont a többi feladathoz meg tényleg szükség van rá.
Ez a void atalakit(char[] nev) szignatúra meg üt.

“All nothings are not equal.”

(#1970) Sk8erPeter válasza Karma (#1969) üzenetére


Sk8erPeter
nagyúr

"Ez a void atalakit(char[] nev) szignatúra meg üt."
Nem is char[] nev, mert char nev[] :D Amúgy jobban mutatna char* nev formában, nem? Vagy még mire gondolsz? :)

Mellesleg nem értem, ha az egész karaktersorozatot át kellene adni a függvénynek átalakítás céljából, akkor azt hogyan akarod megcsinálni anélkül, hogy el ne lenne tárolva? És ne tekintsünk el a +1-es alfeladattól, az is a specifikáció része... :U (Bár elég komolytalan specifikáció, az egész megfogalmazás valahogy elég bénácska számomra...)
Pl. hogyan akarod kicserélni a catherine_zeta-jones formájú szöveget Zeta-Jones, Catherine formájúra, ha nem tárolod el a karaktersorozatokat? :U

[ Szerkesztve ]

Sk8erPeter

(#1971) Karma válasza Sk8erPeter (#1970) üzenetére


Karma
félisten

Azt csak elírtam, nem azért idéztem. Egy ilyen átalakítást én nem feltétlen in-place csinálnék meg, tehát inkább egy char* transform(char* name) függvényt írnék, ha nem lenne ott a többi része.

De jogos, a névátrendezés és a maximum miatt két nevet el kell tárolni :U

“All nothings are not equal.”

(#1972) cucka válasza Sk8erPeter (#1970) üzenetére


cucka
addikt

Elsősorban azért üt, mert ha egy függvényt úgy nevezel el, hogy "átalakít", akkor elvárod, hogy úgy működjön, hogy kap valamilyen bemenő adatot, átalakítja, majd az eredménnyel valahogy visszatér.

[ Szerkesztve ]

(#1973) Sk8erPeter válasza cucka (#1972) üzenetére


Sk8erPeter
nagyúr

Jaja, valóban, közben rájöttem, hogy az a void nagyon sántít. :K
Egyébként szerintem az egész feladat nagyon komolytalan, sokkal több figyelmet fordítanak arra, hogy egy hibaüzenet elég részletes legyen, meg hogy minden #include-olva legyen, mint magára a feladatra és annak elegáns megoldására... :W
Nálunk papíron kell tudni programozni, és speciel az a legkevésbé lényeges rész a feladat megoldásánál, hogy milyen hibaüzenetet dobunk, csak legyen nyilván lekezelve a hiba, meg az sem fontos, hogy include-oljuk a megfelelő fejléceket, nyilván azt a feladat tényleges megvalósítása során nem hagyod ki, de amikor egy feladat részletes elméleti megoldásáról van szó, akkor szerintem ez a legkevésbé lényeges rész.

Sk8erPeter

(#1974) Gyuri16 válasza Sk8erPeter (#1973) üzenetére


Gyuri16
senior tag

viszont ha prog1rol van szo, akkor szerintem elvarhato az ilyen aprosagok ellenorzese. ez a megfelelo idopont, hogy a fejekbe verjek a jo hibauzeneteket, includolast es sok mas hasonlot is, amire kesobb mar mindenki nyilvanvalokent tekint.

nalunk is papiron programozas ment nagyreszt, aztan vizsgan neztek nagyokat az emberek, mert nem tudtak debuggolni, nem ertettek mi a stack overflow es ilyesmi. egy kezdo prog targynak meg kell adni az alapokat, kesobb pedig lehet mindenfele algoritmusokat tanulni

mindezt mondom ugy, hogy en elmeleti informatikat tanulok, es sokkal fontosabbnak tartom az algoritmikus szemlelet elsajatitasat mint a kulonbozo prognyelvek tanulasat, megis ha elsoben nem tanulja meg ember kifejezni magat az adott eszkozokkel, kesobb csak problemat okoz neki

Nem vagyok egoista, csak uborkagyalu!

(#1975) Sk8erPeter válasza Gyuri16 (#1974) üzenetére


Sk8erPeter
nagyúr

Ez is lehet szempont, nálunk prog1-en nyilván ugyanúgy le kellett ellenőrizni a hibaeseteket, és hibaüzeneteket dobni, de közel sem ezen volt a hangsúly, hanem magán a feladatmegoldáson. Ha valaki a programozás során a fordító hibaüzeneteiből nem jön rá, hogy azért nem megy a program, mert valamit nem include-olt, akkor az ne akarjon programozással foglalkozni, ne legyen informatikus.
Fontos az ilyen jellegű alapok lefektetése is - pl. laboron. DE a prog általában inkább arról szól, hogy mennyire tudsz papíron programozni. És többnyire informatikus szakokon van elméleti és gyakorlati (labor) rész is... Ott meg megtaníthatják az include-olást és egyéb ehhez hasonló dolgokat, amik nélkül a programod egyébként sem menne. De amikor papíron kell programozni, és szorít az idő, akkor ne arra menjen már el az idő fele, hogy minden szirszart include-olgatsz, meg csodaszép hosszú hibaüzeneteket írsz, hanem maradjon idő inkább a tényleges feladat elegáns megoldására, a hibaüzenetekkel meg include-olásokkal majd elszarakodsz akkor, amikor írogatod a programot. Persze nyilván így is derüljön ki a hibaüzenetből, hogy mi a pálya, hol akadt el a program.
Ha meg a srác által írandó program egyébként is gyakorlati jellegű, tehát gépnél kell megoldani, akkor meg nyilvánvaló, hogy mindent include-olni kell, és akkor nincs miről beszélni...

[ Szerkesztve ]

Sk8erPeter

(#1976) Karma válasza Sk8erPeter (#1975) üzenetére


Karma
félisten

Egyébként eddig még nem láttam olyan Programozás tárgyat, ami programozni tanított volna. Láttam a BME-s Prog1-2-t, láttam fizikusoknak szánt progot (na ez durva volt, feladat: kommentezz végig egy WINAPI-val írt kódrészletet), és köze nincs hozzá. Ledarálják a nyelvet és szevasz, ha korábban nem tudtál imperatívan programozni, itt se szeded össze.

És nem, a hibaüzenetek meg include-ok helyes leírásának semmi köze a helyes programozáshoz szerintem. Papíron meg végképp nem.

A stack overflow más kérdés, ha helyesen elmagyarázták volna, akkor nem lenne probléma ennek a megértésével.

[ Szerkesztve ]

“All nothings are not equal.”

(#1977) Gyuri16


Gyuri16
senior tag

egyetertek mindkettotokkel, amit mondani akartam az az, hogy ha csak papirra programozol akkor nagy sokk er az elso "igazi" programodnal. nalunk prog1-2 ugy zajlott, hogy volt eloadas amin tanar beszelt az elmeleti reszerol + mutatta a programokat. altalaban az eloadason irta a kodot, es kitert a kulonbozo problemakra. aztan volt gyakorlat ami papiron/tablan zajlott. itt nyilvan nem kellett odafigyelni a reszletekre, inkabb a feladat elvi megoldasara. vizsga pedig szamitogepnel volt, es ott elojott az, hogy az emberek alapvetoen keveset programoznak (mert nem kell), nem tudjak leirni adott nyelven a megoldast. erre mondhatjuk, hogy nem nagy gond, viszont kesobb mar nincs kimondottan programozas targy, hanem algoritmusok, adatstrukturak, oprendszerek... ha prog1 nem adja meg azt a tudast, hogy onalloan tudjon mukodopekes programot megirni, akkor ott nagy baj van. ehhez pedig hozzatartozik az, hogy a tanar elvarja a teljes, futtathato megoldasokat.

termeszetesen ha a diaksag nagy resze foglalkozna vele, nem lenne gond, de mivel a legtobbnek csak az a celja, hogy atmenjen a vizsgan (es ezt nehez megakadalyozni) biztositani kell, hogy ertsenek is hozza.

Ha valaki a programozás során a fordító hibaüzeneteiből nem jön rá, hogy azért nem megy a program, mert valamit nem include-olt, akkor az ne akarjon programozással foglalkozni, ne legyen informatikus.
ha ennek megfelelo emberek jarnanak egyetemre, akkor az itteni forumok nagyresze ures lenne. sokszor latom, hogy oldalas valaszokat irsz alapveto dolgokra, amikre egy "jo" informatikusnak magatol ra kellene jonnie

Nem vagyok egoista, csak uborkagyalu!

(#1978) Sk8erPeter válasza Gyuri16 (#1977) üzenetére


Sk8erPeter
nagyúr

Alapvetően szerintem mindannyian egyetértünk. :D
A legjobb egyébként az, ha az ember rengeteget gyakorol egyedül.
Én pl. C++-t prog2-ből akkor kezdtem el megérteni, amikor készítettem a szoftver laborból feladott házimat, amivel extra sokat szarakodtam, hogy a lehető legszebb legyen, szerencsére az ellenőrzésnél a laborvezető srácnak nagyon tetszett a megoldásom, azt mondta, ennél szebben nem igazán lehetett volna megoldani.
Az előadás, a gyakorlatok és a labor is önmagában kevés lett volna, mert tök más, amikor valaki elmagyarázza, hogy mit kell csinálni, és mivel lehet szopni, mintha te magad szívsz annyit egy feladattal, hogy attól már önmagában a fejedbe verődik a megoldás módja.
De ezt nálunk az előadó hangsúlyozta is, hogy rengeteget gyakoroljunk, különben nem fog menni, hiába járunk be szorgalmasan előadásokra.

A tárgyra visszatérve a lényeg egyébként az, hogy a papíron programozáshoz felesleges foglalkozni az include-olásokkal és a csodás hibaüzenetekkel - nálunk pl. prog2-n kifejezetten kihangsúlyozta az előadó, hogy ne szarakodjunk a ZH-n az include-olgatásokkal meg a using namespace-ekkel, mert azt úgysem fogják értékelni, senkit sem érdekel, hogy oda tudok írni minden program elejére két-három mindenképp szükséges sort.

(#1976) Karma: pedig szerintem Szebi előadásai eléggé gyakorlatiasak és érthetőek voltak, nekem kifejezetten tetszettek az órái meg a stílusa. Az volt az egyetlen olyan előadássorozat ebben a félévben (a gyakorlatokon, laborokon kívül), aminél minden órán ott voltam, mert tényleg érdekelt, és követhetőnek tartottam. Sok olyan előadás volt, amire egyszerűen sajnáltam az időt. Viszont Szebinél elég sokat tanultam, főleg az jött be, hogy nem teljesen elszállt idióta programokat vettünk, hanem gyakorlatban is bármikor előforduló programrészleteket beszéltünk meg (az elméleti anyagon túl), hogy mit miért, hogyan kell csinálni.
Azon jót szakadtam, amikor mondta: "a szünet előtt csak egyetlen nagy kérdést szeretnék Önöknek feltenni. Megtalálja-e az egér a sajtot?". :D (ennek az ea-nak a végefelé - backtrack algoritmusok)
Egyébként nekem egyetem előtt közöm nem volt a programozáshoz, mégis itt szedtem össze a tudás nagy részét, persze tudom, hogy még mindig nem tudok semmit az egészről. Persze az sokat segített, hogy rengeteget gyakoroltam magamtól, meg weblapfejlesztés közben is elég sok programozási kérdés merül fel más nyelveknél, így abból is lehet építkezni.

[ Szerkesztve ]

Sk8erPeter

(#1979) bpx válasza Sk8erPeter (#1978) üzenetére


bpx
őstag

egy ember, aki szereti Szebi előadásait? ritka ilyet látni :D
nálunk szakirányon is tart órát (teljesen más témában), ott még rosszabb, mint prog2-n volt :P

(#1980) Sk8erPeter válasza bpx (#1979) üzenetére


Sk8erPeter
nagyúr

Hát bocs, hogy a lelkedbe gázoltam ezzel. :D Biztos Poppe rakás szar órái után nagy volt a kontraszt, hogy nem egy olyan ember beszél, aki még az őskorban tanult programozni. Ja, és szegény Pohl Laci előadásaival hasonlítsd már össze Szebiét... :D
Amúgy szerintem tényleg jók voltak az előadásai, ízlések és pofonok, ha figyeltem, mindent értettem, és meg is maradt. Akkor szerintem nagy gáz nem lehet vele.
Azt nem tudom, szakirányon milyen órákat tart.

[ Szerkesztve ]

Sk8erPeter

(#1981) mobal


mobal
MODERÁTOR

Sziasztok! Lehet valahogy ellenőrizni a scanf -et, hogy helyes e a bemenet? Értem én: "adj meg 2 számot" és ha szöveg a bemenet visszadobja, hogy rossz.

"Ott szimatol a sarkadban vasfogait csattogtatva, minden egyes hétköznapod: kirúzsozott medvecsapda."

(#1982) Jester01 válasza mobal (#1981) üzenetére


Jester01
veterán

Lehet. Ha esetleg megnézed a scanf leírását rögtön látod, hogy visszaadja mennyi mezőt sikerült konvertálni. De arra vigyázni kell, hogy esetleg nem az egész bevitelt használta fel.

Jester

(#1983) Laca 012 válasza Laca 012 (#1936) üzenetére


Laca 012
őstag

Erre akkor senki nem tud valami megoldást? Vagy valaki látott-csinált már hasonló dolgot??
Köszi!

(#1984) zserrbo


zserrbo
aktív tag

Helló!

Szeretném, ha valaki megírna a következő feladatra egy programot. Jövő héten prog alapból CV vizsgám lesz, addig próbálom megérteni a feladatokat.

Paraméterei két karakter tömb. A függvény másolja át a második tömb karaktereit a helyköz és tabulátor karakterek kivételével az elsőbe. Visszatérési értéke az átmásolt karakterek száma.

Amit én csináltam:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

main ()
{
int i;
char tomb1[i];
char tomb2[i];
printf ("\n\nKérek egy szót: ");
scanf ("%c",tomb1);
printf ("\n");
printf ("\n\nKérek egy szót: ");
scanf ("%c",tomb2);
printf ("\n");
for (i=0; i<strlen(tomb1); i++) {

printf("%c",tomb1[i]);
}
system ("PAUSE");
}

Nah ez így nem jó, mert lefagy a program. Igaz a feladat nem írja, hogy töltsem fel a karakter tömböt, de gondoltam kipróbálom aztán kiíratom. Majd jöhetne a másolgatás és a kiíratás után megbizonyosodok, hogy tényleg mit hova másoltam. Ha kérhetem magyarázza el valaki ez hogy nézne ki.

Köszönöm!

Olvasgatom közben itt a hsz-eket. Igen elég siralmas. Sajnos nem volt túl sok programozói tudásom ennek ellenére prog infóra mentem végül mérnök infó helyett. Remélem sikerül ráéreznem és beletanulnom. Nálunk prog alapból a gyak órák semmit nem értek. Vannak, akik nem tanárnak születtek. Tanár elmondta a feladatot, gyerek elkezdte megoldani ha tudta. Majd végül leírta a megoldást a táblára aztán ment is tovább. Aki lemaradt az így járt. Előadások megértéséhez kellett volna egy alapos tudás. Nyáron foglalkozni akarok php-vel és weboldal készítéssel. Már vettem 2 könyvet Webszerkesztés stílusosan: HTMl és CSS , Bevezetés a php5 programozásba 1030 oldal asszem! :D legalább alapos :D Igyekszem behozni a lemaradásom.

[ Szerkesztve ]

(#1985) Sk8erPeter válasza zserrbo (#1984) üzenetére


Sk8erPeter
nagyúr

Érdekes ez a feladat-meghatározás, ha így kezdődik: "Paraméterei két karakter tömb." - minek a paraméterei...? Ki lehet találni, hogy egy függvénynek, de az egész specifikáció elég gyengusz.

Akkor menjünk sorba a programodon:
main ()
ne szokj rá, hogy ezt használod, írd ki explicite a visszatérési értéket:
int main(){
/*...*/
return 0; /* ha nincs hiba*/
}

int i;
char tomb1[i];
char tomb2[i];

Ez meg micsoda? :F Eleve i-nek nincs semmi kezdőértéke, hogy akarod így létrehozni i-vel a tömböt? Mekkora méretű lesz a tömb?

scanf ("%c",tomb1);
Egyetlen karaktert olvasol tomb1 0. indexe helyére...
Használhatnád pl. a getchar() függvényt EOF-ig, vagy ameddig meghatározod, hogy beolvassson (mit adjon meg a felhasználó, amivel jelzi, hogy vége a beadott karaktersorozatnak).

Ezután van egy for ciklusod, amivel ki szeretnéd íratni tomb1-et, de a másolás nincs meg.
Valami ilyesminek kellene szerepelnie a for cikluson belül, persze ha már a többi része jó:
for(i=0;i<strlen(tomb1) && i<strlen(tomb2); i++) /* csak hogy ne indexeljen túl, ha esetleg a tomb1 kisebb méretű tomb2-nél, persze ennek ellenőrzésére más megoldás is van */
{
if(tomb2[i] != '\t' || tomb2[i] != ' ') /* ha nem tabulátor és nem szóköz */
tomb1[i]=tomb2[i];
}

A ciklus végén zárd le lezáró 0-val a tomb1-et.

Ezenkívül ennek az egésznek szerintem külön függvényben kellene lennie, ami két karaktertömböt kap paraméterként, visszatérési értéke pedig az átmásolt karakterek száma. A feladat legalábbis ezt mondja...

"Igaz a feladat nem írja, hogy töltsem fel a karakter tömböt"
És akkor mégis mit akarnál átmásolni, ha nincs feltöltve?

system ("PAUSE");
Ezt felejtsd el! Nem platformfüggetlen, felesleges rendszerhívás.
Használd helyette pl. a getchar()-t...

[ Szerkesztve ]

Sk8erPeter

(#1986) shev7 válasza Sk8erPeter (#1985) üzenetére


shev7
veterán

for(i=0;i<strlen(tomb1) && i<strlen(tomb2); i++)
{
if(tomb2[i] != '\t' || tomb2[i] != ' ')
tomb1[i]=tomb2[i];
}

kerdes: mi lesz a tomb1 4. eleme, ha a tomb2 4. eleme szokoz volt ;)

ket index kell, az egyikkel tomb1-et indexeled, a masikkal tomb2-t.

illetve ezekkel a feltetelekkel mindig bajban vagyok en is de szerintem ez nem jo. && kene || helyett, nem? Mert ez a feltetel mindig igaz.

[ Szerkesztve ]

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

(#1987) Sk8erPeter válasza shev7 (#1986) üzenetére


Sk8erPeter
nagyúr

Úúú basszus, teljesen igazad van, az lemaradt, köszi, hogy szóltál. :R
És igen, vagy (||) helyett és (&&) kellene... :W
Látszik, hogy sietve írtam (eddig nem kapott választ a srác), bocsesz. :B

zserrbo, a for ciklust javítanám, pl. ha van egy i és egy j változód, akkor pl. ilyesmi lenne:

for(i=j=0; i<strlen(tomb1) && i<strlen(tomb2); i++){
if(tomb2[i] != '\t' && tomb2[i] != ' '){
tomb1[j]=tomb2[i];
j++;
}
}

[ Szerkesztve ]

Sk8erPeter

(#1988) cucka válasza Sk8erPeter (#1987) üzenetére


cucka
addikt

Ahogy már korábban írták, a
if(tomb2[i] != '\t' || tomb2[i] != ' '){
feltétel nem lesz jó, || helyett && kell..

mod. ok, közben te is észrevetted :)

[ Szerkesztve ]

(#1989) Gyuri16 válasza Sk8erPeter (#1987) üzenetére


Gyuri16
senior tag

for(i=j=0; i<strlen(tomb1) && i<strlen(tomb2); i++)
helyett inkabb:

for(i=j=0; j<strlen(tomb1) && i<strlen(tomb2); i++)
^

[ Szerkesztve ]

Nem vagyok egoista, csak uborkagyalu!

(#1990) Korcsii válasza Sk8erPeter (#1987) üzenetére


Korcsii
őstag

és akkor return j; jó is a függvény végére...

viszont azt nem teljesen értem, hogy miért kell strlen(tomb1)-et vizsgálni? :F

(#1991) shev7 válasza Korcsii (#1990) üzenetére


shev7
veterán

hat mert ha irsz egy fv-t akkor nem lehetsz biztos abban, hogy a parameterul kapott tombok megfelelo meretuek lesznek, ertsd: a tomb1 eleg nagy ahhoz, hogy tomb2 tartalma beleferjen.

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

(#1992) Karma válasza shev7 (#1991) üzenetére


Karma
félisten

Mondjuk strlen helyett meg lehetne oldani \0 ellenőrzéssel (végülis az strlen is ezt csinálja). Más: a feltételben minden alkalommal újraszámolni az strlent igen nagy pazarlás.

[ Szerkesztve ]

“All nothings are not equal.”

(#1993) Sk8erPeter válasza Karma (#1992) üzenetére


Sk8erPeter
nagyúr

Ez így van, mint említettem, gyors megoldás volt, és közel sem tökéletes.
Legközelebb majd nem írok a topicba, ha épp nincs túl sok időm rá.
Mondjuk az azért mókás, hogy sokszor előfordul, hogy jó darabig senki nem ír választ egy kezdő kérdésre, viszont ha valaki ad egy lehetséges gyorsmegoldást, akkor arra hirtelen mindenki rárepül, mint a dögkeselyűk. :DD
Inkább valaki írjon akkor egy tökéletes megoldást, és akkor túl is van tárgyalva. Nekem nem volt időm átgondolni, leírtam, ami jött. Bocs.

(#1994) Karma: oké, nem húztam én fel magam egyáltalán, csak én is leírtam, ami a szívemet nyomta! :))
Amúgy nagyon kemény, hogy mennyire amatőr feladaton vitázunk, de azért jó móka. :) A kezdeti hsz.-em többi részét (ahol leírom, miért nem jó a srác kódja) tovább tartott megírni, mint magát az alatta lévő kódot, amin most vitatkozunk. :D

(#1995) Gyuri16: igen, közben én is arra gondoltam, hogy tomb1-hez nem feltétlenül lesz jó az strlen. Azt viszont mondtam, hogy zárja le 0-val a ciklus után... :U

[ Szerkesztve ]

Sk8erPeter

(#1994) Karma válasza Sk8erPeter (#1993) üzenetére


Karma
félisten

Nem kell ennyire felszívni, csak segíteni akartam :P

“All nothings are not equal.”

(#1995) Gyuri16 válasza Gyuri16 (#1989) üzenetére


Gyuri16
senior tag

+ ha a tomb1 nincs inicializalva (es miert lenne) akkor a strlen nem jo oda. jobb lesz a sizeof. figyelni kell, hogy az utolso mezot fenntartsd a null bytenak. ez remelem mukodik akkor is, ha nem egyforma meretu a ket tomb (a feladat szerint a tomb a fuggveny parametere, tehat nem bizhatunk benne, hogy eleg nagy):
for(i=j=0; j+1<sizeof(tomb1) && i<strlen(tomb2); i++)
ezutan meg illik a tomb1 vegere rakni egy nullt

Sk8erPeter: mas kodjat kritizalni konyebb mint megirni :) en ezert nem irok altalaban egesz megoldast, hanem inkabb szavakkal korbeirom.

[ Szerkesztve ]

Nem vagyok egoista, csak uborkagyalu!

(#1996) Korcsii válasza Sk8erPeter (#1993) üzenetére


Korcsii
őstag

tegnap éjjel (azaz ma hajnalban) láttam már én is a kérdést de túl sok sebből vérzett, így gondoltam inkább tőlem profibbak magyarázzák el :B

strlen pedig jogos, erre nem is gondoltam...

(#1997) bpx válasza Sk8erPeter (#1993) üzenetére


bpx
őstag

"Mondjuk az azért mókás, hogy sokszor előfordul, hogy jó darabig senki nem ír választ egy kezdő kérdésre, viszont ha valaki ad egy lehetséges gyorsmegoldást, akkor arra hirtelen mindenki rárepül, mint a dögkeselyűk. :DD"

ezt már én is meg akartam egyszer jegyezni poénból, de látom másnak is feltűnt :P

(#1998) shev7 válasza Sk8erPeter (#1993) üzenetére


shev7
veterán

"Mondjuk az azért mókás, hogy sokszor előfordul, hogy jó darabig senki nem ír választ egy kezdő kérdésre, viszont ha valaki ad egy lehetséges gyorsmegoldást, akkor arra hirtelen mindenki rárepül, mint a dögkeselyűk. "

Mert egy majdnem jo megoldast konnyebb kijavitani, mint leirni az egeszet, tulsagosan lusta vagyok :)

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

(#1999) mobal


mobal
MODERÁTOR

Sziasztok!

Van valaki aki jártas a több magok kezelésében? Mennyire bonyolult? Vagy egyszerűen csak forditási paraméter? (Gcc -t használok)

Köszi!

"Ott szimatol a sarkadban vasfogait csattogtatva, minden egyes hétköznapod: kirúzsozott medvecsapda."

(#2000) shev7 válasza mobal (#1999) üzenetére


shev7
veterán

ahogy en tudom:

ha szalakat hasznalsz a programodban, akkor mar csak az oprendszer utemezojen mulik, hogy hogyan pakolja szet tobb magra. Viszont egy szalu program az mindig egy magon fog futni.

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

Copyright © 2000-2024 PROHARDVER Informatikai Kft.