- erkxt: A Roidmi becsődölt – és senki nem szól egy szót sem?
- Luck Dragon: Asszociációs játék. :)
- sziku69: Fűzzük össze a szavakat :)
- Elektromos rásegítésű kerékpárok
- sziku69: Szólánc.
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- MasterDeeJay: Noname 1TB-os SATA SSD teszt
- hcl: MS Office365 Linuxon
- Sub-ZeRo: Euro Truck Simulator 2 & American Truck Simulator 1 (esetleg 2 majd, ha lesz) :)
- Essejó: MultiCooker avagy az elektromos kukta. Ötletek, tippek, tanácsok, receptek.
Új hozzászólás Aktív témák
-
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/ -
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.
-
VaZso
senior tag
válasz
Jester01 #1595 üzenetére
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.
-
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? -
shev7
veterán
válasz
Sk8erPeter #1591 üzenetére
nem veletlen az a break a while cikluson belul... ha a es b ket vegtelen hosszu egyforma string akkor tenyleg vegtelen ciklus lesz...
-
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;
} -
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.
-
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.
-
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 ! -
válasz
Sk8erPeter #1585 üzenetére
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
-
bama
csendes tag
Kösz 3man! de nem jutottam sokkal előrébb a piti kis programomban!!!!!!
-
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.
-
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.
-
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
-
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.
-
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 -
bama
csendes tag
Igen Karma én kérdeztem
De nem házi hatalmas tévedés!!Segits kérlek!!
-
Jester01
veterán
-
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;
} -
bpx
őstag
válasz
Foximaxi101 #1564 üzenetére
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
-
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íthatomElőre is köszönöm.
-
válasz
Jester01 #1562 üzenetére
Poénnak szántam,Beolvas egy fájlt,ami elmenti az agyamba
Direkt nem raktam smiley-t,mert kíváncsi voltam leesik-e. Grabber:\\Head\\Brain.
Köszi azért,próbáltam helyesen megírniON 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.
-
Jester01
veterán
válasz
grabber #1559 üzenetére
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
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?)
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#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;
} -
Jester01
veterán
válasz
LevyZidane #1560 üzenetére
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.
-
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!
-
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);
} -
bpx
őstag
válasz
LevyZidane #1557 üzenetére
egyesével olvasod be az adatokat és adod hozzá a listához
-
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!
-
Jester01
veterán
válasz
Sk8erPeter #1553 üzenetére
Mindenütt számít, úgy hívják operátor precedencia.
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) -
Jester01
veterán
válasz
Sk8erPeter #1551 üzenetére
char* (*helyiertek)[10];
-
Jester01
veterán
válasz
Sk8erPeter #1546 üzenetére
A típust merő gonoszságból direkt hagytam le, hogy legyen min gondolkodni ha valaki akar. De sajnos a te fordítód megmondja
, ott van a hibaüzenetben: char* (*)[10] Ez kiolvasva azt jelenti, hogy olyan pointer ami egy tíz elemű string tömbre mutat. Vagyis gyakorlatilag a romai mátrix egy sorára. És azért adok hozzá 3-at mert visszafelé megyünk benne tehát az utolsó sorral kezdünk. Ha átrendeznénk a sorokat akkor értelemszerűen ez nem is kellene.
-
bpx
őstag
válasz
Sk8erPeter #1546 üzenetére
/ a felső vonal, és azért raktam zárójelbe, hogy összeolvasva egyértelmű legyen hogy mire vonatkozik
egyébként: [link]
-
3man
csendes tag
.
-
Sk8erPeter
nagyúr
Ezt nem értem, ez micsoda?
{"", "M","MM","MMM", "/(IV)", "/(V)", "/(VI)", "/(VII)", "/(VIII)", "/(IX)"}
A végén mik ezek a "/(IV)", "/(V)",, stb.?
Vagy ezeket csak azért tetted oda, hogy "kitöltsék" a tömböt?"még a tízezres/százezreseknek is van római megfelelője"
És az micsoda? Tényleg érdekelne.Egyébként tényleg szebb, tömörebb.
Amúgy minket a pow függvénytől igencsak óva intettek, a következő indokkal:
[link]
"Az se érjen meglepetésként senkit, hogy ha egész szám egész hatványát pow függvénnyel számolja ki, akkor egy halálfejet talál a feladata mellett. 2 az n-ediken-t így számoljuk: ketto_az_n_ediken=1<<n;, nem pedig hatványozással! Ha nem kettő hatványát számoljuk, azt meg lehet oldani szorzással. A pow függvény double értéket ad vissza, ami akkor is lehet pontatlan, ha egész számokat hatványozunk, mert a pow az exp és a log függvények segítségével számol hatványt. Így előfordulhat, hogy ha pl. 8 lenne az eredmény, 7.99999-et ad, és ez int-ként használva bizony csak 7."
___________________________________________________________________(#1545) Jester01: ha az #include <stdlib.h> sort hozzáadom, CodeBlocks akkor is fordítási hibát dob. A helyiertek változónak milyen típust kellene adni (hogy ne dobjon cannot convert `char* (*)[10]' to ... kezdetű hibát)?
fputs((*helyiertek)[d.quot], stdout); sorra pedig ezt a hibát adja:
invalid type argument of `unary *',
persze ha változtatok a típusdeklaráción, akkor más jellegű hibát ad.Amúgy még ez a rész számomra nem tiszta:
helyiertek = romai + 3,
a romai változó egy karaktertömb, ami tárolja a római számokat, most annak a 0. eleméhez miért adsz hozzá 3-at? -
bpx
őstag
válasz
Sk8erPeter #1542 üzenetére
a teljesség igénye nélkül:
char* romai[4][10] = {
{"", "I","II","III","IV","V","VI","VII","VIII","IX"},
{"", "X","XX","XXX","XL","L","LX","LXX","LXXX","XC"},
{"", "C","CC","CCC","CD","D","DC","DCC","DCCC","CM"},
{"", "M","MM","MMM", "/(IV)", "/(V)", "/(VI)", "/(VII)", "/(VIII)", "/(IX)"}};
int arab, szamjegy;
printf("Az arab szam: ");
scanf("%d",&arab);
for(int helyiertek = 3; helyiertek >= 0; helyiertek--)
{
szamjegy = (int)(arab / pow(10.0, helyiertek));
printf("%s", romai[helyiertek][szamjegy]);
arab -= (int)(szamjegy * pow(10.0, helyiertek));
}még a tízezres/százezreseknek is van római megfelelője, de azt most hagyjuk
-
Karma
félisten
válasz
Sk8erPeter #1542 üzenetére
Egy char*** a szövegek tárolására, melyet a szamjegy-gyel indexelsz (persze 0-ra redukálva) okosan, így nem kell minden egyes számjegyhez if-et írni?
-
cucka
addikt
válasz
Sk8erPeter #1540 üzenetére
Akkor már nem tömörebb (persze nem tökéletes) az enyém?
..és még mindig nem eléggé tömör.
-
Sk8erPeter
nagyúr
válasz
Jester01 #1539 üzenetére
Mindegyikben igazad van.
Késő volt
Köszi, hogy szóltál!
A bemeneti adatok ellenőrizgetésével azért nem foglalkoztam, mert most csak a program megírására helyeztem a hangsúlyt, persze ettől függetlenül szükséges.
Amúgy ahogy teszteltem, jól működik a progi, azt csinálja, amit kéne."Egyébiránt pár oldallal korábban már volt itt ilyen kód
"
Most rákerestem, erre gondoltál? Akkor már nem tömörebb (persze nem tökéletes) az enyém? -
Jester01
veterán
válasz
Sk8erPeter #1538 üzenetére
Elfelejtetted inicializálni a romai tömböt. Márpedig strcat hívása ilyen esetekben rosszat jelent. Nem ellenőrizted, hogy a scanf-nek sikerült-e beolvasni valamit egyáltalán (persze azt sem, hogy esetleg csak egy része volt értelmes a bemenetnek). Valamint hiányzik egy return 0; a végéről.
Egyébiránt pár oldallal korábban már volt itt ilyen kód
-
Sk8erPeter
nagyúr
Na, most eszembe jutott, hogy ha már volt szó róla, gyakorlásként gyorsan összecsapom az arab számból római számba átváltó programot, bocs, ha nem túl szép megoldás, de most kissé késő van, és túl gyorsan csináltam, így szebbre most nem futotta.
Holnap még úgyis eszembe fog jutni ezer dolog, amit sokkal szebben lehetett volna csinálni, de Ti is szólhattok ezért.
(A méretmegadásoknál nem szarakodtam túl sokat, egyből a végső sztringnek 100-at adtam, az biztos elég.)
// Arab számból római szám
#include <stdio.h>
#include <string.h> /* a strcat miatt */
int main(){
int arab, temp, szamjegy;
char romai[100];
char egyesek[][10] = {"I","II","III","IV","V","VI","VII","VIII","IX"};
char tizesek[][10] = {"X","XX","XXX","XL","L","LX","LXX","LXXX","XC"};
char szazasok[][10] = {"C","CC","CCC","CD","D","DC","DCC","DCCC","CM"};
char ezresek[][4] = {"M","MM","MMM"};
printf("Az arab szam: ");
scanf("%d",&arab);
if(arab<4000)
{
temp=arab;
szamjegy=0;
while(temp>0)
{
temp/=10;
szamjegy++;
}
if(szamjegy==4)
{
strcat(romai,ezresek[arab/1000-1]);
arab-=(arab/1000)*1000;
szamjegy--;
}
if(szamjegy==3)
{
strcat(romai,szazasok[arab/100-1]);
arab-=(arab/100)*100;
szamjegy--;
}
if(szamjegy==2)
{
strcat(romai,tizesek[arab/10-1]);
arab-=(arab/10)*10;
szamjegy--;
}
if(szamjegy==1)
{
strcat(romai,egyesek[arab-1]);
}
printf("A romai szam: %s\n", romai);
}
else printf("\n4000 alatti szamot adj meg!");
getchar();
} -
nepszter1
addikt
1. feladat. Legyen adott az alábbi függvény: fx=
Írjon C programot, mely kiszámítja a függvény értékeit egy adott intervallumban egymástól egyenlő távolságokra levő x változókra! A program kérje be az intervallum kezdő és végpontját, valamint az osztásközök számát, és írja ki az osztópontokban (beleértve a kezdő és végpontot is) kiszámított függvényértékeket táblázatos formában. Azokban a pontokban, ahol f(x) nincs értelmezve, a program küldjön hibaüzenetet!
A feladathoz készítsen jegyzőkönyvet, mely tartalmazza a tantárgy nevét, a hallgató nevét és tankörét, a feladat számát, a feladatkiírás szövegét, a programban alkalmazott változók jegyzékét, a program forrásszövegét és teszteredményt a [0,1] intervallumra vonatkozóan, egytizedenként véve az osztópontokat! -
cucka
addikt
válasz
cellpeti #1532 üzenetére
Ez nem szapulás. Senki nem született úgy, hogy tudott programozni, meg lehet ezt tanulni meg hasonlók. Viszont ha kezdő szintű kérdéseket teszel fel a php topikban és nem tudsz egyedül kitalálni egy decimális->római szám konvertáló algoritmust, akkor talán még nincs itt az ideje annak, hogy pénzért bármilyen programozói munkát vállalj.
-
bpx
őstag
válasz
cellpeti #1529 üzenetére
előbb leírták a tömbös megoldás elvét
na most ha csak a kiírás a feladat, akkor még strcopy-zni sem kell, rögtön a vizsgálat idejében ki lehet írni az adott részletet a képernyőretömbbel ez így nézne ki:
int x, szam;
...
// szam-ot bekered
...
x = szam % 1000;
printf("%s", ezresek[x]);
szam -= x*1000;
x = szam % 100;
printf("%s", szazasok[x]);
szam -= x*100;
...látszik rajta, hogy még ciklusba is szervezhető, elég egyszer leírni
tömb nélkül viszont ahelyett, hogy azt mondanád hogy ezresek[x], kell egy switch x értéke szerint 10 ággal...
szerk: most látom hülyeséget írtam, mert a % az maradék, hirtelen a maradék nélküli osztásra gondoltam...
mind1, az adott helyiértéken álló számot kell megállapítani az a lényeg
-
cellpeti
nagyúr
válasz
Sk8erPeter #1531 üzenetére
itt csak szapulni tudjátok az embert? Te pl mindegyik topikba ezt teszed az emberekkel. Jó neked,hogy ilyen kurva okos vagy!
-
Sk8erPeter
nagyúr
"egyébként nem értem hogy vállalsz te php-t, ha egy ilyen feladat nem megy magadtól"
Pont ugyanezen voltam kiakadva, PHP topicban ennél durvább alap kérdést tett fel (persze szokás szerint arra is b@szott válaszolni
)...
Érdekes, amikor ennyire alapdolgokon elakadtam, eszem ágába nem jutott volna vállalni komolyabb munkát PHP-ben... Na jó, flame off
-
Gyuri16
senior tag
válasz
cellpeti #1524 üzenetére
itt egy magyar flash amivel lehet jatszani:
[link]valahogy igy programoznam:
arab -> romai
max 3xxx-ig csinalom (mert tovabb nem tudom hogy a romaiak hogyan szamoltak).csinalsz 4 tombot (egyeseknek, tizeseknek, szazasoknak es ezreseknek), kb igy:
egyesek: I,II, ...,IX
tizesek X,XX,XXX,XL,L,LX,LXX,LXXX,XC
szazasok C,CC,CCC,CD,D,DC,DCC,DCCC,CM
ezresek M,MM,MMM
szoval mesz a szamjegyeken sorban, mondjuk a legkissebtol a legnagyobbig.
megnezed hogy az egyeseken mennyi van (ez ugye szam % 10), a tizesek tombbol azon az indexen levo stringet megjegyzed (beleteszed az eredmenybe)
aztan tizesek: a tizesek tombben a megfelelo indexen levo stringet hozzamasolod ahhoz amit elobb megjegyeztel
etc..
igy a vegere kijon az egesz romai szamodna kozben nezem hogy vannak roviditett verziok is, pl 1998 lehet MCMXCVIII, vagy MIIM, de akar IIMM, ezekkel nem foglalkozom
-
bpx
őstag
-
Gyuri16
senior tag
válasz
cellpeti #1523 üzenetére
jo, ez mas dolog, attol fugg a tanar mennyire veszi komolyan az ilyen formalis dolgokat. nekunk is volt projektunk, ahol azt mondta, hogy levon pontokat, ha nem a standard szerint indentalunk. c-ben ha minden igaz a prototipusokat kulon fajlban szokas definialni *.h, es ezeket includolni a fajl elejen. ha pedig ugyanabban a fajlban akarod, akkor lehet hogy igy egyeseknek jobban tetszik, nem tudom (c-ben eleg kezdo vagyok, de szabadidomben probalok rajta valtoztatni
)
ami meglep, hogy egy egyetemen megcsinaljak veled, hogy nem hasznalhatsz olyat amit te onszorgalombol megtanultal. nalunk senkit nem erdekel, hogy a feladatot ugy oldod e meg ahogy az tanitva volt, vagy mashogy (termeszetesen csak ha jol csinalod)
-
Gyuri16
senior tag
válasz
cellpeti #1521 üzenetére
legyszives aruld el milyen iskola ez, ha nem akarod kiirni privatban is lehet (nyugodt lehetsz nem fogom senkinek tovabbadni, csak erdekel. egyetemista vagyok, es nalunk inkabb orulnek ha tobbet tudsz mint ami az anyag, nem hogy tiltanak)
hogy legyen valami on is: arab-romai konvertacion kicsit gondolkozz magad, neha jobb rajonni hoszabb ido alatt egyedul.. legalabb kezdd el az alapokat, ird le papirra, hogy hogyan csinalod te manualisan, es probalj szamitogepkent gondolkozni, tehat mik azok a lepesek amik egymast kovetik, es milyen feltetelek mellett
-
cellpeti
nagyúr
Azért,mert én nekem a vizsgán is csak annyi tudással programozhatok. Lehet,hogy könnyebb,gyorsabb lenne megoldani mással,de azért bukta jár.
Még egy kérdés,hogy lehet azt megcsinálni,megint csak Prog I. tudással,hogy a programba beírok egy arab számot(pl.: 1000) és ennek írja ki a római megfelelőjét?
-
cellpeti
nagyúr
üdv nektek!
Olyan kérdésem lenne,hogy mivel tudom azt megcsinálni,hogy pl nyomok egy "T" betűt és kidobjon nekem egy szöveget!
Prog I.-el kéne megcsinálni,vagyis printf-et lehet használni,meg switch case-t!
-
Lakers
tag
A minxy.x és a minxy.y és a többieket, hogyan kell deklarálni? A programnak egy kis részlete volt megadva és tovább magunknak kellett megcsinálni. Nagyon nem tetszik a fordítonak és fogalmam sincs, hogy mit vétettem.
#include "graphics.h"
#include <math.h>
#define R 50;
double f(double x){
return sin(x)/x;
}
typedef struct pont
{
double x,y;
} pont;
pont2d w2v(pont2d pont, pont2d minxy, pont2d maxxy, pont2d minuv, pont2d maxuv)
{
return (pont2d)
{
(pont.x-minxy.x)*(maxuv.x-minuv.x)/(maxxy.x-minxy.x)+minuv.x,
(pont.y-minxy.y)*(maxuv.y-minuv.y)/(maxxy.y-minxy.y)+minuv.y
};
}
int main(){
int gd, gm;
gd=VGA;
gm=VGAMED;
initgraph(&gd,&gm,"");
int minxy, minxx, maxxy, maxxx, minuv, maxuv, vmin, vmax;
int mx, my;
mx=getmaxx();
my=getmaxy();
double i;
minxy.x=-(4*M_PI) *R;
minxy.y=(4*M_PI) *R;
maxxy.x=mx;
maxxy.y=my;
minuv.x=mx/4;
maxuv.x=mx/4 * 3;
vmin=my/4;
vmax=mx/4 * 3;
rectangle(minuv.y, minuv.y, maxuv.x, maxuv.y);
line (umin+umax)2, vmin, (umin+umax/2), vmax);
line (umin, (vmin+vmax)/2, umax(vmin+vmax)/2;
setcolor(6);
pont.x=-(4*M_PI) *R +mx/2;
pont.y=(f(-(4*M_PI))*R +my/2;
moveto(-(4*M_PI)*R, f(-(4*M_PI);
for(i=-(4*M_PI); i <= (4*M_PI); i++)
pont.y=f(i) * R + my /2;
pont.x=f(i) * R + mx /2
x=(x-xmin)(umax-umin)/(xmax-xmin)+umin;
y=(y-ymin)(vmax-vmin)/(ymax-ymin)+vmax;
lineto(pont.x,pont.y);
}
getch();
closegraph();
return(0);
}
} -
Lakers
tag
Sziasztok van egy kis problémám, grafika C. A program nem mást csinál, mint egy hermitív ívet/görbét képezz le. Azt mondta a gyakvezér, hogy csak egyet kell megírni, aztán csak mátrix cserét kell végrehajtani, hogy megkapjuk a beizer vagy b-spline görbét.
nos én ivrajzolo(pontok, M, -1, 2); ezt ivrajzolo(pontok, M, 0, 1);-re modósítottam
de nem igazán látszik a szépsége...MATRIX M = {{
{-1.0 / 6.0, 0.5, -1.0 / 3.0, 0.0},
{0.5, -1.0, -0.5, 1.0},
{-0.5, 0.5, 1.0, 0.0},
{1.0 / 6.0, 0.0, -1.0 / 6.0, 0.0}}} vagy pedig ezt a részt is másra kéne módosítanom?# include "graphics.h"
# include <conio.h>
# include <math.h>
# include <stdio.h>
typedef struct pont
{
double x,y;
} PONT;
typedef struct{
float t[4][4];
}MATRIX;
void ivrajzolo (PONT G[4], MATRIX M, float a, float b){
float lepeskoz = (b - a) / 100;
PONT C[4] ={0,0, 0,0, 0,0, 0,0};
for(int i = 0; i < 4; i++)
for(int j = 0; j < 4; j++){
C[i].x += G[j].x * M.t[j][i];
C[i].y += G[j].y * M.t[j][i];
}
PONT Q;
float t= a;
Q.x = C[0].x * t*t*t + C[1].x * t*t + C[2].x * t + C[3].x * 1;
Q.y = C[0].y * t*t*t + C[1].y * t*t + C[2].y * t + C[3].y * 1;
moveto(int(Q.x),int(Q.y));
for ( t=a ; t < b ; t+= lepeskoz ){
Q.x = C[0].x * t*t*t + C[1].x * t*t + C[2].x * t + C[3].x * 1;
Q.y = C[0].y * t*t*t + C[1].y * t*t + C[2].y * t + C[3].y * 1;
lineto(int(Q.x),int(Q.y));
}
}
int main()
{
int gd,gm;
initgraph(&gd,&gm,"");
gd=VGA;
gm=VGAMED;
int page=0;
int ap;
int i=0;
PONT pontok[4] = {290,300,330,200,430,130,500,200};
MATRIX M = {{
{-1.0 / 6.0, 0.5, -1.0 / 3.0, 0.0},
{0.5, -1.0, -0.5, 1.0},
{-0.5, 0.5, 1.0, 0.0},
{1.0 / 6.0, 0.0, -1.0 / 6.0, 0.0}}};
for (;;)
{
setactivepage(page);
cleardevice();
for ( i=0 ; i<4 ; ++i)
circle(integer(pontok[i].x),integer(pontok[i].y),3);
ivrajzolo(pontok, M, -1, 2);
/* Egerkezeles */
if (!balgomb) ap = getactivepoint((pont2d*)pontok,4,5);
if (ap >= 0 && balgomb)
{
pontok[ap].x = egerx;
pontok[ap].y = egery;
}
/* Egerkezeles vege */
setvisualpage(page);
page = 1-page;
if (kbhit())
break;
}
closegraph();
return(0);
} -
eXodus
őstag
válasz
Sk8erPeter #1511 üzenetére
"Felsőbbévesek mondják mindig,"
Hát jah pl én(most végzek)
1-2 tantárgyra (kredit nélkül) bejárttam önszorgalomból, +gyakorlás, de csak arra való h el ne felejtsem ami hasznosat megtanultam.Az utolsó mondatoddal teljesen egyetértek. aki suli mellett dolgozik és szakmájába vág, az szerencsésnek érezheti magát.
-
Sk8erPeter
nagyúr
"Egyébként mi értelme van az MScnek?" Pont ezért mondtam, hogy előbb elvégzem az alapképzést, elkezdek melózni, és majd meglátom, kell-e az egyáltalán. Közel sem biztos, hogy szükség lesz rá, mivel ez ismét csak egy papír, amivel kitörölheted a seggedet, ha nincs mögötte releváns háttértudás. Ugyanez igaz a BSc-s alapképzésre is. Felsőbbévesek mondják mindig, hogy az egyetemen lényegében semmit nem lehet megtanulni, aminek gyakorlati hasznát veszed, legfeljebb az elméleti hátteret adja meg, de ahol igazán fejlődni lehet, azok a szakkörök, meg különböző szakprogramok, amiken fakultatív módon részt lehet venni egyetemi órák helyett/után, de persze megint felmerül a probléma, hogy ki a francnak van mindkettőre energiája.
-
eXodus
őstag
válasz
Sk8erPeter #1507 üzenetére
Egyébként mi értelme van az MScnek? (Bár a BMEt nem ismerem.) De kb ugyan az lehet mint BSc-n, az a tatnárgy amit szeret az ember hamar letudja, és csak a "szívás" marad. Ott is gonolom meglesz ez: "egyszerűen nincs rá időm a rengeteg tantárgy mellett." Maximum csak kicsit jobb a hasznos/haszontalan tantárgyak aránya. Ami pedig kicsit is érdekes, azt elfelejti az ember...
Mellesleg én infós középsuliból mentem egyetemre. Kb semmi hasznom nem volt belőle.
-
cellpeti
nagyúr
Üdv!
A NetBeans-be lehet C-t programozni,ha igen,valaki segítsen legyenszíves,hogy hogyan lehet!
-
Sk8erPeter
nagyúr
Mondjuk azt megértem, hogy meló mellett már rohadtul nincs kedved még este leülni tanulni, amikor nap végére úgy érzed magad, mint akinek kiszívták az agyát...
(Legalábbis amikor én sokat melóztam egymás után (mondjuk igaz, a melónak köze nem volt az informatikához), akkor kábé ilyen voltam nap végére...
)
Egyelőre úgy vagyok vele, hogy elvégzem a BSc-t, és mindenképp kipróbálom magam a munkaerőpiacon, aztán majd meglátom, kell-e az MSc, vagy sem. Vagy a legjobb lenne, ha munkáltató támogatná majd egy kis ott töltött idő után a továbbtanulásomatAmúgy visszatérve C-re, nekem az a bajom a "dolgok mögé nézéssel", hogy egyszerűen nincs rá időm a rengeteg tantárgy mellett. Tök szívesen gyakorolnék is rengeteget programozásból, meg foglalkoznék még sok egyébbel, de valahogy képtelen vagyok BME mellett beosztani az időmet úgy, hogy ALAPOSAN, és ne csak gyorsan, felületesen tanuljak meg mindent...
Ilyen szempontból igencsak hátrányos szerintem ez a tempó, amit itt diktálnak. Persze a májereknek, akiknek a tudást már középsuliban a fejükbe verték, jóval könnyebb dolga van.
Nekem a középsuli konkrétan a szak szempontjából szart se ért (humán tagozat
).
-
Karma
félisten
válasz
Sk8erPeter #1503 üzenetére
Gyakoroltam, meg a dolgok mögé próbálok nézni sűrűn
Mondjuk nem mondanám, hogy mestere vagyok a dolgoknak, a szabványos C++-t például igencsak kimosta a Symbian belőlem
Ami egyébként mindig friss élmény, ugyanis szinte mindennap használom - egyetem mellett/egyetemen keresztül dolgozom elsősorban Symbian programozással.
Egyébként MSc elsőéves vagyok, és csak azért félig, mert egyrészt sikerült ezt a félévet félvállról vennem (
), másrészt nem igazán van hangulatom az egészhez már.
Apropó Symbian, célszerű elkerülni, ha az ember nem szereti a fájdalmat. Én nem voltam rá felkészülve, de hamar hozzászoktam azóta
. Az mondjuk biztos, hogy egy ilyen korlátolt és korlátozott környezetben dolgozás kialakítja az ösztönöket a korrekt memóriahasználatra például.
-
cellpeti
nagyúr
Sziasztok!
be akarok kérni egy rendszámot,ami ugye 7 karakterből áll
xxx-yyy
Hogyan tudom leellenőrizni,hogy 0.karakter betű-e?
isalpha,ugye?
if (!isalpha(rendszam[0]) {printf("Rossz adat!");} => valahogy így?
-
Sk8erPeter
nagyúr
Köszi a magyarázatot, ezt mondjuk biztos jobban meg fogom érteni, amikor a C++-t tanulom.
Te egyébként hogyan tanultad meg ilyen alaposan a nyelve(ke)t? Mert én mondjuk attól függetlenül, hogy mondjuk meg tudok oldani pár programot (ha meg tudok), a hátterével ilyen szépen nem vagyok tisztában, csak úgy nagyjából...
Amúgy programozóként is dolgozol, hogy ilyen frissen élnek az emlékek?
(ha nem baj, hogy kérdezem) Persze gondolom az évek meg a tapasztalat... Ja, de most jut eszembe, hogy írtad, hogy "Tudom hogy VIK-en mi a helyzet, én is informatikus-hallgató vagyok (félig)", akkor még mindig BME-s vagy? Hogy érted, hogy félig informatikus hallgató?
-
Jester01
veterán
Tipikus x86 fordító esetén a 32 bit és a 64 bit mód között csak a long más. A char, short, int, float, double az ugyanaz. Ahogy a kollega említette, a limits.h és a float.h megmondja neked a határokat. Egészeket először long-ba olvasd be az strtol függvénnyel. Itt a hibakezelés megmondja nem túl nagy-e a szám vagy van-e vele más baj. Ezután a limits.h alapján már tudod ellenőrizni belefér-e a célváltozóba. Hasonlóan a tizedestörtekre az strtod függvénnyel indulva. Szerintem
-
VaZso
senior tag
Ú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!
- iKing.Hu - Motorola Edge 50 Ultra - Nordic Wood - Használt, karcmentes
- Csere-Beszámítás! Sapphire Pure RX 7700XT 12GB GDDR6 Videokártya! Bemutató Darab!
- ÁRGARANCIA!Épített KomPhone i5 13400F 16/32/64GB RAM RTX 5070 12GB GAMER PC termékbeszámítással
- HPE Aruba PoE+ L3 switch raktárról azonnal elérhető!
- LG 42C3 - 42" OLED EVO - 4K 120Hz 0.1ms - NVIDIA G-Sync - FreeSync Premium - HDMI 2.1 - A9 Gen6 CPU
Állásajánlatok
Cég: PC Trade Systems Kft.
Város: Szeged
Cég: Promenade Publishing House Kft.
Város: Budapest