- Samsung Galaxy S24 Ultra - ha működik, ne változtass!
- Szívós, szép és kitartó az új OnePlus óra
- Samsung Galaxy Fit 3 - keveset, de jól
- Honor Magic6 Pro - kör közepén számok
- Samsung Galaxy S23 és S23+ - ami belül van, az számít igazán
- Nothing Phone (3a) és (3a) Pro - az ügyes meg sasszemű
- Fotók, videók mobillal
- Huawei Mate X6 - keleti oldal, nyugati oldal
- Telekom mobilszolgáltatások
- Mobil flották
Új hozzászólás Aktív témák
-
Cicero
őstag
kingabo, shev7 köszönöm az ötleteket!
shev7: a gond az hogy csak egyszer olvashatom végig a fájlt. Telis-tele van a házi megkötésekkel, pl dinamikus adatszerkezetnek nem használhatok dinamikusan allokált tömböt, pedig meglátásom szerint úgy jóval könnyebb lenne. Nem véletlenül van ez így
-
brsd
csendes tag
Nem jelent meg, az az üzenet jelent meg, amit a legelső posztomban írtam. A program begépelése után a "Build" menüpontból, a "Compile current file"-t választottam, elmentettem a kódot .c kiterjesztésben. Aztán a "Run" menüpontra kattintottam, és a válaszablakban pedig a "Nem"-re. Nem tudom, hogy így helyes-e.
-
Nem is konkrétan erre írtam, hanem hogy Karma megjegyezte, hogy már egy ideje ide jár kérdésekkel. Meg mellesleg mikor az ember tök ideg mert valami nem akar menni, akkor bizony simán lehet kérdés az is, hogy mi az a májkrém
Bár nem tudom, hogy jelenleg mik a körülmények nála, de gyanítom nem jókedvéből írogat ide..
Egyébként ebből a szempontból igazad van. -
cucka
addikt
Dehogynem. Igazából az emberek jelentős része képtelen a legalapvetőbb színvonalon is megtanulni programozni. Az okokat nem tudom, nyilván bizonyos agyterületek fejlettségére lehet visszavezetni az egészet.
Ezt nem negatív beszólásnak szánom, mert mindenki tud mondani olyan, nem tanulható készségeken alapuló területet, amelynek elsajátítására képtelen lenne (pl. művészetek, nyelvérzék, matematika, stb.)Két érdekes cikk (főleg az első vág témába, illetve az ott linkelt "kutatás"):
[link]
[link] -
Sk8erPeter
nagyúr
Úúú basszus, teljesen igazad van, az lemaradt, köszi, hogy szóltál.
És igen, vagy (||) helyett és (&&) kellene...
Látszik, hogy sietve írtam (eddig nem kapott választ a srác), bocsesz.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++;
}
} -
Sk8erPeter
nagyúr
Akkor lődd le a poént, légyszi!
Írd le nagyvonalakban, kíváncsi vagyok!
Én viszonylag egyszerű megoldásra gondoltam, hogy ellenőrizgetem, hogy megfelel-e a reguláris kifejezéseknek, semmiféle "determinisztikus állapotautomatára" nem gondoltam, főleg, hogy egyelőre azt se tudom, mi az (legalábbis - tudtommal- még eddig egy tárgyból se vettük).
-
Korcsii
őstag
sry, valahogy így gondoltam:
int rendezes(int mit) {
if (mit=1) {
// rendez adat[i].varos szerint
} else if (mit=2) {
// rendez adat[i].termek szerint
} ...
}
na ez most szép és jó, de túl sok értelme nincs... de inkább hagyom, annyira nem lényeges... esetleg majd ha unatkozom, rágooglezek még párszor -
Dealer
tag
Köszi a segitséget srácok, de a Visual Studio 2006ba nincs ilyen hogy continue csak step into, step over, stb, ilyenek vannak amik hatására előugrik a dissasembly
a 2008 meg valamiért le sem akarja compilolni a forráskódomat (szürke a gomb). Vasárnap megyek vissza koliba majd elsírom a nyügömet valami okostojásnak.
Azért thx még1x... -
Dealer
tag
Semmit sem akarok azzal a dissasemblyvel csinálni hát épp ezaz! De mégis állandóan oda lép be bármit csinálok.
Tegyük fel hogy a programom nem az elvárt ereményt dobja ki. Figyeltetni akarom a változókat és sorrol sorra végigmenni a programon a debug programmal hogy rájöjjek hol csináltam ökörséget.
De most akkor mit hogy csináljak hogy békén hagyjon ez az assembly ablak, és hogy lépésről lépésre tudjam figyelni a programot mikor mit csinál. Kb úgy mint a borland féle turbo C debuggere... -
Sk8erPeter
nagyúr
Pedig direkt sokat kommenteztem, azt hittem, attól lesz egyértelmű.
De akkor nem. De mondjuk nem tudom, minek mentegetőzzek, mondtam, hogy nem a legtökéletesebb program, de elég gyorsan írtam, így nem foglalkoztam olyanokkal, mint a "függvény neve", "van-e felesleges változó, és ki lehet-e váltani valamivel, minimalizálni a kódot"... Már kezdem bánni, hogy megcsináltam a programot a srác helyett...
-
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?
-
Sk8erPeter
nagyúr
Nem a * operátor sorrendjén voltam meglepődve, hanem magán a "byte" típuson.
Eddig nem használtam, és nem is igazán láttam gyakorlati feladatokban konkrétan ezt a típust. Szóval erre kérdeztem, hogy mire jó.
Egyébként jó, hogy felhívtad a figyelmem, hogy attól még, hogy a csillagot a típus mögé rakom közvetlenül, nem lesz a következő változó is automatikusan pointer(mondjuk ez viszonylag egyértelműnek látszik, de nehogy elcsesszem valamikor - most már nem fogom)
Köszi a választ ismét!(#1422) Karma: neked is köszi! Ez mitől lesz egyébként "fésűs adatszerkezet"?
-
Karma
félisten
Pfff, az előbb a fórummotor kidobta a szerkesztésemet a kukába...
Szóval az általad említett problémának van egy alternatív megoldása, ha az adott környezet úgy kívánja meg (szerencsére a legtöbbet ilyenben dolgozok, én a típushoz szeretem kötni a *-ot és a &-et
):
int* first;
int* second; -
Karma
félisten
"de ugye ez csak byteoknal mukodne ilyen egyszeuen. Int-nel mar bonyolultabb a tema. Ott a kovetkezo egyenloseg igaz: p[5] = *(p+sizeof(int)*5)"
Nem igaz!
Ha a p ebben a példában egy int*, akkor automatikusan egy egész értéknyit lép előre, nem kell és nem szabad a sizeoffal varázsolni benne! Tehát 32 biten "p+1" az 32 bittel előrébb mutat, nem csak egy bájttal!
-
Sk8erPeter
nagyúr
Szóval akkor pl. az általam mutatott példában az ujtomb nevű tömb nem tömb, hanem pointer. De a tömb olyan, mint egy pointer, mert pl. függvénynek már eleve a címet adjuk át, ha tömböt adunk át. De a pointernek mások a tulajdonságai, szabadon, futásidőben változtatható a memóriaigénye, ide-oda állítgatható, stb., míg a tömbnek már fordításkor meghatározott a memóriaigénye, akármilyen adatot pakolászunk is bele (persze a megadott típus szerinti méretkorlátokon belül). Tehát a tömbnek ha megszakadunk, sem tudunk változtatni futásidőben a memóriaszükségletén.
Az eddigiek helytállóak? És "csupán" ilyen szempontból van eltérés?Szerk.: jól "egyszerre" írtuk a hsz.-eket, olvasom is a válaszaitokat.
-
Sk8erPeter
nagyúr
Akkor lehet, hogy valami fogalmi képzavar esete forog fenn nálam, vagy nem vágom,
de az alábbi példaprogram jól szemlélteti a dinamikus memóriafoglalást, amire gondoltam, itt az eredeti tömbből egy új tömbbe gyűjti az eredeti tömbben szereplő, átlag alatti számokat, és pont akkora memóriát foglalunk le az új tömbnek, amennyire szükség van, nem többet, nem kevesebbet:#include <stdio.h>
#include <stdlib.h>
double *atlagalatt(double tomb[], int meret, int *ujmeret){
double *ujtomb;
int i, db, to;
double szum, atlag;
/* mi az atlag */
szum=0;
for (i=0; i<meret; ++i)
szum+=tomb[i];
atlag=szum/meret;
/* hany olyan van */
db=0;
for (i=0; i<meret; ++i)
if (tomb[i]<atlag)
db++;
/* foglalas es paranoia */
ujtomb=(double*)malloc(db*sizeof(double));
if (!ujtomb) {
*ujmeret=0;
return NULL;
}
/* masolas */
to=0;
for (i=0; i<meret; ++i)
if (tomb[i]<atlag)
ujtomb[to++]=tomb[i];
*ujmeret=db;
return ujtomb;
}
int main(){
double eredeti[100];
double *uj;
int ujmeret;
int i;
for (i=0; i<100; ++i)
eredeti[i]=rand()%100/10.0;
uj=atlagalatt(eredeti, 100, &ujmeret);
for (i=0; i<ujmeret; ++i)
printf("%4.2g ", uj[i]);
free(uj);
}Szerk.: Forrás: [link]
Sőt, ha már linkeltem, itt látható a 4-es feladatban a futásidőben történő memóriafoglalás:
#include <stdio.h>
#include <stdlib.h>
char ** darabol(char *s,char *m,int *db){
int n=0,i,last=0;
char **p;
// szavak számolása
for(i=0;s[i]!=0;i++){
int j;
for(j=0; m[j]!=0 && s[i]!=m[j]; j++);
if(m[j]!=0 && i!=last){
n++;
last=i+1;
}
}
p=(char**)malloc(n*sizeof(char*));
if(p==NULL)exit(-1);
for(i=n=last=0;s[i]!=0;i++){
int j;
for(j=0; m[j]!=0 && s[i]!=m[j]; j++);
if(m[j]!=0 && i!=last){
p[n]=(char*)malloc(i-last+1);
if(p[n]==NULL)exit(-1);
for(j=last;j<i;j++)p[n][j-last]=s[j];
p[n][j-last]=0;
n++;
last=i+1;
}
}
*db=n;
return p;
}
int main(int db,char ** par){
FILE * fp;
char sor[1025];
int meret;
if(db<3)return -1;
fp=fopen(par[1],"rt");
if(fp==NULL)return -1;
while(fgets(sor,1025,fp)!=NULL){
char **p=darabol(sor,par[2],&meret);
while(meret--)free(p[meret]);
free(p);
}
} -
Karma
félisten
A pointer mérete is fix
32 bites architektúrán 32 bit például.
Szerintem arra céloztak anno a hasonlósággal, hogy a subscript operátor valójában ekvivalens egy kis pointeraritmetikával.
int array[5];
int* pointer = array;
array[5] === pointer[5] === *(pointer+5) // ekvivalensekDe most hogy nézem, rájöttem a különbségre is: míg a pointer szabadon módosítható, a tömbváltozó nem, konstans értéke van.
-
ArchElf
addikt
Nálunk (miskolcon) 20 óra alatt megtanítottak minket C-ben, utána 20 óra alatt C++ ban, majd 20 óra alatt Java-ban és végül 20 óra alatt PHP-ban programozni... Ez nem semmi teljesítmény - főleg, hogy gépteremben csak az utolsó félévben - a PHP-n voltunk bent, a többi a táblánál került "szemléltetésre"
Ja és a második félév végén (c++) linuxra kellett processz-farmot leprogramozni. Mondjuk, aki pont megfelelő szakirányon jött (programozás), annak ez (borzasztóan) nem esett nehezére, de aki rendszertervező, logisztikus, elektro-mérnök, gépészmérnök végzettséggel jött... hát ők csak megcsináltatták a beadandókat valakivel. Szerintem ez van ilyen helyeken.AE
-
mm00
aktív tag
Hát nem tudom mit várhat a tanár.... Talán ez "Kernighan-Ritchie" kód... átnéztem egy hivatalos Richie könyvbe... Ha ilyen tanárom lenne nem kicsit szidnám...
#include <stdio.h>
int egesze(char[]);
int atoi(char[]);
int main(int argc, char *argv[]) {
int i = 0, x=0;
int dec;
char rom[50];
if(argc == 1){
fprintf(stderr, "Hianyzik a parameter!");
}
for(x=1;x<argc;x++){
if(egesze(argv[x])){
dec = atoi(argv[x]);
}else{
fprintf(stderr, "A parameterlistaban nem megfelelo az egyik ertek!");
}
while(dec>=1000){
dec -= 1000;
rom[i] = 'M';
i++;
}
if (dec>=900){
dec-=900;
rom[i] = 'C';
i++;
rom[i] = 'M';
i++;
}
if(dec>=500){
dec -= 500;
rom[i] = 'D';
i++;
}
if (dec>=400){
dec -= 400;
rom[i] = 'C';
i++;
rom[i] = 'D';
i++;
}
while(dec>=100){
dec = dec-100;
rom[i] = 'C';
i++;
}
if(dec>=90){
dec -= 90;
rom[i] = 'X';
i++;
rom[i] = 'C';
i++;
}
if(dec>=50){
dec -= 50;
rom[i] = 'L';
i++;
}
if(dec>=40){
dec -= 40;
rom[i] = 'X';
i++;
rom[i] = 'L';
i++;
}
while(dec>=10){
dec -= 10;
rom[i] ='X';
i++;
}
if(dec == 9){
rom[i] = 'I';
i++;
rom[i] = 'X';
i++;
}
else{
if(dec >= 5){
dec -= 5;
rom[i] = 'V';
i++;
}
if(dec == 4){
rom[i] = 'I';
i++;
rom[i] = 'V';
i++;
}
else{
while(dec > 0){
dec -= 1;
rom[i] = 'I';
i++;
}
}
}
rom[i]='\0';
printf(" %s", rom);
}
}
int egesze(char s[]){
int i=0, kezd;
while (s[i]==' ' || s[i]=='\n' || s[i]=='\t')++i;
if(s[i]=='+' || s[i]=='-')++i;
kezd=i;
while(s[i]>='0' && s[i]<='9')++i;
if(i==kezd || s[i]!=' ' && s[i]!='\t' && s[i]!='\n' && s [i]!=0) return 0;
else return 1;
}
int atoi(char s[])
{
int i, n;
n = 0;
for (i = 0; s[i] >= '0' && s[i] <= '9'; ++i)
n = 10 * n + (s[i] - '0');
return n;
} -
Ú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!
- Milyen billentyűzetet vegyek?
- Autós topik
- Vicces képek
- Samsung Galaxy S24 Ultra - ha működik, ne változtass!
- Egyre csak fejlődik az AI, emberek tízezreit rúgja majd ki a BT
- Nvidia GPU-k jövője - amit tudni vélünk
- AMD GPU-k jövője - amit tudni vélünk
- exHWSW - Értünk mindenhez IS
- Épített vízhűtés (nem kompakt) topic
- Szeged és környéke adok-veszek-beszélgetek
- További aktív témák...
- Eladó konfig! Ryzen 7 7800X3D 2TB SSD 64GB DDR5 RX9070XT 16GB!
- Új, makulátlan állapotú Samsung Galaxy Buds FE, fehér, fél év garancia
- Új, makulátlan állapotú Samsung Galaxy Watch7 44mm ezüst, 2 év garancia
- Új, makulátlan állapotú Samsung Z Fold 6 256GB Tengerészkék, független, 2 év garancia
- Használt TP-Link Deco M4 - AC1200 Router (Mesh-ként is használható)
- Beszámítás! Apple iPad 11 2025 128GB WiFi tablet garanciával hibátlan működéssel
- ÁRCSÖKKENTÉS Dell Latitude E6320 notebook eladó
- AKCIÓ! Gigabyte B650M R7 7700X 32GB DDR5 1TB SSD RTX 3080Ti 12GB Cooler Master H500P WHITE 750W
- AKCIÓ! Apple Macbook Air 13" 2020 M1 8GB 256GB SSD notebook garanciával hibátlan működéssel
- Gombászkönyvek egyben
Állásajánlatok
Cég: Promenade Publishing House Kft.
Város: Budapest
Cég: CAMERA-PRO Hungary Kft
Város: Budapest