Új hozzászólás Aktív témák
-
CPT.Pirk
Jómunkásember
válasz
tototos #5097 üzenetére
EM783-as prociról van szó, ami kb. az nxp 11-es szériás procijainak felel meg, kiegészítve a mérő résszel. Mi is próbáltuk az expresso-t, de nem találtuk meg benne ezt a procit, pedig 2012 decembere óta támogatja. Egyébként java részt nuvotonban nyomulunk, coocox alatt.
Szóval azt mondod, hogy feltétlen lib-el kell kezdődjön a lib? Kíváncsi leszek rá mire jutunk hétfőn ezzel.
buherton: sajnos nem Linux alatt dolgozunk, de a coocoxnak nincs is Linuxos verziója, hiába Eclipse alapú. A linkernél -DEM783.lib lesz a paraméter, amit átad a környezet. Próbáltuk megadni neki a teljes utat kézzel is több módon, de minden esetben az volt, hogy nem találja.
-
bucsupeti
senior tag
válasz
#34322688 #5098 üzenetére
két egymásba ágyazott for ciklust használj. egyet a mátrix sorainak, másikat az oszlopok indexelésére...
pl kereszt pszeudókódban:
számolj 0-tól 20-ig (x)
számolj 0- tól 20-ig (y)
ha x=11 vagy y=11 akkor kiír("*")szerintem itt a "nehéz" az hogy hogyan rajzold ki az adott mintát. Ehhez jó ha lerajzolod a mintát, esetleg leírod egymás után sorról sorra a kiírandó karakterpozíciókat a mátrixmban.
ha kell még segítség szólj!
-
#34322688
törölt tag
Segítség kellene egy feladat megoldására.
Mátrix kiírása!
Olyan porogramot kell készíteni.mely a képernyő 21 sorszor 21 oszlopos területén csillagkarakter felhasználásával megjelentet:
1, Egy keresztet a 11.sor és 11.oszlop feltöltésével
2, A főátlót ( bal felső sorokból a jobb alsóba menőt)
3, A mellékátlót (a másik átlót)
4, Egyszerre mindkét átlót, azaz egy x-et
Kezdőként Számomra ez teljesen érthetetlen. Valaki aki jártasabb ezen a területen, ötlete.
Előre is köszönöm. -
tototos
addikt
-
buherton
őstag
válasz
CPT.Pirk #5095 üzenetére
Jól megkavarod a dolgot.
Nem ismerem a CooCox-ot (LPCexpresso-t használok), de projekt mappában van a lib és h? Abszolút vagy relatív path? Utóbbinál jó a változó? Jogok jól vannak beállítva (Linuxon). Ezek voltak a basic kérdések.
Advanced level: gondolom itt van is console felület, ahol kiírja, hogy a linker-t milyen arugmentumokkal hívja meg. Itt megnézd meg, hogy a lib és h (nem tudom melyiknek kellene ott lennie) benne van-e. Ha benne van, akkor passz, ha nincs akkor itt a gond. Továbbá próbálkoznék azzal is, hogy kimásolnám az egész sort és kézileg próbálnám összelinkelni. Ha eddig semmi sem volt jó, akkor indulhat a szarakodás.
Munka (nem ócó a Keil)? Milyen NXP? Mit csinálsz ezzel? Miért nem arm-none-eabi? Bár ha fontos a kód méret, akkor megértem.
-
CPT.Pirk
Jómunkásember
Talán itt a legaktuálisabb a kérdésem. Van egy problémám:
CooCox IDE (ARM-es fejlesztő környezet) alatt egy hivatalosan nem támogatott nxp procit kell életre keltenem, amiben van egy különleges mérő rész, aminek nincs nyilvános C forrása csak egy header fájl, meg .lib formában a forrás.
Ez a .lib library a KEIL környezet alá lett csinálva és ha beadom a "link library" menüben a coocoxnak, akkor csak annyit mond rá, hogy nem nem található. Szerintetek mit lehet ezzel kezdeni? A boot és egyéb fájlokat már bereszeltem, kód is fordul, ez lenne már csak vissza. -
bbenjamin
csendes tag
Még ismerkedem a C-vel, az alábbi feladatot kellett megvalositanom.
Valamiért nem tudom kilistázni a feltöltés után a structba eltárolt adatokat,
mindenhol null -t kapok.
Hibaüzenet, figyelmezetetés nuku.
Órák óta nem tudok rájönni miért nem menti el, vagy miért nem működik a kiiratás :/#include <stdio.h>
#define MAX_KARAKTER 40
#define MAX_ARUK 30
#define MAX_PARTNEREK 30
#define MAX_SZAMLAK 100
#define MAX_TETELEK 30
struct tetel_adat {
int vonalkod;
int mennyiseg;
};
struct tetel_adat tetelbekeres() {
struct tetel_adat tetel;
printf(" Vonalkod: ");
scanf("%d", &tetel.vonalkod);
printf(" Mennyiseg: ");
scanf("%d", &tetel.mennyiseg);
return tetel;
};
struct tetelek {
struct tetel_adat tetel[MAX_TETELEK];
};
struct tetelek tetelekbekeres(int maxtetel) {
int i; struct tetelek lmk;
for(i=0;i<maxtetel; i++) {
printf(" %d. tetel adatait kerem:\n", i+1);
lmk.tetel = tetelbekeres();
}
return lmk;
};
struct szamla_adat {
int szamlaszam; int partnerkod;
int datum; int tetelekszama;
struct tetelek tetelek;
};
struct szamla_adat szamlabekeres() {
struct szamla_adat szl;
printf(" Szamlaszam (int): ");
scanf("%d", &szl.szamlaszam);
printf(" Partnerkod (int): ");
scanf("%d", &szl.partnerkod);
printf(" Datum (timestamp): ");
scanf("%d", &szl.datum);
do {
printf(" Tetelek szama: ");
scanf("%d", &szl.tetelekszama);
} while (szl.tetelekszama<0 || szl.tetelekszama>MAX_TETELEK);
szl.tetelek=tetelekbekeres(szl.tetelekszama);
return szl;
};
struct szamlak {
struct szamla_adat szamla[MAX_SZAMLAK];
};
struct szamlak szamlakbekerese(int maxdb) {
int i; struct szamlak lsz;
for(i=0;i<maxdb; i++) {
printf("%d. szamla adatait kerem:\n", i+1);
lsz.szamla=szamlabekeres();
}
return lsz;
};
struct partner {
int partnerkod; char nev[MAX_KARAKTER];
char cim[MAX_KARAKTER]; int telefonszam;
};
struct partner partnerbekeres() {
struct partner pr;
printf(" Partnerkodja (int): ");
scanf("%d", &pr.partnerkod);
printf(" Neve (max 40 karakter): ");
scanf("%s", pr.nev);
printf(" Cime (max 40 karakter): ");
scanf("%s", pr.cim);
printf(" Telefonszama (csak szam): ");
scanf("%d", &pr.telefonszam);
return pr;
};
struct partnerek {
struct partner partner[MAX_PARTNEREK];
};
struct partnerek partnerekbekerese(int maxdb) {
int i; struct partnerek lp;
for(i=0;i<maxdb;i++) {
printf("%d. partner adatait kerem:\n", i+1);
lp.partner=partnerbekeres();
}
return lp;
};
struct aru {
int vonalkod; char leiras[MAX_KARAKTER];
int ar; int keszlet;
};
struct aru arubekeres() {
struct aru la;
printf(" Vonalkodja (int): ");
scanf("%d", &la.vonalkod);
printf(" Leirasa (max 40 karakter): ");
scanf("%s", la.leiras);
printf(" Ara (Ft): ");
scanf("%d", &la.ar);
printf(" Keszlet (db): ");
scanf("%d", &la.keszlet);
printf("\n");
return la;
};
struct aruk {
struct aru aru[MAX_ARUK];
};
struct aruk arukbekeres(int maxdb) {
int i;struct aruk lak;
for(i=0;i<maxdb;i++) {
printf("%d. aru:\n", i+1);
lak.aru=arubekeres();
}
return lak;
};
struct raktar {
int max_aru; int max_partner;
int max_szamla;
struct aruk aruk;
struct partnerek partnerek;
struct szamlak szamlak;
};
struct raktar raktarbekero() {
struct raktar raktar;
int j=0;
do {
if(j) printf("A szamnak 0 es %d koze kell esnie!\n", MAX_ARUK);
printf("Hany arut szeretnenk feltolteni? ");
scanf("%d", &raktar.max_aru); j++;
} while(raktar.max_aru<0 || raktar.max_aru>MAX_ARUK);
raktar.aruk=arukbekeres(raktar.max_aru);
j=0;
do {
if(j) printf("A szamnak 0 es %d koze kell esnie!\n", MAX_PARTNEREK);
printf("\nHany partnert szeretnenk feltolteni? ");
scanf("%d", &raktar.max_partner); j++;
} while(raktar.max_partner<0 || raktar.max_partner>MAX_PARTNEREK);
raktar.partnerek=partnerekbekerese(raktar.max_partner);
j=0;
do {
if(j) printf("A szamnak 0 es %d koze kell esnie\n", MAX_SZAMLAK);
printf("\nHany szamlat szeretnenk feltolteni? ");
scanf("%d", &raktar.max_szamla); j++;
} while(raktar.max_szamla<0 || raktar.max_szamla>MAX_SZAMLAK);
raktar.szamlak=szamlakbekerese(raktar.max_szamla);
};
/* PROGRAM KILISTAZO RESZE */
void tetelkiiratas(struct tetel_adat tetel) {
printf("\t Vonalkod: %d\n", tetel.vonalkod);
printf("\n Mennyiseg: %d\n", tetel.mennyiseg);
}
void tetelekkiiratas(struct tetelek tetelek, int maxdb) {
int i; for(i=0;i<maxdb;i++) tetelkiiratas(tetelek.tetel);
}
void szamlakiiratas(struct szamla_adat szamla) {
printf("%d. szamu szamla adatai:\n", szamla.szamlaszam);
printf(" Partnerkod: %d\n", szamla.partnerkod);
printf(" Datum: %d\n", szamla.datum);
printf(" Tetelek:\n");
tetelekkiiratas(szamla.tetelek, szamla.tetelekszama);
}
void szamlakkiiratas(struct szamlak szamlak, int maxdb) {
int i; for(i=0;i<maxdb; i++) szamlakiiratas(szamlak.szamla);
}
void partnerkiiratas(struct partner partner) {
printf("%d. kodu partner adatai:\n", partner.partnerkod);
printf(" Neve: %s\n", partner.nev);
printf(" Cime: %s\n", partner.cim);
printf(" Telefonszama: %d\n", partner.telefonszam);
}
void partnerekkiiratas(struct partnerek partnerek, int maxdb) {
int i; for(i=0;i<maxdb;i++) partnerkiiratas(partnerek.partner);
}
void arukiiratas(struct aru aru) {
printf("%d kodu aru adatai:\n", aru.vonalkod);
printf(" Leirasa: %s\n", aru.leiras);
printf(" Ara: %d,-\n", aru.ar);
printf(" Keszlet: %d (db)\n", aru.keszlet);
}
void arukkiiratas(struct aruk aruk, int maxdb) {
int i; for(i=0;i<maxdb;i++) arukiiratas(aruk.aru);
}
void raktarkiiro(struct raktar raktar) {
printf("\nARUK KILISTAZASA (%d): \n", raktar.max_aru);
arukkiiratas(raktar.aruk, raktar.max_aru);
printf("\nPARTNEREK KILISTAZASA: \n");
partnerekkiiratas(raktar.partnerek, raktar.max_partner);
printf("\nSZAMLAK KILISTAZASA: \n");
szamlakkiiratas(raktar.szamlak, raktar.max_szamla);
}
/* --------------------------------------------------- */
int main() {
struct raktar raktar;
raktar = raktarbekero();
raktarkiiro(raktar);
return 0;
} -
mepet
addikt
válasz
#34322688 #5089 üzenetére
Ha olvasmányos, érthető könyvet keresel, ezt tudom ajánlani:
Kochan, Stephen G.: Programfejlesztés C nyelvenOnline irodalmat pedig az 1. hsz-ben, és a google segítségét igénybevéve találhatsz.
-
#34322688
törölt tag
Nem találtam semmi értelmes könyvet, leírást ami érthetően magyarázná a c-programozás alapjait. Mindegyik általam olvasott forrás eléggé számomra érthetetlenül fogalmaz. Tud valaki valami általa is használt könyvet, irományt ajánlani ezen a területen? Alap c- olvasmányra gondolok.
-
#34322688
törölt tag
válasz
DrojDtroll #5086 üzenetére
Én pl a különböző parancsokra értem. printf-Console.WriteLine-stb.. ezekre értem, hogy nem ugyanaz, vagy igen? Meg nem tudom miért a C.B-ot erőltetik, amikor a V.S-is ingyenes.
-
#34322688
törölt tag
Sziasztok.
Jelentkeztem egy programozói suliba, ahol a c-kezdő nyelvhez a CodeBlocksot ajánlják. Idáig én a Visual Studioval gyakoroltam, a C#-pot. Akkor ezekszerint kezdhetek előről mindent? Újra elkezdeni tanulni a különböző parancsokat stb? -
alapz@j
tag
Banális kérdés, de valahogy nem egyértelmű számomra: a wide char-okból álló string lezárója a 0x0000?
-
sssirius
tag
válasz
DrojDtroll #5080 üzenetére
Akkor jó esélyed van, hogy EOF-ot kapsz a végén.
-
sssirius
tag
válasz
DrojDtroll #5078 üzenetére
Szia!
Ha interaktív program és a felhasználók csápolják be az inputot, akkor érdemes lehet bevezetni egy termináló karaktert/sort és egy while ciklusban figyelni, hogy megegyezik-e azzal.
Ha program adja be, akkor meg lehet próbálni EOF-ot keresni, pl. a getline függvény alkalmas lehet ebben az esetben.Ha ezek nem jönnek be, akkor a non-blocking read-et javaslom egy jól belőtt timeout-tal.
-
DrojDtroll
veterán
Hogyan lehet úgy bekérni x sort, vagy x számot az stdin-ről, hogy nem tudjuk mikor lesz vége a bemenetnek?
-
Zsolt1
tag
Sziasztok!
Egy kis segítséget szeretnék kérni kétdimenziós tömb átadása függvénynek témakörben. Gyakorlaton sajnos csak 1 dimenziós tömbbel csináltuk és sajnos úgy nem működik.Az egydimenziósnál:
void beolv(int*); //main() fv. előtt
beolv(tomb); //main() fv.-ben: tömb átadása a beolv fv.-nek
void beolv(int *t) {... //main() fv. utáni kifejtésA kétdimenziósnál (ami nem működik):
void ujadat(int*,char*,char*); //három tömböt adok majd át neki, 1 db egydimenziósat és 2 db kétdimenziósat
ujadat(azontomb,tipus,rendszam);
void ujadat(int *tomb, char *chartomb1, char *chartomb2) {...A codeblocks eltérő típusú pointerekre panaszkodik és gondolom is, hogy miért, mert kétdim. tömbnél a tomb és a tomb[] nem ugyan arra a címre mutat csak nem tudom, hogy hogy kéne megoldani azt, hogy az összesnél jó legyen az átadás.
Találtam egy ilyet: [link] és egy ilyet is:[link] ezek alapján így néz ki a kétdimenziósnál a 3. sor:
void ujadat(int *tomb, char chartomb1[][HOSSZ], char chartomb2[][HOSSZ2]) {...
Ezzel már sokkal kevesebb hibát dob a CB, de még így is eltérő típusú pointereket ír.Ha valaki tudna benne segíteni azt nagyon megköszönném, mert elég sok helyen megnéztem már és szinte sehol sem írnak ezzel kapcsolatban semmit, illetve ha írnak is, akkor sem működik.
-
kozicsd
tag
Sziasztok!
Egy beadandó feladatot kell készítenem, konkrétan egy RSA kriptorendszert C-ben. Kisebb számokra működik minden, viszont nagyobbaknál már gondok vannak. A tanár a GMP-t javasolta. Hatalmas erőfeszítés árán sikerült feltelepíteni (windows, codeblocks), de itt meg is állt a tudomány.
A sztorihoz hozzátartozik, hogy sajnos a programozás a mi szakunkon "másodlagos", tehát nem vagyok túl jó benne.
A kérdésem az lenne, hogy hogyan tovább, hogyan tudnám módosítani a programot, ha használom a gmp.h-t?
Válaszotokat előre is köszönöm -
camillus
tag
válasz
DrojDtroll #5069 üzenetére
Nem ez más lesz, de jobban utánanézve inkább nem kísérletezgetek.
-
sssirius
tag
válasz
#34322688 #5070 üzenetére
C, C++, C# is van (és még amiről nem tudok...)
A C++-nak teljesen C az alapja, csak megjelenik számos új lehetőség, többek között az objektumelvű programozáshoz szükséges típusok/eljárások/technológiák. Gyakorlatilag a C nyelv bővítése.
A C# már később jött létre, ez is sokat merít a C-ből, illetve C++-ból (a C bizonyos értelemben a legtöbb ma ismert prog.nyelv alapja) -
camillus
tag
Hi!
Ha nem írom be a forrásba, hogy milyen fejléc kell, akkor azt auto kiegészíti a gcc? Egyszer valami kiamardt az include után, dobott néhány warning-ot, de a progival nem volt semmi runtime error.
-
#34322688
törölt tag
Sziasztok.
Letöltöttem a Visual Studio 2012-tőt. Olyan kérdésem lenne, hogyan tudom beállítani így:A Visual Studio elindításakor tegyük a következőt:
1. Tools menü -> Settings
2. A Basic Settings helyett válasszuk az Expert Settings beállítást!
Nem találom, hol tudom beállítani. Nekem tools menü-options van, viszont itt nem található ez a beállítás.
Reiter István
C# programozás
lépésről lépésre , ennek a könyvnek az alapján szeretném kipróbálni. Igaz itt 2010-programot használ, lehet hogy csak abban kell?
Remélem valamennyire érthető voltam, köszi a segítséget. -
válasz
lotuska #5061 üzenetére
Én egy állapotgépet csinálnék, a következő állapotokkal:
t, te, m, mi, miz, mizu, és "üres". Ha t-t kap, akkor elkezd figyelni, hogy e jön-e, ha nem, printf("t");, és ha pedig kap egy t-t, utána pedig e-t, akkor azokat nem írja ki, hanem csak simán kiküldi azt, amit akarsz helyette.
Ezt bedobod egy while((c = getchar) != EOF) ciklusba, meg csinálsz az állapotgépnek egy switch-case szerkezetet, osz' kalap-kabát. -
sssirius
tag
válasz
lotuska #5061 üzenetére
Szia!
Én a helyedben a quicksearch algoritmust használnám: link
Ha megtalálod a kihelyettesítendő szöveget, jelenleg "én" és "mizu", akkor strcpy() függvénnyel összemásolod egy újabb char*-ba a szöveg előtti részt + helyettesítést + szöveg utáni részt.
De ha úgy jobban tetszik, akkor memset-el helyben cserélheted.Szerk.: Ha nem akarsz semmi extrát implementálni, akkor van valamelyik header-ben strstr() függvény, ami segíthet.
-
lotuska
tag
sziasztok, adott az alabbi feladat:
Írjunk egy programot, amely a szöveg szavait adott hozzárendelési szabály szerint átalakítja:
pl. szöveg: “te lány, én meg fiúna mizu, mizu, mizu?”
a szabály: “te”->en “mizu”->mu
az atalakított szöveg: en lány, én meg fiú
na mu, mu, mu?
a kerdesem, az hogyan kellene az alabbi kodot valtoztassam, hogy mukodjon?
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
void main()
{
char string[255];
char uj[255];
char egy[2];
char ketto[2];
char c;
int db;
int i = 0;
int vege;
printf("kerem a szoveget\n");
gets(string);
vege = strlen(string);
uj =" ";
printf("%s", string[0]);
egy = "en";
ketto = "mu";
db = 0;
while (string[i] != '\0')
{
if ((string[i] == 't') && (string[i + 1] == 'e'))
{
strncat(uj, egy, 2);
db = 1;
}
if ((string[i] == 'm') && (string[i + 1] == 'i') && (string[i + 2] == 'z') && (string[i + 3] == 'u'))
{
strncat(uj, ketto, 2);
db = 1;
}
if (db = 0)
{
c = string[i];
strncat(uj, c, 1);
}
i++;
db = 0;
}
vege = strlen(uj);
strncopy(string, uj, vege);
printf("Az uj szoveg: %s", string);
getchar();
}[ Módosította: Karma ]
-
sssirius
tag
válasz
#34322688 #5059 üzenetére
Nem mondanám. A kolléga amit írt szerintem arra vonatkozik, hogy a VS sok mindent megcsinál helyetted. Persze abból is lehet profitálni, ha azt neked kell megcsinálnod, hiszen tanulsz belőle. Ha a C:
jobban tetszik használd azt, majd kiderül, hogy elég-e mindaz amit nyújt... szerintem.
-
#34322688
törölt tag
Köszönöm mindenkinek az infót.
-
sssirius
tag
válasz
#34322688 #5052 üzenetére
Programozást tekintve semmi különbség, ahogy notepad-ben is nyugodtan tudsz programozni. Egyéb kényelmi szolgáltatásokban szerintem a Visual Studio többet nyújt. Lévén, hogy fizetős ez el is várható.
Valójában mindenki saját szája íze szeirint eldöntheti, hogy miben programoz. Ha lehetőséged van mindkettőt kipróbálni, akkor szerintem tedd azt és egy hét használat után el tudod dönteni melyik jön be jobban.
Pl. én utoljára VS-ben grafikus alkalmazást csináltam (DirectX/OpenGL). Nem tudom, hogy a Code:
locks milyen segítséget tudott volna nyújtani benne, de a VS elég jól hozzájárult.
-
#34322688
törölt tag
Nagy különbség van a Code Blocks és a Visual Studio között, programozást tekintve? Vagy a mit mondjuk a visuallal elkészítenek, az lehetséges code blockkal is?
-
sssirius
tag
válasz
DrojDtroll #5049 üzenetére
A termios.h headerben van definiálva a termios struktúra amin keresztül be tudsz állítani mindenfélét.
-
DrojDtroll
veterán
A soros port kezeléséhez tudtok valami jó anyagot?
-
kispx
addikt
válasz
#34322688 #5047 üzenetére
> "Valaki tudna ezzel kapcsolatos könyvet?"
A parancssorban lévő betűk nagyításával kapcsolatban?Ha C nyelvről szeretnél könyvet akkor a téma összefoglalóban van egy pár felsorolva.
Ha az IDE használatáról keresel akkor arról csak egy wiki tudok mutatni.
-
#34322688
törölt tag
Sziasztok.
Code Blocks programot kezdtem használni. Abban kérnék segítséget, hogyan lehet az elkészült program futatását jelző ablakban megjelenő szöveg nagyitását megoldani? Mert eléggé picik valamiért, és ezáltal olvashatatlan. -
DrojDtroll
veterán
válasz
alapz@j #5043 üzenetére
kipróbáltam:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int ch;
ch=getchar();
printf("\n%c", ch);
ch=_getch();
printf("\n%c", ch);
ch=getch();
printf("\n%c", ch);
return 0;
}A getch() és a _getch() ugyan azt csinálta, beolvasta a karakter az Enter lenyomása nélkül, amíg a getchar() csak az Enter lenyomásával.
-
alapz@j
tag
válasz
DrojDtroll #5042 üzenetére
Valaki kijavít, ha tévednék, de szerintem sima getch() (már) nincs. Van a conio.h-s _getch() és van a stdio.h-s getchar().
-
alapz@j
tag
válasz
DrojDtroll #5040 üzenetére
Nem befolyásol semmit, ez a függvény neve:
#include <conio.h>
int _getch( void );
wint_t _getwch( void ); -
Jester01
veterán
válasz
DrojDtroll #5038 üzenetére
Ah, hát ez egyszerűbb
-
Jester01
veterán
válasz
DrojDtroll #5036 üzenetére
Elvileg a SetConsoleMode függvénnyel ki kell kapcsolni az ENABLE_LINE_INPUT beállítást. De nem tudom, nekem linuxom van
-
Jester01
veterán
válasz
DrojDtroll #5034 üzenetére
Szabvány C-ben nem, csak rendszerfüggő módon.
-
DrojDtroll
veterán
Lehetséges C-ben úgy beolvasni egy karaktert, vagy billentyűlenyomást, hogy nem kell hozzá Entert ütni?
-
Akinek a ternary operator bántja a szemét, az szerintem menjen el kapálni
-
-
axioma
veterán
válasz
alapz@j #5028 üzenetére
Hat, amint nem magadnak hanem csapatban es/vagy kesobb atadassal dolgozol, ezek a szep megoldasok adjak a karbantarthatatlansagot. Persze jo neked, ha ezzel akarsz kikerulhetetlen lenni a cegnel, de me'g akkor is, mielott azza valnal, velhetoleg egy projvez eszreveszi.
[Az meg hogy lenne mar logikus matematikailag, hogy az 1 a paros jele, 2 a paratlane???]
Persze nem arrol van szo, hogy ezt a ket sort nem kutya kotelessege barmely programozonak megfejteni tudni, hanem arrol, hogy ezt a stilust ha kicsit is nagyobb meretben is megtartod, akkor jon az hogy jol mukodik de egy rossz kod. Es most arrol nem is beszeltunk, hogy beszedesebb konstansoknal kisebb az osszekeveresi lehetoseg (ha meg hiba soran - pl. atkuldod masik gepre - modosulhat is, akkor nem art ne'mi Hamming-tavolsag, nalunk a C-sek kod.szab.-aban benne van hogy minden konstansra azt is alkalmazni kell).
Java-ban meg irtam en mar prog.verseny feladatokat is, egy darab main-nel, nem csak objektum-hegyek eseten alkalmazhato[jo hat nem volt idealis valasztas, de abban voltam a leggyakorlottabb, es kezrealloan telepitett kornyezet is ahhoz volt].
-
alapz@j
tag
Persze szubjektív, de számomra a C éppen az ehhez hasonló okos, elegáns, tömör és hatékony megoldásokat jelenti, aminek része az interfész átgondolt felépítése is. Az e() fgv. éppen azért tud ilyen jól működni, mert az általa visszaadott értékek párhuzamban vannak a megoldás matematikai összefüggéseivel.
Ha Javában írnám, tuti én is meghívnék benne 5 Factory-t, 3 Managert-t és 4 Providert, miközben Hibernate-el pakolnám relációs adatbázisba a közben keletkező objektumok százait
-
axioma
veterán
válasz
alapz@j #5026 üzenetére
Nem is a ternary a problemas nekem (bar egyes kodolasi szabvanyok tiltjak), hanem az hogy kihasznalod az osszefuggest. Ha ezt irtad volna tomoritesnek:
return a == 0 ? 0 :
a%2==0 ? 1 : 2;
akkor nem szoltam volna, mert tomor, pont ugyanaz mint az if-ek, es barmikor az egeszek kicserelhetoek. Persze meg jobb lenne kulon definialni a konstansokat, es utana
return a == 0 ? RESULT_0 :
a%2==0 ? RESULT_EVEN : RESULT_ODD; -
axioma
veterán
-
alapz@j
tag
Ma reggel eszembe jutott még egy tömörítési lehetőség, de már csak haladóknak
int e(unsigned int a) {
return a == 0 ? 0 : (a % 2) + 1;
} -
bucsupeti
senior tag
Pontosan erre gondoltam. Azért kérték hogy bekérés és kiiratás a main()-ban legyen és ne a függvényben, mert így csupán az infót adja vissza a függvény csak a lényeget csinálja. Az hoyg azzal mit kezdesz (pl kiiratod) az már a függvénytől független lesz.
Itt már el is lehetne kezdeni az MVC modellről, de szerintem az még nem időszerű
A két kolléga tanácsait fogadd meg! Sokkal olvashatóbbá és egyszerűbbé lehet tenni a kódot ezekkel a módszerekkel.
-
-
alapz@j
tag
Ha elfogadsz még egy tanácsot: próbálj meg átláthatóbb forrást írni, mert hosszabb programnál el fogsz veszni a kapcsos zárójelekben
#include<stdio.h>
int e(int a) {
if (a == 0) return 0;
return (a % 2) + 1;
}
int main() {
int a;
printf("Adj meg egy szamot: \n");
scanf("%d", &a);
switch (e(a)) {
case 1:
printf("A szam paros\n");
break;
case 2:
printf("A szam paratlan\n");
break;
case 0:
printf("A szam nulla\n");
break;
}
return 0;
} -
HAX
tag
válasz
bucsupeti #5016 üzenetére
Köszönöm ez nagy segítség volt!
Most már kicsit tisztább is lett a kép közben.
Így gondoltad ugye?#include<stdio.h>
int e(int a)
{
if (a==0)
{
return 0;
} else if (a%2==0)
{
return 1;
} else { return 2;
}
}
int main()
{
int a;
printf("Adj meg egy szamot: \n");
scanf("%d", &a);
if (e(a)==1)
{
printf("A szam paros\n");
} else if (e(a)==2)
{
printf("A szam paratlan\n");
}else
{
printf("A szam nulla\n");
}
return 0;
} -
HAX
tag
válasz
Jester01 #5014 üzenetére
Köszönöm a segítséget, kijavítottam a programot így már jó.
Ez a javított függvény:
int e(int a)
{
if (a==0)
{
printf("A szam nulla\n");
} else if (a%2==0)
{
printf("A szam paros\n");
} else { printf("A szam paratlan\n");
}
return 0;
}Igazad van a kiíratással kapcsolatban is, viszont ezt a függvényes, visszatérési értékes dolgot még nem teljesen tettem magamévá. Ha nem túl nagy teher akkor megtudnád nekem írni (vagy átírni) a feladatnak megfelelő függvényt? Ez valószínűleg jó támpont lenne nekem a többi feladathoz, inkább vizuális típus vagyok így könnyebben feltudnám fogni.
-
Jester01
veterán
Azért mondja a nullára, hogy páros, mivel az
A sorrend a rossz, először a nullát ellenőrizd és csak utána a paritást.
Egyébként a feladatnak nem felel meg a programod, hiszen van kiírás a (csodaszép nevű) e függvényben is. A visszatérési érték pedig mindig nulla.
Annak sem sok értelme van, hogy else if (a%2!=0), hiszen az else már magában is ezt jelenti, tekintve, hogy az előző feltétel if (a%2==0) volt.
-
HAX
tag
Sziasztok.
Most ismerkedem a C nyelvvel, előtte nagyon-nagyon kezdő szinten foglalkoztam a C++ -al (Középiskolás szint).
Sokat gyakorolgatok itthon, most egy olyan programot szeretnék írni ami bekér egy egész számot és megállapítja, hogy páros vagy páratlan vagy nulla. A feladat kiköti, hogy a bekérés és a kiíratás a main függvényben történjék de a működés lényegi része külön függvényben történjen. (És if szerkezettel kell megoldani.)
A programot megírtam, a páros és páratlan számokat jól megállapítja de a nullát megállapítani nem sikerül.
Amit tudni kell, hogy Ubuntu-n gedit szövegszerkesztőben dolgozom és a gcc -Wall -o paranccsal fordítok (terminálban), hibát nem is dob fel, csak a nullás értékre ugyanúgy páros értéket dob mint a páros számokra.
Itt a megoldásom:#include<stdio.h>
int e(int a)
{
if (a%2==0)
{
printf("A szam paros\n");
} else if (a%2!=0)
{
printf("A szam paratlan\n");
} else { printf("A szam nulla\n");
}
return 0;
}
int main()
{
int a;
printf("Adj meg egy szamot: \n");
scanf("%d", &a);
printf("%d", e(a));
return 0;
}Nem tudom mi lehet a hiba, remélem tudtok segíteni.
-
-
tototos
addikt
válasz
DrojDtroll #5010 üzenetére
Hát mekkora méretet gondolsz a tömbnek? A foglalások számát nem közli a feladat így nem tudod mekkora tömbre van szükséged. A struktúra meg sokkal átláthatóbbá teszi a kódot, mint ha külön tömbben tárolod az összes adatot. Tehát ha már tömbbel szeretnéd megoldani akkor is inkább egy struktúra tömb a javasolt szerintem,
-
DrojDtroll
veterán
válasz
tototos #5009 üzenetére
A struktura nélküli, több tömbös, megoldás sokkal nehézkesebb?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define foglalasok_max_szama 100
#define cegnev_max_hossza 100
void foglalas();
void kiiras();
void kilep();
char ch, cegnev[foglalasok_max_szama][cegnev_max_hossza];
int ev[foglalasok_max_szama], honap[foglalasok_max_szama], nap[foglalasok_max_szama], kezdo_ora[foglalasok_max_szama], zaro_ora[foglalasok_max_szama];
int ossz_foglalas_szama=0, i;
int main()
{
int lehetoseg;
do{
printf("1\tUj foglalas\n");
printf("2\tMeglevok kiirasa\n");
printf("3\tKilepes\n");
scanf("%d", &lehetoseg);
if(lehetoseg==1){
foglalas();
}
if(lehetoseg==2){
kiiras();
}
}while(lehetoseg!=3);
kilep();
return 0;
}
void foglalas(){
printf("Uj foglalas\n");
}
void kiiras(){
printf("Eddigi foglalasok kiirasa\n");
}
void kilep(){
printf("A kilepeshez nyomja meg az Enter billentyut!\n");
getch(ch);
}Eddig ennyit írtam meg belőle, de nem hiszem hogy többhöz kedvem lesz már ma este.
Ez rossz irány, és elgondolás?
Ezeket azért kérdem, mert én is még csak most tanulok, és szerintem tudni, mit hogy lehet a legjobban megvalósítani.
-
DrojDtroll
veterán
Én úgy csinálnám, hogy létrehoznék mindegyik adatnak egy tömböt.
Amikor új időpontot kell felvenni akkor ideiglenesen eltárolnám változókban, majd megkeresném hova kell betenni a tömbbe. A tömböt, az adott megtalált helyről egyel jobbra tolnám. pl::
j=tömb utolsó elemének indexe
t[j]=t[j+1]
j--
Természetesen ez addig míg be nem akarunk szúrni.
Betesszük az adatokat a tömbbe.Kiíratáskor csak végigfutnák tömbökön, egyetlen ciklussal és printf()-el.
-
kine
újonc
Sziasztok!
Szeptember óta részképzésre járok az egyetemen informatika tanári szakon. A C programozási nyelvet tanítják.Néhány óra alatt elmondták az egész programozási nyelvet, pár dolgot önállóan kellene mehtanulni, majd feladták a következő beadandó feladatot.Egy művelődési ház nagytermét számos cég szeretné lefoglalni különböző rendezvényekre.
A foglaláskor meg kell adni a kért dátumot (év, hónap, nap) és időintervallumot (órától óráig), illetve a foglaló cég nevét. A cég nevén kívül minden bekért adat egész szám.
Írjunk egy programot, mely kiírja az alábbi választási lehetőségeket és megvalósítja a hozzájuk tartozó műveleteket:
1. Új foglalás
2. Eddigi foglalások kiírása
3. Vége
Amennyiben a felhasználó az 1. vagy 2. menüpontot választja, úgy a megfelelő művelet elvégzése után a fenti menü ismételten megjelenik.
1. Új foglalás művelet leírása
a. A foglalásokat a felhasználó tetszőleges időrendi sorrendben adhatja meg.
b. Minden adatbekéréskor egyértelműen tájékoztatni kell a felhasználót arról, hogy mit, hogyan kell beírnia.
c. Minden foglaláskor ellenőrizni kell, hogy szabad-e a terem a kívánt időintervallumban, és ha nem, akkor jelezni kell a felhasználónak, hogy nem sikerült a foglalás.
d. Minden foglalás után a foglalások kezdőidőpontjuk szerinti növekvő sorrendben kell legyenek eltárolva.
2. Eddigi foglalások kiírása művelet
Kiírja a terem teljes foglaltságát időrendi sorrendben. Ez esetben a hónapot ne számmal, hanem a nevével (pl. "januar") írja ki.
A főmenü három műveletét kötelezőképpen külön függvényekben kell megvalósítani, de természetesen több függvény is használható (sőt ajánlott).
A program semmilyen angol nyelvű, vagy a felhasználó által nem érthető hibajelzést nem írhat ki.Nem azt kérem, hogy írjátok meg helyettem a programot, hanem azt, hogy merre induljak, hogyan gondolkodjam. Komolyabb előismeretekkel nem rendelkezem, nem tanultam még ilyen szintű programozást.
Ha tudtok kérlek segítsetek. Előre is köszönöm! -
Gekkocy
csendes tag
válasz
DrojDtroll #5003 üzenetére
Nagyon szépen köszönöm a segítséget!
-
DrojDtroll
veterán
válasz
Ereshkigal #5004 üzenetére
Nekünk, most középsuli másodikban vannak ilyenek.
Természetesen én nem itt tartok, túl unalmasak a programozás órák.
Egyetemeken nagyon nehéz a programozás, pl.: Debrecenben?
-
axioma
veterán
válasz
Gekkocy #5001 üzenetére
Na de ez azert keves, hogy nem sikerult. Hol akadtal el? Beolvasas OK? Van M hosszu tombod? Ket egymasba agyazott ciklusod?
Amugy jo ez a feladat, mert eredetileg matekfeladatkent mind az M o"r vegigmegy (vagy egy o"r M-szer, mind1), es a megoldas a negyzetszamok (azoknak van csak paratlan darab pozitiv osztoja). Felbehagyva viszont az n felettiekre mar nem ennyire egyszeruen mondhato meg, hogy mi marad. -
Gekkocy
csendes tag
Sziasztok!
Szeretnék egy kis segítséget kérni a nálam okosabbaktól.
Kaptam egy kötelező programot amivel sajnos nem nagyon tudtam mit kezdeni. Többféle módon próbáltam megírni, de kevés sikerrel.A feladat:
Egy börtönben M börtönőr van és M zárt cella. A következő műveletsor szimulálása a feladat. Az 1.
őr minden ajtót kinyit. A 2. őr minden második ajtót bezár. A 3. őr minden 3. ajtót bezár, ha nyitva volt,
és kinyit, ha zárva volt. A többi őr hasonlóan cselekszik. Kérdés, mely cellák ajtaja van nyitva, miután
az n. őr végigment a cellákon?Bemenet
A bemenet két egész szám: a börtönőrök illetve cellák száma (0 < M � 1000) és a minket érdeklő őr
sorszáma (0<n<M) egy szóközzel elválasztva.
Aki tud kérem segítsen, akár tanácsokkal, kódrészletekkel. bármivel. Minden segítségnek nagyon örülök
A segítségeteket előre is köszönöm!
Ú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!
- Acer Nitro V ANV15 - 15.6"FHD IPS 144Hz - i5-13420H - 16GB - 512GB - Win11 - RTX 3050 - 2,5 év gari
- GIGABYTE GeForce RTX 4060 EAGLE OC 8G (GV-N4060EAGLE OC-8GD
- TP-Link Archer AX73 AX5400 Router
- ÚJ TP-Link Archer AX55 AX3000 Router
- Intel Core i5-14600K 14-Core 3.4GHz LGA1700 Box (BX8071514600K) Processzor
- BESZÁMÍTÁS! MSI B460M i5 10400F 16GB DDR4 512GB SSD RX 6650XT 8GB Cooler Master MB600L Chieftec 600W
- Frederick Forsythe: Isten ökle (nem olvasott)
- Dell D6000 univerzális dokkoló USB-C/ USB-A, DisplayLink & Dell WD15 (K17A) USB-C + 130-180W töltő
- Telefon felvásárlás!! Samsung Galaxy Note 10+/Samsung Galaxy Note 20/Samsung Galaxy Note 20 Ultra
- Bomba ár! Dell Latitude 7280 - i5-7GEN I 8GB I 256SSD I 12,5" FHD I Cam I W11 I Garancia!
Állásajánlatok
Cég: CAMERA-PRO Hungary Kft
Város: Budapest
Cég: Liszt Ferenc Zeneművészeti Egyetem
Város: Budapest