- OLED TV topic
- Nagyon erős ajánlattá kezd válni a SteamOS
- Házi barkács, gányolás, tákolás, megdöbbentő gépek!
- Milyen billentyűzetet vegyek?
- AMD K6-III, és minden ami RETRO - Oldschool tuning
- Melyik tápegységet vegyem?
- Milyen processzort vegyek?
- Mini-ITX
- AMD Navi Radeon™ RX 9xxx sorozat
- Milyen egeret válasszak?
Aktív témák
-
Tottu
senior tag
Azt akarom elérni, hogy egy file-ból beolvasson egy (előjeles) számot. Ez a szám max 100 jegyű lehet. Úgy akartam megcsinálni hogy a tömb első indexe a szám előjele a 2. indexe pedig maga a szám.
Még nem foglalkoztunk long típusokkal, ezért is írtam így. %d helyett akkor melyiket használjam?
A fileban így vannak a számok ill. a műveletek:
23
+
-4
=
És így mindig meg kell vizsgálni az elsp karaktert hogy az ' - ' -e mert ha nem az akkor pozitív a szám. -
Jester01
veterán
Azt sem értem mit is akarsz csinálni
Az fgets mindig lezárja 0-val a beolvasott stringet, ha 1-et adsz át akkor semmit nem fog olvasni. Gondolom fgetc-t akarsz ott használni.
Az eredmeny[0] -ba + vagy - karakterkódja kerül az eredmeny[1]-be meg a szám???
És miért csak a negatív számokat olvasod be?
Arról nem is beszélve, hogy long típust %d-vel akarsz kiírni...
MOD: plusz a beolvasásnál is %d-vel olvasol long-ba, vagyis ha a long típus nagyobb mint az int (64 bites gépen pl.) nem lesz inicializálva a felső 4 byte.
[Szerkesztve] -
Tottu
senior tag
Elkezdtem ujra egy feladatot, de vmi nem stimmel a beolasással:
#include <stdio.h>
#include <string.h>
FILE *fbe , *fki;
int main (){
long int eredmeny[2] , kov_szam[2];
int i;
char elojel[1] , muv[1];
fbe = fopen(''be.txt'',''r'');
fki = fopen(''ki.txt'',''w'');
fgets(elojel,1,fbe);
if (elojel[0] == '-'){
eredmeny[0]= '-';
fscanf (fbe , ''%d'' , &eredmeny[1]);
} else {
eredmeny[0]= '+';
}
printf (''%d%d'',eredmeny[0],eredmeny[1]);
scanf(''%d'',&muv);
fclose (fbe);
fclose (fki);
return 0;
}
Az benne a bibi, hogy fordítva olvassa be a számokat: pl.: 234 helyett 432. -
Jester01
veterán
Valamelyest a te módszerednél maradva úgy írtam át a progid, hogy az act mindig a következõ emberre mutasson (induláskor az elsõre aki a 0 indexû), ekkor ehhez mindig (M - 1)-et kell hozzáadni. Ezzel a módosítással az 5 7 paraméterekre a 2 5 1 3 4 eredmény adódik ami remélhetõleg jó.
A számítási ciklus nekem ilyen lett:
while (done < N)
{
act += M - 1;
if (act >= x)
{
act = act % x;
}
eh[done++] = szamok[act];
if (act == x - 1)
{
/* ha az utolso volt, akkor nem kell mozgatni a tombben */
/* es a kovetkezo az elso lesz */
act = 0;
} else {
/* ha nem az utolso, akkor a tovabbi elemeket eggyel visszahuzzuk */
/* es a soron kovetkezo elem ezaltal ismet az act indexen lesz */
memmove(szamok + act, szamok + act + 1, (x - act - 1) * sizeof(int));
}
x--;
}
Az elõzõ soremeléses megjegyzésem kicsit módosítom. Nyilván úgy lesz jó, ha a kiíró ciklus eggyel rövidebb és az utolsó elemet külön írod ki. Így megtakarítasz egy if-et a ciklusban ami úgyis csak az utolsó elemre lenne igaz.
Ha nekem kellett volna megoldani ezt a feladatot, akkor valószínûleg nem ezt az utat választom, hanem egy tömbben egyszerûen azt tartom nyilván, hogy az ember él-e még. Így kicsit bonyolultabb lesz ugyan a következõ index megkeresése, de cserébe megtakarítunk egy csomó memóriamásolást.
A végére még egy stilisztikai megjegyzés: nem szerencsés keverni az angol és a magyar elnevezéseket/megjegyzéseket, válaszd ki az egyik nyelvet és következetesen használd azt. -
Jester01
veterán
Beszédesebb változónevek és néhány komment elkelne.
Valamit az ''5 7'' esetre várt jó illetve a kapott eredmény.
Ha jól látom x lenne a még életben lévõ emberek száma, a szamok tömb pedig az emberek eredeti sorszámát tartalmazza ahonnan mindig törlöd azokat akik sorra kerültek.
Ezt a részt itt nem értem:
if (act>=x)
{
act=act%x;
for (i=0;i<x;i++)
for (j=0;j<done;j++)
if (szamok==eh[j])
{
for (k=i;k<N;k++) szamok[k]=szamok[k+1];
x--;
}
act=act%x;
}
Az eredmény kiírásánál pedig egyszerûbb lenne \n nélkül kiírni az összes számot majd a végére egy \n magában. De ez csak apróság.
Szerintem lehetett volna békésebb szöveget keríteni a feladathoz
[Szerkesztve] -
Beri
addikt
Hello!
Segítséget szeretnék kérni. Épp egy feladattal ügyködök, de valami miatt néha hibás eredményt dob a progi...
Tehát a feladat:
Kivégzéssorrend megállapítása
N ember helyezkedik el egy kör mentén. Az elsőtől elindulva minden M-ediket lelövik. A számlálásban csak az élők vesznek részt, a számolást a kivégzett utáni embernél folytatjuk. Készíts olyan programot,
ami adott N és M esetén kiírja a kivégzések sorrendjét.
Bemenet
A bemenet két egész szám, N és M egy szóközzel elválasztva (1 < N < 255; 1 < M < 32767).
Kimenet
A kimenet a kivégzettek sorszáma legyen (1-től indulva), egy-egy szóközzel elválasztva. Az utolsó
kivégzett után egy újsor karakternek kell következnie.
Pl:
Bemenet: 10 2
Kimenet: 2 4 6 8 10 3 7 1 9 5
Erre ezt sikerült összehozni:
#include <stdio.h>
#include <math.h>
int main()
{
FILE *bef,*kif;
int szamok[255];
int eh[255];
int i,j,k,x,act,M,done,N;
bef = fopen (''be.txt'',''r'');
kif = fopen (''ki.txt'',''w'');
fscanf(bef,''%d %d\n'', &N, &M);
done=0;
act=-1;
x=N;
for (i=0;i<=N;i++) szamok=i+1;
while (done<N)
{
act += M;
if (act>=x)
{
act=act%x;
for (i=0;i<x;i++)
for (j=0;j<done;j++)
if (szamok==eh[j])
{
for (k=i;k<N;k++) szamok[k]=szamok[k+1];
x--;
}
act=act%x;
}
eh[done++]=szamok[act];
}
for (i=0;i<done;i++)
if (i<(done-1))
fprintf(kif,''%d '', eh);
else
fprintf(kif,''%d\n'', eh);
fclose(bef);
fclose(kif);
return 0;
}
A progi pl. 5 7 bemenet esetén ad rossz kimenetet. Előre is köszönöm ha valaki segít rajtam... -
-
_lupin_
csendes tag
Az nem véletlenül fordul, szabvány szerint írhatsz int main()-t is. (99-es szabány)
[link]
Beidézem az idevágó részt:
main is the only function that may portably be declared either with zero or two arguments. (The number of other functions’ arguments must match exactly between invocation and definition.)
This special case simply recognizes the widespread practice of leaving off the arguments to main when the program does not access the program argument strings. While many implementations support more than two arguments to main, such practice is neither blessed nor forbidden by the Standard; a program that defines main with three arguments is not strictly
conforming
szerk: a copy-zás javítás
[Szerkesztve] -
Jester01
veterán
Nem, az csak véletlenül jó, mert alacsony szinten a C calling convention szerint a hívó és nem a hívott veszi le a paramétereket a verembõl. Induláskor a main mindenképp megkapja az említett 2 paramétert is (nézd meg debuggerrel). Szintén a calling convention miatt mûködik a void main is, ugyanis a visszatérési érték egy regiszterben van, amiben ígyis-úgyis lesz valami szemét.
int main()
{
return 0;
}
$ gdb a.out
(gdb) br *main
Breakpoint 1 at 0x8048374: file t.c, line 2.
(gdb) r
Starting program: /var/tmp/a.out
Breakpoint 1, main () at t.c:2
2 {
(gdb) x/x $esp+4
0xbf9714d0: 0x00000001 Ez itt az argc
(gdb) x/x $esp+8
0xbf9714d4: 0xbf971544 Ez itt az argv
(gdb) p *(char**)0xbf971544
$1 = 0xbf971b47 ''/var/tmp/a.out'' Ez meg az argv[0], vagyis a prog neve -
Jester01
veterán
Ha már ellenőrzés van benne, akkor beker == 0 helyett <= kellene. Másrészt ha a be.txt-ben nem szám van, akkor a beker változó értéke inicializálatlan lesz és így valami véletlenszerű számot fog kiadni. Szóval még a fscanf visszatérési értékét is ellenőrizni kellene. És akkor még nem is beszéltünk az olyan bemenetről, ami ugyan számmal kezdődik, de az egész nem értelmezhető számként (pl. ''1alma'').
Mondjuk a feladatkiírás szerint ezek az ellenőrzések nem szükségesek. -
_t0Mi_
aktív tag
Na sziasztok megint! Köszi a segítségeket, sikerült elérnem a max pontot, úgyhogy a program mostmár elviekben helyesen működik! Akit érdekel itt van:
[OFF][
#include <stdio.h>
#include <stdlib.h>
main(){
FILE *be;
FILE *ki;
int beker;
be=fopen(''be.txt'', ''r'');
ki=fopen(''ki.txt'', ''w'');
fscanf(be, ''%d'', &beker);
int i;
int szamok[]={1000,900,500,400,100,90,50,40,10,9,5,4,1};
char* jelek[]={''M'',''CM'',''D'',''CD'',''C'',''XC'',''L'',''XL'',''X'',''IX'',''V'',''IV'',''I''};
if(beker >= 4000){
fprintf(ki, ''\n'');}
else if(beker == 0){
fprintf(ki, ''\n'');}
else{
for (i=0;i<(sizeof(szamok)/sizeof(int));i++){
while (beker>=szamok[ i ]){
fprintf(ki, ''%s'', jelek[ i ]);
beker=beker-szamok[ i ];
}
}
fprintf(ki, ''\n'');
}
fclose(be); fclose(ki);
return 0;
}
Köszi mindenkinek mégegyszer! -
dabadab
titán
válasz
Forest_roby #84 üzenetére
Ket eszrevetelem lenne:
1. int main() (definicio szerint, az implicit tipusmegadas meg a hetvenes evekben kiment a divatbol)
2. illene valami hibakezelest beletenni, mivel ha nem sikerult megnyitani a file-okat, akkor NULL pointereket probal meg hasznalni es elszall, ami csunya dolog, szoval vmi ilyesmi kellene:
be = fopen(''be.txt'', ''r'');
if ( NULL == be ) {
fprintf(stderr,''Nem lehet megnyitani a be.txt-t!\n'');
return 1;
}
ki = fopen(''ki.txt'', ''w'');
if ( NULL == ki ) {
fprintf(stderr,''Nem lehet megnyitani a ki.txt-t!\n'');
return 1;
}
[Szerkesztve] -
Forest_roby
őstag
shev7 megelőzött!
#include <stdio.h>
#include <stdlib.h>
main(){
FILE *be;
FILE *ki;
int beker;
be=fopen(''be.txt'', ''r'');
ki=fopen(''ki.txt'', ''w'');
fscanf(be, ''%d'', &beker);
int i;
int szamok[]={1000,900,500,400,100,90,50,40,10,9,5,4,1};
char* jelek[]={''M'',''CM'',''D'',''CD'',''C'',''XC'',''L'',''XL'',''X'',''IX'',''V'',''IV'',''I''};
if(beker >= 4000){
fprintf(ki, ''nincs ilyen romai szam\n'');}
else{
for (i=0;i<(sizeof(szamok)/sizeof(int));i++){
while (beker>=szamok[i]){
fprintf(ki, ''%s'', jelek[i]);
beker=beker-szamok[i];
}
}
fprintf(ki, ''\n'');
}
fclose(be); fclose(ki);
return 0;
}
[Szerkesztve] -
_t0Mi_
aktív tag
válasz
Forest_roby #80 üzenetére
rendben, így működik! akkor a file többi része pedig így néz ki:
int szamok[]={1000,900,500,400,100,90,50,40,10,9,5,4,1};
char*
jelek[]={''M'',''CM'',''D'',''CD'',''C'',''XC'',''L'',''XL'',''X'',''IX'',''V'',''IV'',''I''};
for (i=0;i<(sizeof(szamok)/sizeof(int));i++){
while (beker>=szamok){
fprintf(ki, ''%s'',jelek, ''\n'');
beker=beker-szamok;
}
}
fclose(be); fclose(ki);
return 0;
}
Szerintetek így menni fog? az fprintf sor is rendben?
[Szerkesztve] -
_t0Mi_
aktív tag
válasz
Forest_roby #76 üzenetére
de akkor mi a sorvége karakter? Egyébként az atoi az nem c++ parancs? mert nekem sima c-ben kéne
-
_t0Mi_
aktív tag
Egyébként a tesztertől ezt a riportot kapom:
7 Próbálkozás:
T.eset Pont F.ido Értékelési üzenet
-------------------------------------------------------------------------------
1. 0 0.000 Hibás eredmény
2. 0 0.000 Hibás eredmény
3. 0 0.000 Hibás eredmény
4. 0 0.000 Hibás eredmény
5. 0 0.001 Hibás eredmény
6. 0 0.000 Hibás eredmény
7. 0 0.000 Hibás eredmény
8. 0 0.001 Hibás eredmény
9. 0 0.000 Hibás eredmény
10. 0 0.000 Hibás eredmény
-------------------------------------------------------------------------------
Összpont: 0 -
_t0Mi_
aktív tag
az fprintf sorból kitöröltem a \n-t.
Amint mondtam, nemigazán értek még ezekhez a dolgokhoz, azt hiszem foglalkoztam vele eddig 4 órát (mert h ennyi volt eddig) úgyhogy még nagyon kezdő vagyok. Ezért nemtudom h a bufferes dolgot hol kéne kijavítani, az utánna lévő dolgokból meg semmit nem értek. -
Jester01
veterán
Ahogy Brain mondta, azzal az fprintf sorral van a baj. A \n egyszerűen nem kell bele, így egy sorba írja majd a jeleket. Ellenben a ciklus után, de a fájl lezárása előtt, írj ki egy csupasz soremelést ha ez a feladatkiírás szerint szükséges (nem tudom, nem néztem meg)
A bufferes dolog még mindig nem jó, miért nem írod át?
A visszatérési értékről röviden: a main függvénynek a prototípusa int main(int argc, char* argv[]). Minden más csak véletlenül, kompatibilitás és a C calling convention (hogy is van ez magyarul?) jellegzetessége miatt működik. Tessék ezt a formát használni és ennek megfelelően visszatérési értéket is megadni. (Persze a pointer-tömb ekvivalencia miatt az argv lehet char** is) -
_t0Mi_
aktív tag
válasz
Forest_roby #71 üzenetére
Előre is köszönöm..
Mod: Felvettelek msn-re, de nem jeleztél vissza.. lehet hogy ott gyorsabb lenne, ha nem vagyok túl tolakodó.. ha gondolod itt az enyém: alvaros@freemail.hu
[Szerkesztve] -
_t0Mi_
aktív tag
itt 1 másik link, ez elvileg jó!
http://alvaros.dynamicweb.hu/feladat.pdf -
_t0Mi_
aktív tag
jaja, most nekem se jött össze, csak akkor jó a link ha bejelentkezem.. érdekes
-
_t0Mi_
aktív tag
Hát nemigazán merem kipróbálni így a bizonytalant, csak 10-szer lehet feltölteni, és 7-et már ellőttem.. Miért nem tudjátok megnézni? pdf-ben van, rossz a link?
-
Forest_roby
őstag
Éjjel aludni kell!! : ))
_t0Mi_ sikerült?
mod: én se tudtam megnézni a feladatot.
[Szerkesztve] -
_t0Mi_
aktív tag
Na megcsináltam mindent jól, az eredményeket kiadja, jók is, de valamiért az ellenőrző program (biro) nem fogadja el :S A sorvége karakter az a \n ugye? Ez az 1 ami még bekavarhat..
Itt a feladat:
[link]
És itt a megoldásom(a void-ot direkt hagytam le, akkor hibakód keletkezett):
#include <stdio.h>
#include <stdlib.h>
main(){
FILE *be;
FILE *ki;
int beker;
be=fopen(''be.txt'', ''r'');
ki=fopen(''ki.txt'', ''w'');
char c[4] = { 0 };
fscanf(be, ''%[0123456789]'', c);
beker=atoi(c);
int i;
int szamok[]={1000,900,500,400,100,90,50,40,10,9,5,4,1};
char*
jelek[]={''M'',''CM'',''D'',''CD'',''C'',''XC'',''L'',''XL'',''X'',''IX'',''V'',''IV'',''I''};
for (i=0;i<(sizeof(szamok)/sizeof(int));i++){
while (beker>=szamok){
fprintf(ki, ''%s'',jelek,''\n'');
beker=beker-szamok;
}
}
fclose(be); fclose(ki);
return 0;
}
Remélem tudtok segíteni, nagyon fontos lenne! Köszi! -
_t0Mi_
aktív tag
Még 1 gyors kérés, ha még ittvagytok..
Szóval a feladat úgy szól, h fileból kéri be, és abba kell kiírni..igenám, de ha 500nál nagyobb értéket akarok lefordítani, akkor összevissza errorozik.. és ez csak akkor van ha file-os dolgokat belerakom..500 és alatta minden oké!
#include <stdio.h>
#include <stdlib.h>
void main(){
FILE *be;
FILE *ki;
int beker;
be=fopen(''be.txt'', ''r'');
ki=fopen(''ki.txt'', ''w'');
char c[4] = { 0 };
fscanf(be, ''%[0123456789]'', c);
beker=atoi(c);
int i;
int szamok[]={1000,900,500,400,100,90,50,40,10,9,5,4,1};
char* jelek[]={''M'',''CM'',''D'',''CD'',''C'',''XC'',''L'',''XL'',''X'',''IX'',''V'',''IV'',''I''};
for (i=0;i<(sizeof(szamok)/sizeof(int));i++){
while (beker>=szamok){
fprintf(ki, ''%s'',jelek);
beker=beker-szamok;
fclose(be); fclose(ki);
}
}
} -
_t0Mi_
aktív tag
Köszönöm szépen, úgy tűnik megy!
Köszi mindkettőtöknek!
-
Forest_roby
őstag
Jahhh, ph motor.... :|
#include <stdio.h>
#include <stdlib.h>
void main(){
printf(''Írj be egy max. négyjegyű számot!\n\n'');
int be;
char c[4] = { 0 };
scanf(''%[0123456789]'', c);
be=atoi(c);
int i;
int szamok[]={1000,900,500,400,100,90,50,40,10,9,5,4,1};
char* jelek[]={''M'',''CM'',''D'',''CD'',''C'',''XC'',''L'',''XL'',''X'',''IX'',''V'',''IV'',''I''};
for (i=0;i<(sizeof(szamok)/sizeof(int));i++){
while (be>=szamok[i]){
printf(''%s'',jelek[i]);
be=be-szamok[i];
}
}
}
kijejlol, ctrl + c, ctrl + v, idézo jelek javítása, aztán fordítás.
Nekem műxik.....
[Szerkesztve] -
_t0Mi_
aktív tag
válasz
Forest_roby #50 üzenetére
Köszi a segítséget!
Viszont van vele egy kis gondom, a fordítás közben baja van ezzel a 3 sorral:
while(be>=szamok){ -comparison between pointer and integer
be=be-szamok; -invalid operands to binary -
void main(){ -warning: return type of ''main'' is not ''int''
Valamint úgy kéne még, hogy ezt a számot file-ból olvassa ki, és 1 másikba írja bele!
Előre is köszi! -
Forest_roby
őstag
kb:
#include <stdio.h>
#include <stdlib.h>
void main(){
printf(''irj be egy max. negyjegyu számot!\n\n'');
int be;
char c[4] = { 0 };
scanf(''%[0123456789]'', c);
be=atoi(c);
int i;
int szamok[]={1000,900,500,400,100,90,50,40,10,9,5,4,1};
char* jelek[]={''M'',''CM'',''D'',''CD'',''C'',''XC'',''L'',''XL'',''X'',''IX'',''V'',''IV'',''I''};
for (i=0;i<(sizeof(szamok)/sizeof(int));i++){
while (be>=szamok){
printf(''%s'',jelek);
be=be-szamok;
}
}
}
//nem is tudtam, hogy van ilyen topic : )
[Szerkesztve] -
_t0Mi_
aktív tag
Sziasztok!
Segítséget szeretnék kérni, aki ért valamennyire a C nyelvhez! Suliba kell programot írnom, amely a 4 jegyű arab számokat rómaivá alakítja át, de elképzelésem sincs, hogy hogy kéne megcsinálnom! Remélem tudtok segíteni!
Köszi! -
Miracle
senior tag
hat a leges legegyszerubb megoldas szerintem az, ha irsz valamilyen GUIt valamilyen libbel (QT/GTK leginkabb) es egy kulon processzkent futtatsz mplayert, ami lejatsza az mp3akat is, es kifejezetten ugy alakitotta ki a fejleszto, hogy konnyen lehessen masik processzbol vezerelni. de vannak mp3 lejatszast tamogato libek is sztem (bar meg nem foglalkoztam ilyennel) es azok hasznalata sem lehet ordongosseg
-
corvin
csendes tag
Helló!
Ismét segítségeteket kérem a Linuxos mp3 lejátszással kapcsolatban. Tudom,h tartozik hozzá megfelelő program, de nekem egyedi kell (kinézetre és más funkciókkal együtt...). Ismerem a C és a Pascal nyelvet. Mivel lehet (egyszerüen) megcsinálni az mp3 kezelést? Elég csak megnyitás, play, stop funkciók. -
ReJim
őstag
én innen vettem meg, nekik volt: Bővebben: link
egyébként éppen most kezdtem el irogatni... eddig nem vitt rá a fene... de aztán resszkes világ... -
sziasztok! sgítséget kérnék ahoz ,hogy hogy kell elkezdeni a c programozást. rögtön én egy quake 3 projectre gondoltam
(tehát q3 moci
) ebben tudnátok segíteni vagy ez túl kemény lenne egy full kezdő számára
?
-
Khraath
csendes tag
Szerintem is... Bár én a referenciákat jobban szeretem.
Csak sajnos sokan vannak, akik ha nem értenek egy függvényt, vagy néhány sort simán átmásolják a saját programúkba, nem néznek utána. Ez szerintem meg nem tanulás, attól még tudod, hogy az a három sor kell oda, nem jelenti azt, hogy tudod is mi az, és tényleg jó is az adott esetben. -
Khraath
csendes tag
Szerintem ne sajnáld, hogy kimaradt a Pascal. Ismerőseim között azoknak okozott a c a legtöbb gondot, akik Pascalt tanultak előtte. A c egyáltalán nem nehéz, csak ijesztő. Az a lényeg, hogy minden programot a saját szinteden kell megírni, és nem a ''guruk'' után majmolni. Nem kell a leggyorsabb, legjobb algoritmusokat használni, vagy pointerekkel hadakozni az elején, és nem lesz semmi gond. Később meg magától fog jönni az egész.
A legfontosabb az egészben, hogy amit nem értesz ne másold le. Szóval kerüld a copy/plaste programozást. -
corvin
csendes tag
Helló!
Megoldható e az mp3 fájlok lejátszása Linuxon a C (v. c++)-ban írott konzolos programmal? Vagy mivel (és hogy) tudnék ilyen programot írni (lehetőleg ingyenesen)? -
mdk01
addikt
Bővebben: link
Nézzél már be légyszives.
THX
[Szerkesztve] -
ReJim
őstag
megtaláltam az említett könyvet... meg is fogom rendelni: Bővebben: link ugye ez az amiről beszéltetek?
köszi a segítséget, majd ha megjött, meg elkezdtem akkor úgyis írni fogok... -
ReJim
őstag
én nem akarok leragadni a pascalnál... csak sajna idén még az is kimarad a suliból (köszönet az államnak) így jövőre egyből nekivágunk a delphinek...
(winen kell tanulni sajna)
szóval én nem leragadni akarok, hanem elkezdeni
Szeretnék c-t tanulni, de még felesleges, mivel elötte többmindent fogok tanulni(elektronika, delphi), aztán megyek főiskolára/egyetemre!
Szóval bizti naulni fogom a c-t is.. .(de inkább eccerübbel kezdeném, (php, python, perl, egyéb gyengébb nyelv)
nekem nehéz lenne c-vel kezdeni -
Miracle
senior tag
tokeletesen egyetertek azzal, hogy a C/C++ a progamozo ,,alapmuveltsegehez'' tartozik, de manapsag az ipari alkalmazasfejlesztes mainstreamje mar inkabb java es c#, habar a c++-nak is megvan a maga atomstabil helye ezen a palettan, de komolyabb projekteket _altalaban_ ez elobbi ket nyelvre alapoznak, es a teljesitmenyigenyes reszt irjak csak meg Cben vagy C++ban, azert, mert joval egyszerubb nyelvek, es sokkal koltseghatekonyabb a kod 80%at azokon implementalni. (habar nem gyozom hangsulyozni, hogy a programnyelvek piacan a harom nyelv kozul a C/C++nak van a legbiztosabb jovoje, leven hogy nincs valos alternativaja a mai napig
)
es tenyleg csak kotozkodeskepp lattam mar drivert amit javaban irtak -
vati
senior tag
sose fogsz érteni a számítógépekhez és a programozáshoz, ha már az elején leragadsz a Pascalnál amit alapvetően hátulgombolósaknak találtak ki.
Az oprendszereket és a drivereket C-ben írják, meg az összes komolyabb alkalmazást (na jó, C++), a C-t nem tudod megkerülni. Unix/Linux világban különösen nem.
Ha megvan az alap C-s műveltség, a script nyelvek is könnyebben fognak menni, meglátod. (mivel örökölnek nyelvi elemeket a C-ből)
ui. én látom, mennyire reménytelenül elveszett emberek akik leragadtak a scriptírásnál / VBnél / Pascalnál, és azt hiszik, tudnak programozni - amíg pofára nem esnek. -
ReJim
őstag
köszi mindenkinek, majd nyáron alkotok valamit
aztán jövőre meg bukok -
Miracle
senior tag
Azt nem Delphi, hanem PASCAL nyelvjarasnak szoktak nevezni !!!!!
jo C konyv: Kernighan & Ritchie - A C programozasi nyelv
Ezt magyarul is lehet kapni sok sok boltban, mondhatni ez a C ,,alapkonyve'', a keszitok irtak. biztos megtalalhato neten is millio helyen PDF formatumban. -
BaLinux
tag
Az igaz hogy a C eltér a Delphitől, és össze is lehet keverni, de ez olyan mintha véletlenül angolul kezdenél beszélni német helyett ha egyszerre tanulod...
Mi az eltérés win/unix között? Sok minden. Lényegében úgy kell csinálni, mintha ezt te nem tudnád, és megpróbálni csak mindenhol jelenlévő dolgokat használni. Ez persze nem megy általában, ezért léteznek pl. crossplatform függvénykönyvárak. Eltérnek a headerek, a bináris fileok formátuma, lehet hogy még a géparchitektúra is.
Szerintem C tutorialt mérhetetlen mennyiségben lehet találni neten, lpt példám meg sajna nincs, és soha nem is csináltam még olyat sajnos. -
ReJim
őstag
na de lehet be fog zavarni, ha nagyon eltér a szintaxisa a delphi vonaltól!
sajna a suliban ezt a vonalat fogjuk tanulni...
és azt jól sejtem, hogy a windowsos és unixos rendszereken csak a header az eltérés?
nincs valakinek egy jófajta C könyve pdf-be?
meg egy lpt példája? (vagy az előző az működik?) -
dabadab
titán
-
ReJim
őstag
felesleges lenne nekiálnom megtanulni...
csak kidobás lenne...
jövőre kezdek programozni, de sajna delpfi-t
szóval nyáron inkább másra gondoltam: php(nem csak kostolgatni), python, perl(esetleg)
nekem meg csak most kellene egy példa program (lpt vezérlős), hogy tudjak ''script kiddie''-t jáccani -
-
ReJim
őstag
dabadab: végülis nem tudok, de nem is akarok annyira megtanulni
most még...
más lesz c helyett...
végülis ezt a forrást innen szedtem: Bővebben: link(alján)
lpt portra kellene kiírni adatot...
de mint látom ez nem fog úgy menni mint a pascal
nincs véletlenül egy példátok erre a feladatra?
nah:
már lefordult
a helyes forrás talán ez?#include <stdio.h>
int main(void)
{
int fd; //a file leiro
unsigned char tomb[10] = {1,2,3,4,5,6,7,8,9,10};
fd = open(''/dev/lp0'', ''W+B''); //port megnyitása
write(fd, tomb, sizeof(tomb)); //tomb kiirasa a portra
close(fd); //port lezárása
return 0;
}
csak azt nem tudom mit küld ki
a tömb tartalmát?
[Szerkesztve] -
dabadab
titán
Ize, tudsz egyaltalan C-ben programozni? Mert ha nem (marpedig egy kicsit ugy nez ki a dolog), akkor inkabb a Kernighan & Ritchie fele C konyvet ajanlanam a forum helyett.
A konkret hiba:
tomb[10] = {1,2,3,4,5,6,7,8,9,10};
helyett az kell, hogy
unsigned char tomb[10] = {1,2,3,4,5,6,7,8,9,10}; -
ReJim
őstag
segítsetek plz.
#include <stdio.h>
int main(void)
{
int fd; //a file leiro
tomb[10] = {1,2,3,4,5,6,7,8,9,10};
fd = open(''/dev/lp0'', O_RDWR); //port megnyitása
write(fd, tomb, sizeof(tomb)); //tomb kiirasa a portra
close(fd); //port lezárása
return 0;
}
ez miért is nem jó? mi kell még?
fordításra ez köpi:
lpt.c: In function `main':
lpt.c:6: error: `tomb' undeclared (first use in this function)
lpt.c:6: error: (Each undeclared identifier is reported only once
lpt.c:6: error: for each function it appears in.)
lpt.c:6: error: parse error before '{' token
lpt.c:8: error: `O_RDWR' undeclared (first use in this function)
nagyon nem értek hozzá -
_joe_
csendes tag
Most kezdtem el foglakozni linux c programozással,s
a kérdésem:
hogyan lehet egy linux sriptet lefutatni a c programban? -
=l@m@=
csendes tag
Ja rájöttem!!!
Thx a tanácsokat de ezzel még nincs megoldva!!!!
a következő:
c.c:2:21: courses.h: No such file or directory
????????????????????????????????????????????????????????????????????????????????
a progi?
#include <stdio.h>
#include <courses.h>
main()
{
int a,b,c;
do
{
printf(''Kérek két számot:\n'');
if (scanf(''%d,%d'', &a, &b)!=2)
{
printf(''Hibás!!!\n'');
exit(-1);
}
printf(''A két szám összege: %d + %d =%d\n'', a, b, a+b);
}while (getch()!=32);
} -
=l@m@=
csendes tag
Köszi a tanácsokat!!!
Hülye kérdés: mi az hogy mans -> man? -
Hory
aktív tag
Egész pontosan az a probléma, hogy a tanórákon ismertetett c, tipikusan a windows alatt futó kreálmányok, nem szabványos kiterjesztéseket használnak, mint a conio.h. Ez régebben még a dos-os időkből visszamaradt csökevény, amúgy nagyon szépen (1 az 1ben) lefedi a dos és a bios szolgáltatásait, csak hát az x86 bios-a és az ms-dos nem éppen a szabványok követéséről híresült el, ennek a levét ittad most meg te is.
És most már azt is kezdheted érteni, hogy mi ez a nagy ms suxx-ozás -
samson
tag
ja!
es hasznald inkabb a glibc-ben levo
int getchar(void); -ot -
=l@m@=
csendes tag
Hi mans!!
Lenne egy olyan problémám hogy elkezdtem tanulni a C-t Linuxon!!! Na most az a problémám hogy a programom nem műxik e miatt:
#include <stdio.h>
#include <stdlib.h>
#include <conio.h> <- ez nem jó mer a sor aljan!!
main()
{
int a,b,c;
do
{
printf(''Kérek két számot:\n'');
if (scanf(''%d,%d'', &a, &b)!=2);
{
printf(''Hibás!!!\n'');
exit(-1);
}
printf(''A két szám összege: %d + %d =%d\n'', a, b, a+b);
}while (getch()!=32);
}
flick@tamaspc C]$ gcc c.c
c.c:3:19: conio.h: No such file or directory
flick@tamaspc C]$
szóval ha vki tudna segíteni az jó lenne!!!!!!!!!!
Aktív témák
Hirdetés
- PlayStation Network Card (PSN) ajándékkártyák, egyenesen a Sony-tól!
- Samsung Galaxy Z Fold5 , 12/256 GB , Kártyafüggetlen
- AKCIÓ! MSI B450 R5 5500 16GB DDR4 512GB SSD RTX 2060 Super 8GB GDDR6 Rampage Shiva Zalman 500W
- Apple iPhone 16 Pro Max - Natural Titanium - Újszerű - 1 töltési ciklus - 2026. 05. 13.-ig Apple gar
- REFURBISHED és ÚJ - HP Thunderbolt Dock G2 230W docking station (3TR87AA)
Állásajánlatok
Cég: CAMERA-PRO Hungary Kft
Város: Budapest
Cég: PC Trade Systems Kft.
Város: Szeged