2013. május 22., szerda

Hozzászólások

(#501) ltz400


ltz400
(lelkes újonc)

Sziasztok!
Még kezdő vagyok programozás terén.C nylvet kezdtem el tanulni.Segítségeteket szeretném kérni.Kellene egy olyan program amely bekér két számot majd eldönti páros vagy páratlan.Asszem modf-el kéne valamit ügyeskedni hogy ha elosszuk a számot 2-vel és nincs maradék páros ha van páratlan.

(#502) doc válasza ltz400 (#501) üzenetére


doc
(MODERÁTOR)
LOGOUT blog

modf? sosem hallottam rola :D

annak eldontese hogy paros-e az x szam: !(x%2)
tehat pl:
if (!(x%2)) printf("paros\n");
else printf("paratlan\n");

Aláírás (nem kötelező megadni - minden hozzászólásnál automatikusan az üzenet végéhez íródik)

(#503) ltz400 válasza doc (#502) üzenetére


ltz400
(lelkes újonc)

pedig létezik:)
Megtennéd hogy leírod az egész programot?
PLS

[ Szerkesztve ]

(#504) amargo válasza ltz400 (#503) üzenetére


amargo
(PH! addikt)

A moduló jobb erre, de Te ezt kerested:

//------------------------------------------
int rounder(double pix)
{
double egesz = 0, tort = 0;
tort = modf(pix,&egesz);
if(tort >= 0.5)
{
pix = ceil(pix);
}
else if(tort < 0.5)
{
pix = floor(pix);
}

return pix;
}//int rounder
//------------------------------------------

Szerk:
Kódba raktam

[ Szerkesztve ]

“The workdays are long and the weekend is short? Make a turn! Bike every day, bike to work too!” const int GetAnswerToLifeTheUniverseAndEverything() const{ return 42; }

(#505) Fire/SOUL/CD válasza doc (#502) üzenetére


Fire/SOUL/CD
(Szakértő)
LOGOUT blog

Hali!

Hát szomorú ha nem hallottál róla, a MATH.H-ban van. Egy lebegőpontos számot "oszt" két részre, egész ill törtrészre. (vagy egyszerűbben a tizedespont jobb oldalára ill bal oldalára)
persze abban egyetértek, hogy eldönteni egy számról, hogy páros vagy páratlan tök felesleges használni(de lehet)

Fire.

UI: amargo kódja, már kerekítéssel is foglalkozik(0,5-től felfelé kerekítünk, egyébként meg lefeleé)
Annyi "kritika", ha valami NEM NAGYOBB EGYENLŐ MINT 0,5, akkor felesleges az ELSE után az összehasonlítás.... :DDD (Amargo kódjáról van szó)

[ Szerkesztve ]

Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)

(#506) ltz400 válasza amargo (#504) üzenetére


ltz400
(lelkes újonc)

Sajnos nem nagyon akar futni.:(
Ötlet?
Neked megy?

(#507) doc válasza Fire/SOUL/CD (#505) üzenetére


doc
(MODERÁTOR)
LOGOUT blog

ja, kozben utananeztem hogy mit is csinal, de sosem volt ra szuksegem :)
ltz400: ez nem teljes program, csak egy fuggveny, ha mindenaron modf-et akarsz hasznalni, akkor meghivhatod a megadott szammal mint parameterrel

[ Szerkesztve ]

Aláírás (nem kötelező megadni - minden hozzászólásnál automatikusan az üzenet végéhez íródik)

(#508) amargo válasza Fire/SOUL/CD (#505) üzenetére


amargo
(PH! addikt)

Jogos!
Én csak alakiságot figyeltem.

“The workdays are long and the weekend is short? Make a turn! Bike every day, bike to work too!” const int GetAnswerToLifeTheUniverseAndEverything() const{ return 42; }

(#509) ltz400 válasza doc (#507) üzenetére


ltz400
(lelkes újonc)

Megteszed hogy leírod a program teljes forráskódját?
Bocsi a sok offért.

(#510) !wannabe válasza ltz400 (#509) üzenetére


!wannabe
(tag)

Nem OFF-ban írkálsz

(#511) rothkrisz


rothkrisz
(újonc)

Sziasztok segítséget szeretnék kérni.

Sakktáblarajzoló programot kellen írnom ami a megrajzolt sakktáblán 1,2,5 ös számokat helyez el pl.A32(A oszlop 3 sor egy 2 érme kerül.)

a bekérés * jelig tart.

Remélem érthető

előre is Köszönöm

(#512) Fire/SOUL/CD válasza rothkrisz (#511) üzenetére


Fire/SOUL/CD
(Szakértő)
LOGOUT blog

Hali!

Kellemes feladatokat kaptok, nekem is jó, mert "retrózhatok". :DDD
Nos, több megoldása is lehet a feladatnak, Én az alábbi módszert választottam, elsősorban mert x64 Vista alatt ne futnak a DOS-os c/cpp editorok, ebből adódóan a kurzorpozicíóval, assembly betéttel, megszakításokkal nem tudok mit kezdeni.(ugyanis úgy is meg lehetett volna oldani, hogy egyből megjelenik a tábla, és egyből megjelenik rajt a bevitt mezőn az "érme"....)

Lesz bent egy teljesen kikommentezett rész, azt csak azért hagytam bent, hogy még egy mátrix definíciót is láss. Sajna ott viszont már "keményen" mútatókkal lehet volna csak operálni, és ha valaki nincs tisztában velük, akkor tényleg nem fog érteni belőle semmit....

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

#define CB_XY 17

/*
unsigned char ChessBoard_Matrix[][CB_XY]={
"╔","═","╦","═","╦","═","╦","═","╦","═","╦","═","╦","═","╦","═","╗",
"║"," ","║"," ","║"," ","║"," ","║"," ","║"," ","║"," ","║"," ","║",
"╠","═","╬","═","╬","═","╬","═","╬","═","╬","═","╬","═","╬","═","╣",
"║"," ","║"," ","║"," ","║"," ","║"," ","║"," ","║"," ","║"," ","║",
"╠","═","╬","═","╬","═","╬","═","╬","═","╬","═","╬","═","╬","═","╣",
"║"," ","║"," ","║"," ","║"," ","║"," ","║"," ","║"," ","║"," ","║",
"╠","═","╬","═","╬","═","╬","═","╬","═","╬","═","╬","═","╬","═","╣",
"║"," ","║"," ","║"," ","║"," ","║"," ","║"," ","║"," ","║"," ","║",
"╠","═","╬","═","╬","═","╬","═","╬","═","╬","═","╬","═","╬","═","╣",
"║"," ","║"," ","║"," ","║"," ","║"," ","║"," ","║"," ","║"," ","║",
"╠","═","╬","═","╬","═","╬","═","╬","═","╬","═","╬","═","╬","═","╣",
"║"," ","║"," ","║"," ","║"," ","║"," ","║"," ","║"," ","║"," ","║",
"╠","═","╬","═","╬","═","╬","═","╬","═","╬","═","╬","═","╬","═","╣",
"║"," ","║"," ","║"," ","║"," ","║"," ","║"," ","║"," ","║"," ","║",
"╠","═","╬","═","╬","═","╬","═","╬","═","╬","═","╬","═","╬","═","╣",
"║"," ","║"," ","║"," ","║"," ","║"," ","║"," ","║"," ","║"," ","║",
"╚","═","╩","═","╩","═","╩","═","╩","═","╩","═","╩","═","╩","═","╝"

};
*/

int ChessBoard_Matrix[CB_XY][CB_XY]={
{0xC9,0xCD,0xCB,0xCD,0xCB,0xCD,0xCB,0xCD,0xCB,0xCD,0xCB,0xCD,0xCB,0xCD,0xCB,0xCD,0xBB},
{0xBA,0x20,0xBA,0x20,0xBA,0x20,0xBA,0x20,0xBA,0x20,0xBA,0x20,0xBA,0x20,0xBA,0x20,0xBA},
{0xCC,0xCD,0xCE,0xCD,0xCE,0xCD,0xCE,0xCD,0xCE,0xCD,0xCE,0xCD,0xCE,0xCD,0xCE,0xCD,0xB9},
{0xBA,0x20,0xBA,0x20,0xBA,0x20,0xBA,0x20,0xBA,0x20,0xBA,0x20,0xBA,0x20,0xBA,0x20,0xBA},
{0xCC,0xCD,0xCE,0xCD,0xCE,0xCD,0xCE,0xCD,0xCE,0xCD,0xCE,0xCD,0xCE,0xCD,0xCE,0xCD,0xB9},
{0xBA,0x20,0xBA,0x20,0xBA,0x20,0xBA,0x20,0xBA,0x20,0xBA,0x20,0xBA,0x20,0xBA,0x20,0xBA},
{0xCC,0xCD,0xCE,0xCD,0xCE,0xCD,0xCE,0xCD,0xCE,0xCD,0xCE,0xCD,0xCE,0xCD,0xCE,0xCD,0xB9},
{0xBA,0x20,0xBA,0x20,0xBA,0x20,0xBA,0x20,0xBA,0x20,0xBA,0x20,0xBA,0x20,0xBA,0x20,0xBA},
{0xCC,0xCD,0xCE,0xCD,0xCE,0xCD,0xCE,0xCD,0xCE,0xCD,0xCE,0xCD,0xCE,0xCD,0xCE,0xCD,0xB9},
{0xBA,0x20,0xBA,0x20,0xBA,0x20,0xBA,0x20,0xBA,0x20,0xBA,0x20,0xBA,0x20,0xBA,0x20,0xBA},
{0xCC,0xCD,0xCE,0xCD,0xCE,0xCD,0xCE,0xCD,0xCE,0xCD,0xCE,0xCD,0xCE,0xCD,0xCE,0xCD,0xB9},
{0xBA,0x20,0xBA,0x20,0xBA,0x20,0xBA,0x20,0xBA,0x20,0xBA,0x20,0xBA,0x20,0xBA,0x20,0xBA},
{0xCC,0xCD,0xCE,0xCD,0xCE,0xCD,0xCE,0xCD,0xCE,0xCD,0xCE,0xCD,0xCE,0xCD,0xCE,0xCD,0xB9},
{0xBA,0x20,0xBA,0x20,0xBA,0x20,0xBA,0x20,0xBA,0x20,0xBA,0x20,0xBA,0x20,0xBA,0x20,0xBA},
{0xCC,0xCD,0xCE,0xCD,0xCE,0xCD,0xCE,0xCD,0xCE,0xCD,0xCE,0xCD,0xCE,0xCD,0xCE,0xCD,0xB9},
{0xBA,0x20,0xBA,0x20,0xBA,0x20,0xBA,0x20,0xBA,0x20,0xBA,0x20,0xBA,0x20,0xBA,0x20,0xBA},
{0xC8,0xCD,0xCA,0xCD,0xCA,0xCD,0xCA,0xCD,0xCA,0xCD,0xCA,0xCD,0xCA,0xCD,0xCA,0xCD,0xBC}

};

int main()
{
int i,j,k;
char str[256];

while(0==0) {
printf("Enter coordinate and value: ");
strupr(gets(str));
if (str[0]=='*') { printf("\nGenerating Chessboard\n\n"); break; }
if (!strlen(str) || strlen(str)>3) { printf("Bad SIZE found [%s=>%d], skipped...\n",str,strlen(str)); continue; }
if (str[0]<'A' || str[0]>'H') { printf("Bad COLUMN found [%c], skipped...\n",str[0]); continue; }
if (str[1]<'1' || str[1]>'8') { printf("Bad ROW found [%c], skipped...\n",str[1]); continue; }
if (str[2]!='1' && str[2]!='2' && str[2]!='5') { printf("Bad VALUE found [%c], skipped...\n",str[2]); continue; }

ChessBoard_Matrix[('8'-str[1])*2+1][(str[0]-'A')*2+1]=str[2];
}

for(i=0,k=8;i<CB_XY;i++) {
if ((i % 2)) printf("%d ",k--);
else printf(" ");
for(j=0;j<CB_XY;j++)
printf("%c",ChessBoard_Matrix[i][j]);
printf("\n");
}
for(printf(" "),i=0;i<8;printf("%c ",'A'+i),i++);

printf("\n\n");

return 0;
}

Fire.

UI: remélem jól értelmeztem a feladatot... :U

Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)

(#513) Fire/SOUL/CD válasza rothkrisz (#511) üzenetére


Fire/SOUL/CD
(Szakértő)
LOGOUT blog

Hali!

Elnézésedet kérem, de voltam olyan ügyes, hogy nem olvastam el a privát üzeneted. :W
Majd ránézek ígérem, mert az általam kreált kód, "enyhén szólva" nem hasonlít a forrásodra a privátban.

Mégegyszer, bocsi! :(((

Fire.

Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)

(#514) Fire/SOUL/CD válasza Fire/SOUL/CD (#513) üzenetére


Fire/SOUL/CD
(Szakértő)
LOGOUT blog

Hali!

Küldtem privbe.

Fire.

Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)

(#515) ltz400


ltz400
(lelkes újonc)

Nekem nem tudtok segíteni?

(#516) Fire/SOUL/CD válasza ltz400 (#515) üzenetére


Fire/SOUL/CD
(Szakértő)
LOGOUT blog

Hali!

Még az a páros-páratlan dolog érdekel? Esetleg a "teljes" forrás érdekel?
Írd le mégegyszer légyszives(vagy link), ha tudok segítek...

Fire.

Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)

(#517) !wannabe válasza Fire/SOUL/CD (#516) üzenetére


!wannabe
(tag)

Szerintem ez érdekli. Jaja ez a páratlan-páros dolog, viszont header file-okkal, szóval teljes kód az igény ha jól értelmezem.

[ Szerkesztve ]

(#518) speedtouch


speedtouch
(újonc)

Hali!

Lenne egy olyan gondom, hogy visual studioban olyan programot kell írnom, ami ha bekér egy számot, akkor azt LDC-el formátumban mutassa majd ki. Az lenne a probléma, hogy nem tudom, hogy állítsam be ezt a formát hozzá.

(#519) Fire/SOUL/CD válasza speedtouch (#518) üzenetére


Fire/SOUL/CD
(Szakértő)
LOGOUT blog

Hali!

Sajna VS-ben nem dolgozom, de ha egy példával illusztrálnád, hogy VS-ben mi is az a LDC formátum, az sokat segítene... :DDD

pl: 1234567 a szám és ebből lesz 1980.01.01 vagy valami

Fire.

[ Szerkesztve ]

Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)

(#520) speedtouch


speedtouch
(újonc)

http://e-oktat.pmmf.hu/webgui/www/uploads/images/677/hf2.pdf

Itt a 9-es feladat. (lehet, hogy rosszul fogalmaztam az előbb)

(#521) Fire/SOUL/CD válasza speedtouch (#520) üzenetére


Fire/SOUL/CD
(Szakértő)
LOGOUT blog

Hali!

:DDD :DDD :DDD
Így már más, LCD nem LDC, így érthető...

.NET-be sajna nem tudok segíteni(ezért most nem pakolom fel a VS-t), de ha sima C megfelel, akkor oké.

Fire.

Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)

(#522) speedtouch


speedtouch
(újonc)

Bocsi a helytelen leírásért, még korán volt, mikor írtam :DDD
Bármilyen segítségnek nagyon örülnék, hátha el tudok indulni utánna :)

(#523) Fire/SOUL/CD válasza speedtouch (#522) üzenetére


Fire/SOUL/CD
(Szakértő)
LOGOUT blog

Hali!

A kód Code::blocks-ban íródott, sima Ansi C. Ha valami nem érthető esetleg, akkor írj nyugodtan.

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

#define CS_Y 38
#define CS_X 5

int LCD_Digits[CS_X][CS_Y]={
{0x20,0xC9,0xCD,0xBB, 0x20,0xCB, 0x20,0xCD,0xCD,0xBB, 0x20,0xCD,0xCD,0xBB, 0x20,0xCB,0x20,0xCB, 0x20,0xC9,0xCD,0xCD, 0x20,0xC9,0xCD,0xCD, 0x20,0xCD,0xCD,0xBB, 0x20,0xC9,0xCD,0xBB, 0x20,0xC9,0xCD,0xBB},
{0x20,0xBA,0x20,0xBA, 0x20,0xBA, 0x20,0x20,0x20,0xBA, 0x20,0x20,0x20,0xBA, 0x20,0xBA,0x20,0xBA, 0x20,0xBA,0x20,0x20, 0x20,0xBA,0x20,0x20, 0x20,0x20,0x20,0xBA, 0x20,0xBA,0x20,0xBA, 0x20,0xBA,0x20,0xBA},
{0x20,0xBA,0x20,0xBA, 0x20,0xBA, 0x20,0xC9,0xCD,0xBC, 0x20,0xCD,0xCD,0xB9, 0x20,0xC8,0xCD,0xB9, 0x20,0xC8,0xCD,0xBB, 0x20,0xCC,0xCD,0xBB, 0x20,0x20,0x20,0xBA, 0x20,0xCC,0xCD,0xB9, 0x20,0xC8,0xCD,0xB9},
{0x20,0xBA,0x20,0xBA, 0x20,0xBA, 0x20,0xBA,0x20,0x20, 0x20,0x20,0x20,0xBA, 0x20,0x20,0x20,0xBA, 0x20,0x20,0x20,0xBA, 0x20,0xBA,0x20,0xBA, 0x20,0x20,0x20,0xBA, 0x20,0xBA,0x20,0xBA, 0x20,0x20,0x20,0xBA},
{0x20,0xC8,0xCD,0xBC, 0x20,0xCA, 0x20,0xC8,0xCD,0xCD, 0x20,0xCD,0xCD,0xBC, 0x20,0x20,0x20,0xCA, 0x20,0xCD,0xCD,0xBC, 0x20,0xC8,0xCD,0xBC, 0x20,0x20,0x20,0xCA, 0x20,0xC8,0xCD,0xBC, 0x20,0xCD,0xCD,0xBC}

};

int main()
{
int i,j,LCD_Digit_Index,LCD_Digit_Width,k;
char num[255];

printf("Type INTEGER number: ");

if (!strlen(gets(num))) {
printf("\n\nINTEGER not found...\nShow all LCD digits and EXIT\n\n");
for (i=0;i<CS_X;i++) {
for (j=0;j<CS_Y;j++)
printf("%c",LCD_Digits[i][j]);
printf("\n");
}
return -1;
}

printf("\n\n");
for (i=0;i<strlen(num);i++)
if(num[i]<'0' || num[i]>'9') {
printf("Is NAN [Not A Number]...\nEXIT");
return -1;
}

for (i=0;i<CS_X;i++) {
for (j=0;j<strlen(num);j++) {
LCD_Digit_Index = num[j]-'0'>1 ? (num[j]-'0')*4-2 : (num[j]-'0')*4;
LCD_Digit_Width = num[j]-'0'==1 ? 2 : 4;
for (k=0;k<LCD_Digit_Width;k++)
printf("%c",LCD_Digits[i][LCD_Digit_Index+k]);
}
printf("\n");
}

return 0;
}

Fire.

Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)

(#524) speedtouch válasza Fire/SOUL/CD (#523) üzenetére


speedtouch
(újonc)

Hali!

Uhh isten vagy. Köszi nagyon. :)
Prímán működik :)

(#525) cellpeti


cellpeti
(PH! kedvence)

Sziasztok!
Van egy ilyen feladat,hogy:
Adott egy pozitív egész szám, mint forintban kifizetendő pénzösszeg. Fizessük ki a legkevesebb címlet felhasználásával!

Tehát,ha jól értem a feladatot,akkor:
Be kell kérni egy összeget a billentyűzetről és azt felbontani,ugye?
Mivel pozitív egész számról van szó,ezt rakhatom nyugodtan "int" változóba,majd be kell kérnem a billről egy összeget. majd maradékos osztással kell kiszámolnom? Vagy sima osztással? :U

|| Dell Latitude E4300 || Nokia E72 || HTC One S ||

(#526) PazsitZ válasza cellpeti (#525) üzenetére


PazsitZ
(PH! addikt)

Haladsz a legnagyobb címlettől a legkisebbig. Ezeket berakhatod egy tömbbe. [20000,10000,5000...]
Ha az összeg nagyobb, mint a címlet: kivonod a címletet a pénzösszegből, letároloda címletet majd újravizsgálod.
Ha kisebb: kisebb címletre lépsz.
Ha a pénzösszeg nulla kiírod a letárolt címleteket.

Szvsz ha aktualizálni akarod beolvasásnál szabd ki, hogy 5-re vagy nullára végződjön a pénzösszeg.

"...kis zártkörû PH-s imdb..." :D - http://phmovies.pazsitz.hu - http://pazsitz.hu -

(#527) cellpeti válasza PazsitZ (#526) üzenetére


cellpeti
(PH! kedvence)

De ha kivonom a pénzösszegből a címletet,akkor nem kapom meg,hogy hány db kell belőle nem?
Azt nem osztani kell? Hogy határozom meg,hogy 0 vagy 5 legyen a vége?

[ Szerkesztve ]

|| Dell Latitude E4300 || Nokia E72 || HTC One S ||

(#528) dabadab válasza cellpeti (#527) üzenetére


dabadab
(MODERÁTOR)
LOGOUT blog

p++

:)

Falsus in uno, falsus in omnibus.

(#529) cellpeti válasza dabadab (#528) üzenetére


cellpeti
(PH! kedvence)

Rohadtul nem vágom,hogy most mi van!!:(:( :O :O

|| Dell Latitude E4300 || Nokia E72 || HTC One S ||

(#530) cellpeti


cellpeti
(PH! kedvence)

Hogyan kell bekérni a billről számokat?
Hogyan töltök fel tömböt C-ben??

|| Dell Latitude E4300 || Nokia E72 || HTC One S ||

(#531) dabadab válasza cellpeti (#529) üzenetére


dabadab
(MODERÁTOR)
LOGOUT blog

Alapfoku C ismeretek azert megvannak? Mutatok? Mert azok nelkul azert nem lesz egyszeru menet.

Falsus in uno, falsus in omnibus.

(#532) cellpeti válasza dabadab (#531) üzenetére


cellpeti
(PH! kedvence)

Mutatok??? Azok mik??? Változókra gondolsz? :U
2 számot össze tudok adni,meg kiíratni azt ennyi! Csak az a gond,hogy fősulin ez nem elég!:(

[ Szerkesztve ]

|| Dell Latitude E4300 || Nokia E72 || HTC One S ||

(#533) dabadab válasza cellpeti (#532) üzenetére


dabadab
(MODERÁTOR)
LOGOUT blog

Hat, az tenyleg nem eleg.
Javaslom a Kernighan-Ritchie szerzoparos "A C programozasi nyelv" c. konyvet esetleg ezt.

Falsus in uno, falsus in omnibus.

(#534) PazsitZ válasza cellpeti (#527) üzenetére


PazsitZ
(PH! addikt)

Azért írtam oda, hogy "letárolod a címletet"
Bár osztással tényleg gyorsabb.
Megtaláltam egy régi pascalos forráskódom.
Ez bankautomata és csak pár értékes, de hátha segít:

write('K‚rt ”sszeg:');readln(be);
x:=be mod 1000;
if x<=0 then begin
y:=(be div 1000);
if y mod 10>=0 then begin
ossz10:=y div 10;
be:=y mod 10;
end;
if y mod 5>=0 then begin
ossz5:=be div 5;
y:=be mod 5;
end;
if y mod 1>=0 then begin
ossz1:=y div 1;
be:=y mod 5;
end;
writeln('kiadand˘ cˇmletek:');
writeln('10000ft-os cˇmlet:',ossz10:8:0);
writeln('5000ft-os cˇmlet:',ossz5:8:0);
writeln('1000ft-os cˇmlet:',ossz1:8:0);
end
else begin
writeln('Minimum 1000,5000,10000ft-os cˇmletek vehet‹ ki');
end;

[ Szerkesztve ]

"...kis zártkörû PH-s imdb..." :D - http://phmovies.pazsitz.hu - http://pazsitz.hu -

(#535) cellpeti válasza dabadab (#533) üzenetére


cellpeti
(PH! kedvence)

Szia!

Ez nem egy kék könyv véletlen??
PazsitZ a "y" változó az mi? Mert nincs deklarálva! Vagy csak én nem vágom!

[ Szerkesztve ]

|| Dell Latitude E4300 || Nokia E72 || HTC One S ||

(#536) dabadab válasza cellpeti (#535) üzenetére


dabadab
(MODERÁTOR)
LOGOUT blog

Amikor utoljara lattam, akkor pont ezustszurke volt, de lehet, hogy mostanaban kek.
Nem tul vastag, raadasul kb az utolso harmada a nyelv referencialeirasa, szoval eleg gyorsan vegig lehet rajta menni (Dennis Ritchie meg a C nyelv (es mellesleg a Unix) egyik alkotoja).

Falsus in uno, falsus in omnibus.

(#537) PazsitZ válasza cellpeti (#535) üzenetére


PazsitZ
(PH! addikt)

Mivel nálam 1000 a legkisebb érték, így y az beolvasott érték osztva 1000-el.
Utólag nézve nem tudom miért pont így csináltam. :) Régen írtam...

[ Szerkesztve ]

"...kis zártkörû PH-s imdb..." :D - http://phmovies.pazsitz.hu - http://pazsitz.hu -

(#538) cellpeti válasza PazsitZ (#537) üzenetére


cellpeti
(PH! kedvence)

Tehát az "y" a billentyűzetről bekért adat,ugye? Ha jól értelek!

|| Dell Latitude E4300 || Nokia E72 || HTC One S ||

(#539) Fire/SOUL/CD válasza cellpeti (#538) üzenetére


Fire/SOUL/CD
(Szakértő)
LOGOUT blog

Hali!

Gyorsan megcsináltam(több megoldás is létezik persze), mielött ellépek itthonról. Ha valami nem tiszta írj. Késő este vagy holnap leszek majd.
(mivel ez csak példa, nem foglalkoztam azzal hogy kitudja mekkora számot lehessen beírni, ezért 2 gigánál nagyobbat ne írj be, mert hibásan fog működni. Bár kipróbálhatod :DDD )

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

#define C_Y 14

int cimlet[C_Y] = {20000,10000,5000,2000,1000,500,200,100,50,20,10,5,2,1};
int hanyszor[C_Y] = {0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0,0,0};

int main()
{
long int i, cash;
char money[255];

printf("Enter money: ");

if (!strlen(gets(money))) {
printf("\n\nMoney not found...EXIT");
return -1;
}
printf("\n\n");
for (i=0;i<strlen(money);i++)
if(money[i]<'0' || money[i]>'9') {
printf("Is NAN [Not A Number]...\nEXIT");
return -1;
}

cash=atoi(money);

for (i=0;i<C_Y;i++) {
hanyszor[i]=cash / cimlet[i];
cash-=hanyszor[i]*cimlet[i];
if (hanyszor[i]) printf("%5d db\t %d\n",hanyszor[i],cimlet[i]);
}

return 0;
}

Fire.

Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)

(#540) sghc_toma válasza Fire/SOUL/CD (#539) üzenetére


sghc_toma
(őstag)
LOGOUT blog

egy tanács: a gets függvényt érdemes elásni.. jó mélyre.. olyan gyönyörű buffer overflow-t lehet vele gyártni, hogy ihaj.. ott van helyette pl. az fgets: harmadik paraméter stdin, és ugyanazt csinálja, mint a gets, csak kultúráltabban..

[ Szerkesztve ]

in asm we trust

(#541) Fire/SOUL/CD válasza sghc_toma (#540) üzenetére


Fire/SOUL/CD
(Szakértő)
LOGOUT blog

Hali!

Esetleg meg is tudnád mutatni, hogy a kódom hogy "gyárt" overflow-t?

Fire.

Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)

(#542) dabadab válasza Fire/SOUL/CD (#541) üzenetére


dabadab
(MODERÁTOR)
LOGOUT blog

Egyszeruen stdinen be kell adni a programnak. Semmi ellenorzes nincs arra nezve, hogy nem jon be 255-nel tobb karakter, siman felul lehet irni az egesz stacket.

Falsus in uno, falsus in omnibus.

(#543) sghc_toma válasza Fire/SOUL/CD (#541) üzenetére


sghc_toma
(őstag)
LOGOUT blog

hello!

ahogy dabadab mondja, egy túl hosszú input csinálhat gonosz dolgokat.. próbáld ki mondjuk 300-400 számjeggyel, úgy tuti felülírod a return address-t a stack-en valami hülyeséggel, és kapsz egy segfault-ot.. persze a mai fordítókban vannak mindenféle védelmek overflow-k ellen, de azért nem szabad csak azokra támaszkodni..

in asm we trust

(#544) Fire/SOUL/CD válasza sghc_toma (#543) üzenetére


Fire/SOUL/CD
(Szakértő)
LOGOUT blog

Hali!

Elöször is bocsesz a "költői visszakérdezésért", de már előfordult, hogy valaki minden szakmai alapot nélkülöző hozzászólással gazdagított, amikor meg visszakérdeztem, hogy hát azért mégis elmagyarázhatná nekem(amúgy nem kellett volna) hogy hogyis van az, na azóta nem hallottam felőle.
Való igaz (ahogy Te illetve dabadab kolléga is írta) a GETS magában rejti ezt a fajta hibalehetőséget, de csak ezt, és ez jól látható(money[255]). Nyílván nem létezik olyan bankautomata amibe be lehet írni 255 számjegyből álló összeget, hogy adja ki 20ezresekbe, vagy ha igen szóljatok, mert kérek kölcsön egy MTZ traktort azt elhozzuk, mert akkor k... sok pénz van benne... :DDD

Azért nem szeretem a pl SCANF-t, mert az viszont rejtett "hibákat" tartalmaz és aki most ismerkedik a C-vel(lásd CELLPETI) azt nem tudhatja(mert sajnos a informatika vagy prográmozást oktató tanárbácsik is gyakran megfeletkeznek ennek elmagyarázásáról). Mire gondolok? Hát például Te is említést teszel ama bizonyos STDIN-ről ugyebár, amit a SCANF is "használ". Ha valaki tényleg korrekt INPUT-ot akar írni, annak erre oda kell figyelni. egy példával illusztrálom:

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

int main()
{
int n1,n2;

do {
printf("Enter 2 numbers [num1,num2]: ");
if (scanf("%d,%d",&n1,&n2)!=2) {
printf("Bad INPUT, try again or * to EXIT...\n");
continue;
}
printf("SUM(%d,%d) = %d\n",n1,n2,n1+n2);
} while (getch()!='*');
return 0;
}

Nos, első ránézésre hibátlan, de mégsem. A következőképp működik az adott értékek mellett:
ha 5,7 akkor hibátlanul fut
ha 12345678901,12345678901, akkor hibás eredmény
ha a,b akkor hibás működés
ha 5.0,7.0 akkor hibás működés

A hibás értékkel nem kell foglalkozni, az nyílvánvaló, azonban mi okozza a hibás működést? Nos annyit elárulok hogy a STDIN.
Természetesen nem Tőletek kérdem a megoldást(hisz biztosan tudjátok), hanem azoktól a leendő programozópalántáktól akik most ismerkednek a C-vel, és remélhetőleg elolvassák mások szakmai hozzászólását.
Szóval ezzel csak azt akartam illusztrálni, hogy kézenfekvő alap C input fx-ek is megtudják nehezíteni az ember életét, és ráadásul ezt úgy teszik hogy amúgy a kód hibátlan(vagy annak tűnik)

Nos ezért szoktam kezdő programozóknál inkább a GETS-et alkalmazni.

Fire.

[ Szerkesztve ]

Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)

(#545) sghc_toma válasza Fire/SOUL/CD (#544) üzenetére


sghc_toma
(őstag)
LOGOUT blog

Hello!

Semmi gond, én is találkoztam már beszólogató emberkékkel :)

Tény, hogy lehet szívni az stdin-nel, amíg az ember nem tudja, hogyan is működik az a fránya input buffer. Az a baj, hogy a gets-el akkor is szívhatsz, ha tisztában vagy a dolgok működésével - ugyanis semmilyen lehetőséged nincs biztosan elkerülni a túlcsordulást.

Azzal érvelsz, hogy a programozást oktató tanárok ezt nem tanítják. Ellopom az érvedet, és felhasználom :) A tanárok pl. a gets veszélyeire sem hívják fel a figyelmet.

Azért nem tartom jó ötletnek a gets használatát példakódban, mert akkor a programozópalánta azt ismeri meg, azt fogja használni, pedig van biztonságos(abb) megoldás is. Persze ahhoz többet kell tanulnia, meg pötyögnie, de potenciális b0f-t nem szabad benthagyni egy programban. Szerintem.

in asm we trust

(#546) Benmartin válasza sghc_toma (#545) üzenetére


Benmartin
(őstag)

Szia!

Annyit fűznék hozzá, hogy általában a házifeladatok és a versenyfeladatok többsége pontos input definíciót határoz meg, tehát ilyen ellenőrzések a feladat megoldása szempontjából fölöslegesek és még időigényesek is (lásd: acm-icpc feladatok).

Windows Portal [http://winportal.net] | http://benmartin.winportal.net

(#547) sghc_toma válasza Benmartin (#546) üzenetére


sghc_toma
(őstag)
LOGOUT blog

Szia!

Igazad van, beadandóimban én sem mindig csinálok teljes input-validációt, mert minek. Viszont ez tudatos. Azért említettem meg a dolgot, mert ha a kezdő programozóba belerögzül, hogy gets, és nem ismeri annak veszélyeit, akkor simán elképzelhető, hogy production code-ban is használni fogja.

in asm we trust

(#548) TomBoy1986


TomBoy1986
(PH! kedvence)
LOGOUT blog

Sziasztok!

Egy kis segítséget szeretnék kérni, mert új felületen kellene programoznom, de valahogy sehogy sem tudok rájönni arra, hogy miképp is kellene működésre bírni.

Szóval, Visual Studio 2008 Exp. Edit. feltelepítve. Szeretnék egy egyszerű hello-t kiiratni, hogy lássam miben is különbözik a régitől, de sajnos ez olyan sokban, hogyha csak egy cpp-t nyitok, akkor le sem tudom fordítani :(( (vagy pedig ha mégis lehet, akkor nem tudom hogyan - tehát valami menüpont, hasonló kellene).

Maradt a projektes megoldás, amelynél pedig hiába addolok hozzá cpp-t és írom bele a main fgv.-t tojik a fejemre, s azt mondja, hogy nincs programkód.

Tehát szeretném megkérni, valamely hozzáértő kollégát, hogy az elindulásról világosítson fel, legyen szíves. Köszönöm szépen előre is!

AMD Athlon64 II X4 620 @ 3.25GHz ; MSI 970A-G46 ; Sapphire HD7850 1024MB OC ; KingMax DDR3-1600 2x4GB ; Seagate 500GB ; CoolerMaster RealPower RS-520W ; Gigabyte X5 ; Logitech Z-2300

(#549) TomBoy1986 válasza TomBoy1986 (#548) üzenetére


TomBoy1986
(PH! kedvence)
LOGOUT blog

Már rájöttem mi volt a gond. Rossz típusú projektet nyitottam. Szóval tárgytalan.

AMD Athlon64 II X4 620 @ 3.25GHz ; MSI 970A-G46 ; Sapphire HD7850 1024MB OC ; KingMax DDR3-1600 2x4GB ; Seagate 500GB ; CoolerMaster RealPower RS-520W ; Gigabyte X5 ; Logitech Z-2300

(#550) cellpeti


cellpeti
(PH! kedvence)

Sziasztok!

Elkezdtem olvasni az ajánlott irodalmat:

Brian W, Kernghan és Dennis M. Ritchie: A C programozási nyelv

Értehetően írja le meg minden,de a fejezetek végén vannak feladatok és azokat nem tudom,hogy kéne megoldani.
Ötltetem van,de lehet nagy baromság. Nincs ehhez valami CD a neten esetleg,nem tudja valaki,vagy megoldás?? :U

|| Dell Latitude E4300 || Nokia E72 || HTC One S ||

Hirdetés

Copyright © 2000-2013 PROHARDVER Informatikai Kft.