Hirdetés

2024. április 30., kedd

Gyorskeresés

Hozzászólások

(#1251) VaZso válasza Jester01 (#1250) üzenetére


VaZso
senior tag

Eszerint ott lehet a kutya elásva, hogy nem módosítható?
*ptr = 'n'; (ill. str) hatására Segmentation fault-ot kapok...

Egy ilyenem van:
char *strCapitalize(char *str) {

Tehát a paraméterként kapott *str-t hiába is próbálom megváltoztatni...

Hogyan tudnám mégis valamely characterét megváltoztatni úgy, hogy nem tudom előre a string hosszát és csak ezért nem nyálazhatom végig?
:F

(#1252) Jester01 válasza VaZso (#1251) üzenetére


Jester01
veterán

Hát a függvényed maga jónak látszik, csak lehet, hogy nem módosítható stringet adsz be neki. A hívást nem mutattad meg, de ezért egyébként a fordítónak szólnia kellene.

Jester

(#1253) VaZso válasza Jester01 (#1252) üzenetére


VaZso
senior tag

Így hívom meg:

char *xd="xdtv";
printf("strcapitalize, %s\n", strCapitalize(xd));

(#1254) Jester01 válasza VaZso (#1253) üzenetére


Jester01
veterán

Na ez nem jó!

char xd[] = "xdtv";

és akkor jó lesz :K

Jester

(#1255) VaZso válasza Jester01 (#1254) üzenetére


VaZso
senior tag

Így valóban működik, köszönöm szépen a türelmed. :R

(#1256) Votyesz13


Votyesz13
tag

Sziasztok

Nekem az alábbi 5 feladattal lenne gondom.:Smost keztük a programozást de a gyaktanár finoman szólva nem magyaráz és nem értem a programírás lényegét:Saki tud segítsen pls.nem muszály a feladatot megoldani azt én szeretném inkább vmi infó vagy tutorial lenne a jó.
1. Kérj be egy számot, és írd ki, hogy páros, vagy páratlan!

2. Olvass be egy karaktert! Döntsd el és írd ki, hogy kis-, nagybetűt, számot

vagy egyéb karaktert olvastál-e be!

3. Kérj be három számot! Írd ki közülük a legnagyobbat!

4. Írj egy programot ami bekéri egy dolgozat lehetséges maximális és aktuális

pontszámát, majd kiírja, hogy a dolgozat sikeres vagy sikertelen volt! A

dolgozat akkor sikeres, ha az aktuális pontszám legalább a maximális

pontszám fele.

5. Írj egy programot ami egy jegyhez (osztályzathoz) megadja a szöveges

értékelést, vagy kiírja, ha rossz értéket kapott!

üdv bolvar

[ Szerkesztve ]

(#1257) Zollee


Zollee
tag

Hy!

Újra itt és újabb kérdéssel. :)
Szorgalmi feladataim egyike a legnagyobb közös osztó kiszámolása. Utána néztem, a Wikipedia szerint az Euklideszi algoritmus egy jó megoldás erre a problémára. Na igen, én ezt megoldottam úgy, ahogy én értelmeztem az átalakitást, le is fordul, de rossz értékeket ad vissza. Többször átnéztem a képletet, de nem tudok rájönni hol a hiba. Remélem valaki nálam okosabb itt rá tud jönni. :)

A progi:

#include<stdio.h>

void lnko()
{
int maradek, szam1, szam2;

printf("Kerem a szamokat: ");
scanf("%d% %d", &szam1, &szam2);

while (szam2 !=0)
{
maradek = szam1%szam2;
szam1=szam2;
szam2=maradek;
}
printf(" A szamok legnagyobb kozos osztoja: %d\n", szam1);
}

int main()
{
lnko();
}

A legügyesebb állat az ürge, hiszen búzával teli pofazacskóval is képes repülni, miközben egy baglyot egyensúlyoz a hátán.

(#1258) Gyuri16 válasza Zollee (#1257) üzenetére


Gyuri16
senior tag

megy az, csak a beolvasas rossz, helyesen:

scanf("%d %d", &szam1, &szam2);

(sok a % jel)

Nem vagyok egoista, csak uborkagyalu!

(#1259) Zollee válasza Gyuri16 (#1258) üzenetére


Zollee
tag

Wááá, téényleg. :DDD Mit össze kerestem hol a hiba.. és eeez... na most 2 évet öregedtem. :DD
Köszönöm Gyuri16 :K

A legügyesebb állat az ürge, hiszen búzával teli pofazacskóval is képes repülni, miközben egy baglyot egyensúlyoz a hátán.

(#1260) Zollee válasza Votyesz13 (#1256) üzenetére


Zollee
tag

Hy!

Ha fapados módszereket írok, elnézést, de mivel most kezdted a programozást, nem gondolnám hogy ez probléma lenne, nekem is írták, hogy rá kell érezzek. Igazuk volt, az önálló munka és az ilyen kezdő kódokból tanul az ember, utána lehet ügyeskedni.

1, A páros számok ugye mind oszthatók 2-vel. Egy if-else szerkezettel sima ügy.

3, Szintén if-ekkel megoldható. A számokat kell összehasonlítani.

4, Százalék számításra visszavezethető. Képlet a wikipedia-n. De egy szerűbb, ha csinálsz egy i segédváltozót, majd az adatok bekérése után értékének megadod a max * 0.5-öt. Ez után a max-ot elosztod 100-zal, a kapott értéket beszorzod az aktuális pontszámmal, majd if-fel megírod, hogy ha a kapott érték nagyobb vagy egyenlő mint a korábban definiált i változód, akkor átment, egyébként nem.

5, Én switch-csel oldanám meg. Mivel 5 osztályzatod van, 5 case-re lesz benne szükséged. A rossz érték kezelésére pedig a switch-nek van default ága. Ott csak ki kell iratnod hogy rossz értéket adott meg a paraszt.

A 2-es feladathoz hasonló nekem is van, azt sajnos én sem tudom. :F Ezek a sztring műveletek nekem sem mennek még.
Nekem az a feladat, hogy bekérsz egy szöveget, utána kiíratod hogy mennyi kis betű, mennyi nagy betű és mennyi szám van benne.
Jah meg egy másik feladatomban most karakter összehasonlítással szenvedek, nem tudom működésre bírni az strcmp függvényt. :F
Ha végképp nem boldogulok lehet visszatérek és én is segítséget kérek.

[ Szerkesztve ]

A legügyesebb állat az ürge, hiszen búzával teli pofazacskóval is képes repülni, miközben egy baglyot egyensúlyoz a hátán.

(#1261) bpx válasza Zollee (#1260) üzenetére


bpx
őstag

ASCII kód alapján meg lehet állapítani egy karakterről, hogy micsoda
48-57 szám
65-90 nagybetű
97-122 kisbetű
minden más az egyéb kategória

(#1262) Zollee válasza bpx (#1261) üzenetére


Zollee
tag

Huha.. Akkor utána kell nézzek hogy ASCII kódot hogy használok c-ben. Köszi a segítséget, remélem így meg tudom majd írni. :)

A legügyesebb állat az ürge, hiszen búzával teli pofazacskóval is képes repülni, miközben egy baglyot egyensúlyoz a hátán.

(#1263) doc válasza bpx (#1261) üzenetére


doc
nagyúr

nana, azert ilyet ne...
megvannak a megfelelo fuggvenyek erre, pl. isdigit, islower

(#1264) Zollee válasza doc (#1263) üzenetére


Zollee
tag

Nézegetem őket én is, van egy prog könyvem, de nem igazán taglalja a használatukat. :F
Az strcmp függvény sem akar menni valamiért. Sokféleképp próbáltam már alakítgatni, de nem ment, most épp szegmens hibát ír. Ez azért ciki, mert az általad írt függvényeket is elvileg ugyanúgy kell majd használni a másik feladatomnál.

Itt az strcmp-s progi, ami nem akar menni:
(lényegében az a feladat, hogy meg kell adni a bástya és a gyalog pozícióját és el kell dönteni hogy üti-e a bástya a gyalogot? Én úgy gondoltam megvalósítani ezt, hogy mivel a bástya csak vagy vízszintesen vagy függőlegesen mozoghat, azt kell eldönteni, hogy a két bekért pozíció betűje egyezik-e a 2 bábunál, vagy a 2 számos tagja egyezik-e. Ezzel eldönthető, hogy ugyanabban az oszlopban van-e vagy ugyanabban a sorban. Ha a 2 közül legalább az egyik igen, akkor üti, ha nem akkor nem. Ehhez kellene a karakter összehasonlító függvény.)

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

int strcmp (const char *s, const char *t)
{
if (*s == *t)
return 0;
else
{
printf("WTF? \n");
}
}

void sakk ()
{
char bastya [3];
char gyalog [3];

printf("Kerem a bastya poziciojat: ");
scanf("%c %c", &bastya[1], &bastya[2]);
printf("Kerem a gyalog poziciojat: ");
scanf("%c %c", &gyalog[1], &gyalog[2]);

if ((strcmp(bastya[1], gyalog[1]) ==0) || (strcmp(bastya[2], gyalog[2]) ==0))
printf("A bastya uti a gyalogot.\n");
else
{
printf("A bastya nem uti a gyalogot.\n");
}
}

int main ()
{
sakk();
}

[ Szerkesztve ]

A legügyesebb állat az ürge, hiszen búzával teli pofazacskóval is képes repülni, miközben egy baglyot egyensúlyoz a hátán.

(#1265) cucka válasza Zollee (#1264) üzenetére


cucka
addikt

El kéne olvasni, hogy az strcmp hogy működik:

int strcmp(const char *s1, const char *s2);

Tehát két darab char* típusú változót kér paraméternek, a te programodban pedig két char típusú változóval próbálod meghívni.
Char típusú változókat pont úgy tudod összehasonlítani, mint ahogy sima int-eket hasonlítasz, tehát alapvetően ebben a programban semmi szükség az strcmp függvényre. A char típus egy darab karaktert jelent ugyan, de felfoghatod úgy is, mint egy előjel nélküli egész számot, mert tulajdonképpen az.

(#1266) Jester01 válasza cucka (#1265) üzenetére


Jester01
veterán

A char típus egy darab karaktert jelent ugyan, de felfoghatod úgy is, mint egy előjel nélküli egész számot, mert tulajdonképpen az.

Azért ezzel tessék vigyázni mert nagyon könnyen bajba kerülhet a gyanútlan programozó :K

Jester

(#1267) cucka válasza Jester01 (#1266) üzenetére


cucka
addikt

Valami példa a veszélyeiről? Nem igazán vagyok c szakértő, rámfér a tanulás :)

(#1268) Jester01 válasza cucka (#1267) üzenetére


Jester01
veterán

Az a veszélye, hogy a szabvány nem rögzíti előjeles vagy nem. Ha valakinek ez fontos, akkor feltétlen írja ki, hogy unsigned char vagy signed char ellenkező esetben érheti meglepetés.

Például az á betű kódja iso8859-2 szerint 225, de ha a char véletlen előjeles akkor a naív if (c == 225) bizony nem lesz jó:

#include <stdio.h>

int main()
{
char c = getc(stdin);
printf("c == 225: %d\n", c == 225);
return 0;
}

$ gcc -Wall t.c
t.c: In function 'main':
t.c:6: warning: comparison is always false due to limited range of data type
$ echo á | ./a.out
c == 225: 0
$ gcc -Wall -funsigned-char t.c
$ echo á | ./a.out
c == 225: 1

Jester

(#1269) cellpeti


cellpeti
veterán

üdv,szevasztok!

Lenne egy ilyen feladatom:

kérjünk be egy a+b= alakú stringet,ahol a és b számok 0 és 50 közé eső egészek.
Bekértést követően irassuk ki az eredményt.

Tudnátok segíteni? :U

Tigris, tigris, csóvafény...

(#1270) Jester01 válasza cellpeti (#1269) üzenetére


Jester01
veterán

Komolyan mondom nem értem miért kell mindig külön könyörögni hogy megtudjuk mi okozza a problémát.

Jester

(#1271) cucka válasza Jester01 (#1270) üzenetére


cucka
addikt

Gondolom az, hogy nincs kedve megírni a házi feladatot, ezért reménykedik, hogy hátha itt valaki megírja helyette :D

(#1272) Zollee válasza cucka (#1271) üzenetére


Zollee
tag

Nem tudom, én személy szerint nem erre játszom. Próbálkozok és ha végképp nem tudom már hova is verjem a fejem, akkor jövök segítségért. :))

A legügyesebb állat az ürge, hiszen búzával teli pofazacskóval is képes repülni, miközben egy baglyot egyensúlyoz a hátán.

(#1273) Zollee válasza cucka (#1265) üzenetére


Zollee
tag

Próbáltam simán összehasonlítani (if (bastya == gyalog)...) de nem jó eredményt kapok. Valamiért soha nem kapom vissza azt, hogy a bástya üti a gyalogot. Próbáltam először csak számokkal, azzal ment. Próbáltam számot és betűt egyszerre vagy kapcsolattal, akkor már nem ment. Próbáltam aztán csak karaktert, akkor sem ment. Ezért próbálkoztam a karakter összehasonlító függvénnyel. Még mindig ott tartok hogy nem akarja az igazságot függvény nélkül sem, függvénnyel sem.

A legügyesebb állat az ürge, hiszen búzával teli pofazacskóval is képes repülni, miközben egy baglyot egyensúlyoz a hátán.

(#1274) Jester01 válasza Zollee (#1273) üzenetére


Jester01
veterán

Mégpedig azért, mert a scanf egy borzasztó rossz függvény terminálról olvasáshoz.
Ha debuggerrel vagy egy kiíratást betéve megnézed mi lesz a gyalog változód valószínűleg egyből kiszúrod, hogy bizony a bástya bekérés után a pufferben maradt egy (vagy kettő) soremelés karakter és az kerül oda.

Gyors megoldásként ha a második scanf formátumstring elejére teszel egy szóközt akkor már jó lesz. (Persze ahogy cucka kollega mondta, csak simán az értékeket hasonlítsd össze.)

Beolvasáshoz amúgy fgets és sscanf párosa ajánlott, megfelelő hibakezeléssel.

Jester

(#1275) cellpeti válasza Jester01 (#1270) üzenetére


cellpeti
veterán

Sorry,azt lefelejtettem,hogy fv-vel kell levizsgálni a dolgokat!

Tigris, tigris, csóvafény...

(#1276) Zollee válasza Jester01 (#1274) üzenetére


Zollee
tag

Mondasz vmit.. Mikor próbálgattam, előfordult, hogy a 2 bekérésből csak az 1. esetben várta meg míg beadok neki egy értéket, a másikat már önszántából kitöltötte, mintha ő jobban tudná. :)
Most nem otthon vagyok, de amint előttem lesz a feladat, kipróbálom. Remélem menni fog.

A legügyesebb állat az ürge, hiszen búzával teli pofazacskóval is képes repülni, miközben egy baglyot egyensúlyoz a hátán.

(#1277) Zollee válasza Jester01 (#1274) üzenetére


Zollee
tag

Vééégre megy. :D
Hálás köszönet. Ebből annyit is tanultam most, hogy később mindig megnézem majd a bekért adatok helyességét ha nem tudom mi a baja a proginak. :)
Hiába na.. mindig tanul az ember. :))

A legügyesebb állat az ürge, hiszen búzával teli pofazacskóval is képes repülni, miközben egy baglyot egyensúlyoz a hátán.

(#1278) Devdi válasza Zollee (#1277) üzenetére


Devdi
aktív tag

Ez majd viszonylag sokszor elő fog fordulni... :D Van amikor szinte majdnem minden sor után oda kell biggyeszteni egy kiírást, mikor már télleg nem tudod, hogy mit rontottál el :DDD

(#1279) sghc_toma válasza Devdi (#1278) üzenetére


sghc_toma
senior tag

ennel azert egyszerubb fogni egy debuggert, es hasznalni ;)

in asm we trust

(#1280) m0h0senator


m0h0senator
őstag

Sziasztok,

az a feladat, hogy irassuk ki az összes prím számot 100ig. Én ezt írtam:

#include <stdio.h>
#include <conio.h>
int prim, oszto, x;
void main (void)
{
clrscr();
prim=1;
oszto=2;
x=1;
while (x<=100)
{
while ((oszto<x)&&(prim==1))
{
if(x%oszto==0)
{
prim=0;
}
else
{

}
oszto=oszto+1;
}
if(prim==1)
{
printf("%i ", &x);
}
else
{
// printf("A szam nem prim szam");
}
x=x+1;
}
getch();
}

és állandóan cask azt írja ki h 854 :F LÉgyszíves nézzétek át mert én nem találtam hol van benne a hiba.

Köszönöm :R

An odyssey through the realm of consciousness.

(#1281) Karma válasza m0h0senator (#1280) üzenetére


Karma
félisten

Húha. Légyszi használd a Kód gombot, és úgy illeszd be a kódot, lehetőleg indentálva, mert ez így elég nehezen olvasható.

Elöljáróban: Egyszerűbb lenne egy for ciklus 2-től 100-ig (gyakorlatilag most is ez van, csak while-lal), és minden esetben végezni egy prímtesztet. Most is ezt akarnád csinálni, csak olyan kusza, hogy nem látszik.

A hiba nagyon valószínű, hogy azért van, mert elfelejtetted alaphelyzetbe állítani az oszto és a prim változókat a ciklusmagban.

OMG! Megvan, hogy miért 854! Mert pointert íratsz ki, nem a számot!

printf("%i ", x);

[ Szerkesztve ]

“All nothings are not equal.”

(#1282) Karma válasza Karma (#1281) üzenetére


Karma
félisten

Nos, a ciklusmagot és a kiírást kijavítva nálam már jól működik.

iMac:Debug zsolt$ ./test
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97

Azért nem lenne hátrány, ha azokat a while ciklusokat újragondolnád ;)

[ Szerkesztve ]

“All nothings are not equal.”

(#1283) Daneeka


Daneeka
senior tag

Hi,

#include <stdio.h>
int main()
{
int i = 1;
int szam=50;
while (i<=szam)
{
if (i%2==0)
printf("%d\n", i);
i = i+1;
}
getchar();
return 0;
}

Ezt a rövid kis kódot azzal a céllal hoztam létre, hogy 1-től 50-ig kiírja nekem a páros számokat, de csak 4-től 50 ig írja ki, a kettes szám valamiért lemarad az elejéről.

Mit vétettem?

(dev-c++ -ban készült, ahol csak getchar()-al hajlandóak működni a progik nálam, de a scanf utáni enternél így is kilépnek, ezért nincs túlspilázva scanf-fel meg stb)

(#1284) Karma válasza Daneeka (#1283) üzenetére


Karma
félisten

Nálam működik (XCode, OSX 10.6). Nem lehet, hogy egyszerűen kicsúszik a 2-es a képből? (a szabvány Windowsos terminál pont 25 soros), amit hajnalok hajnalán nem vettél észre?

Mi ez a nagy while mánia egyébként? Miért nem lehet for ciklust használni? Meg indentálni?

for (i = 1; i <= 50; i++)
{
...
}

[ Szerkesztve ]

“All nothings are not equal.”

(#1285) mmdms


mmdms
addikt

Hali!
Nézegettem az első hsz linkeit, de már nem él a legtöbb oldal. Szóval kellene nekem valami olyan doksi, amiben nagyon egyszerű feladatok vannak, és lehetőleg mellékelve is legyenek hozzá a progik. pl: pitagoraszi számhármas ellenőrzése meg ilyenek (mondjuk ez pont meg van, de ilyen kaliber) Tudtok ilyet?

[ Szerkesztve ]

ElGuRuLt a GyoGySzErEm...VaGy CsAk FoRDíTvA VeTtEm Be?

(#1286) Daneeka válasza Karma (#1284) üzenetére


Daneeka
senior tag

Köszi tényleg az volt a hiba, hogy kilógott a kettes. Pedig erre gondoltam, próbáltam is scrollozni felfele, ami miatt nem ment az az, hogy úgy néz ki nálam nem működik valamiért az egérgörgő parancssori progiknál. Aztán azt valószínűbbnek láttam, hogy nem bírok programozni mint azt, hogy nem bírok scrollozni, szóval beírtam ide. :D

(pár hete programozok még csak, a while nekem átláthatóbb, hogy látom függőlegesen a lépéseit, jobban hasonlít arra a folyamatra amit az agyamban elképzelek, később majd kiverik belőlünk esetleg :D )

[ Szerkesztve ]

(#1287) Devdi válasza sghc_toma (#1279) üzenetére


Devdi
aktív tag

Úgy értem, hogy az algoritmus meg minden az helyes... Csak az eredmény nem jó valamiért :))

[ Szerkesztve ]

(#1288) m0h0senator válasza Karma (#1281) üzenetére


m0h0senator
őstag

Köszi szépen a választ, neki esek és legközelebb így linkelem be. :B :R

An odyssey through the realm of consciousness.

(#1289) m0h0senator


m0h0senator
őstag

Sziasztok!

Kész lett a prím számos programom. Beteszem ide hátha valakinek segítséget nyújt.

#include <stdio.h>
#include <conio.h>
int prim, oszto, x;
void main (void)
{
clrscr();

do
{
x=x+1;
prim=1;
oszto=2;
while ((oszto<x)&&(prim==1))
{
if(x%oszto==0)
{
prim=0;
}
else
{

}
oszto=oszto+1;
}
if(prim==1)
{
printf("%i ,",x);
}
/* else
{
printf("A sz m nem prˇm sz m");
}*/
}

while(x<100);
getch();

An odyssey through the realm of consciousness.

(#1290) pszaby


pszaby
csendes tag

Sziasztok!
Lenne feléltek mint C és C++ nyelvhez értőkhöz egy óriási kérésem!
Most kezdtem csak a C++ nyelvet tanulni és lenne egy feladatom amit megkell hogy csináljak, de fogalmam sincs hogyan álljak neki!
Szóval a feladat a következő:
Vezérlőprogram beírása:
• Egy max. 10 lépésből (ellenőrzendő) álló vezérlőprogramot kell beolvasni. A vezérlő program
minden utasítása az x, y, és z irányokba történő lépés hosszát (x, y, z ∈ [-127,+127]) tartalmazza.
Ha a megadott lépéshossz nem megfelelő, az utasítást újra kéri a program.
• Az utasításokat egy int típusú, 10 elemű tömbben kell tárolni, az alábbi felépítésben: x előjele,
x6…x0, y előjele, y6…y0, y előjele, z6…z0 (minden byte egy koordináta előjele és hossza). A
negatív előjel kódja 1, egyébként az előjel kódja zéró.
• A program végét jelzi, ha a lépéshossz zérus
Vezérlőprogram végrehajtása:
• A program a vezérlést a (0,0,0) pozícióból indítja, és addig fut amíg a lépéshossz nem zérus
minden irányban ill. max. 10. lépést hajt végre.
• Minden egyes lépésben értelmezi a tárolt utasítást és kiszámítja következő pozíciót (aktuális
pozíció+lépéshossz).
• Minden lépésnél tabulálva kiírja az új pozíció x, y és z koordinátáját valamint a kezdőponttól
való távolságot (double, sqrt(x2+y2+z2)).

Ez a teljes feladat de nekem igazából az elejében kellene egy kis segítség hogy hogyan álljak neki??(dev c++ba programozunk)
Előre is köszi mindenkinek!

Üdv.:
pszaby

(#1291) Votyesz13


Votyesz13
tag

Sziasztok

Én ehez a feladathoz kérdnék segítséget.Nemtudom hogyan kezdjem el vagy milyen vezérlési szerkezetet használjak(if for switch..).

előre is köszi
üdv bolvar

(#1292) Jester01 válasza pszaby (#1290) üzenetére


Jester01
veterán

Hát ez elég szájbarágósan le van írva. Meg tudod mondani melyik rész okoz problémát?

Votyesz13: te meg lehagytad a feladatot. De a for az ciklus tehát ha valamit ismételni kell akkor használd. A switch meg csak egy felturbózott if amit akkor használunk ha azonos kifejezés különböző értékeit akarjuk vizsgálni.

Jester

(#1293) cucka válasza pszaby (#1290) üzenetére


cucka
addikt

• Az utasításokat egy int típusú, 10 elemű tömbben kell tárolni, az alábbi felépítésben: x előjele,
x6…x0, y előjele, y6…y0, y előjele, z6…z0 (minden byte egy koordináta előjele és hossza). A

Nekem csak ezzel a résszel kapcsolatban lenne egy kérdésem egy nálam szakértőbb emberhez: itt ugye egy 4 byte-on ábrázolt int változóban tárolunk 3 darab 1 byte-os számot, a trükk, hogy ezeket kell kinyerni valahogy. A kérdés igazából annyi, hogy hogyan lehet megírni ezt a programot úgy, hogy akkor is működjön, ha az adott gépen az int nem 4 byte-os, hanem több vagy kevesebb? (Mondjuk ha több, akkor az nem gáz, de ha kevesebb, akkor baj van).
Vagyis általánosan véve az a kérdés, hogy meg lehet-e mondani valahogy a fordítónak, hogy mi 4 byte-os inteket szeretnénk használni?

Mod: Mondjuk a többiekkel ellentétben én nem kaptam meg ezt házi feladatnak, tehát a kérdés pusztán elméleti jellegű :D

Mod2: Amúgy ritka balf*szul sikerült megfogalmazzák a feladatot, főleg az idézett részt nézegettem sokat, amíg rájöttem, mi a túrót szeretnének.

[ Szerkesztve ]

(#1294) Votyesz13


Votyesz13
tag

bocsi a feladat ez lenne:) Írj programot, amely bekér egy pénzösszeget (egy számot), majd

meghatározza, hogyan fizethető ki ez az összeg a lehető legkevesebb 10, 5,

2 és 1 koronás érmérvel!

(#1295) Karma válasza cucka (#1293) üzenetére


Karma
félisten

Pl. úgy, hogy nem intet használsz, hanem longot, ami mindig 32-bites.

Aki kitalálta azt, hogy: 1) intet kell használni, valamint 2) ezt kikiáltja C++ programozásnak, pedig ez csak egy C program, C++ fordítóval lefordítva, azt (hmm)... Nem illik azt mondani, hogy tarkón kéne lőni, úgyhogy csak tarkón kéne vágni.

“All nothings are not equal.”

(#1296) Jester01 válasza Karma (#1295) üzenetére


Jester01
veterán

Pl. úgy, hogy nem intet használsz, hanem longot, ami mindig 32-bites.
Mindig? Na ne viccelj!

kikiáltja C++ programozásnak, pedig ez csak egy C program, C++ fordítóval lefordítva,
Azért mert egy adott program ránézésre esetleg nem annyira objektum-orientált vagy ilyesmi, azért még meg lehet írni c++-ban. És persze semmi akadálya, hogy az implementáció során osztályokat használj pl. a "Program", "Terminal", "Executor" (ez egy absztrakt osztály lenne), "Simulator" (ez meg implementálja az Executor-t). Így ha teszem azt később ki akarod bővíteni azzal, hogy vezéreljen egy usb portra kötött 3D robotot akkor csak egy új osztály kell ami az Executor-t implementálja.

cucka: Mivel a feladat specifikálta, hogy ezt a 3 byteot kell belegyömöszölni az int-be ezért feltételezhető, hogy az adott architektúrán legalább 24 bites az int. Ha meg több az tök mindegy. Egyszerű bit műveletekkel meg lehet oldani. Amúgy ha ettől a feladattól elvonatkoztatva valamikor adott bitszámú int-re van szükséged, akkor az stdint.h-ban laknak olyanok, hogy int32_t meg int_least32_t és társaik.

Jester

(#1297) Karma válasza Jester01 (#1296) üzenetére


Karma
félisten

"Mindig? Na ne viccelj!"

Bakker, és tényleg igazad van. "At least"... Mindegy, azt a problémát megoldja, hogy kevesebb nem lehet ;)

"Azért mert egy adott program ránézésre esetleg nem annyira objektum-orientált vagy ilyesmi, azért még meg lehet írni c++-ban. "

Meg lehet írni, de szerintem ilyen kitételek mellett (és hallgatói felkészültség mellett) nem ez a cél.

“All nothings are not equal.”

(#1298) pszaby válasza Jester01 (#1292) üzenetére


pszaby
csendes tag

Szia!

Igazából az első lépéseket nem vágom!
Konkrétan ezt:
Egy max. 10 lépésből (ellenőrzendő) álló vezérlőprogramot kell beolvasni. A vezérlő program
minden utasítása az x, y, és z irányokba történő lépés hosszát (x, y, z ∈ [-127,+127]) tartalmazza.
Ha a megadott lépéshossz nem megfelelő, az utasítást újra kéri a program.
• Az utasításokat egy int típusú, 10 elemű tömbben kell tárolni, az alábbi felépítésben: x előjele,
x6…x0, y előjele, y6…y0, y előjele, z6…z0 (minden byte egy koordináta előjele és hossza). A
negatív előjel kódja 1, egyébként az előjel kódja zéró.
• A program végét jelzi, ha a lépéshossz zérus minden irányban vagy a 10. utasítást beolvasása
Ebben tudnál esetleg segíteni nekem?
Megköszönném mindenképp!

(#1299) Jester01 válasza pszaby (#1298) üzenetére


Jester01
veterán

Gondolom a tíz elemű tömb definiálása és a tízszer három szám beolvasása nem okoz problémát az ellenőrzéssel együtt sem.
Egy adott koordinátahármas int-be pakolásához először mindegyiket az adott formára kell hozni, pl: if (x < 0) x = 0x80 | -x;. Ezután pedig bit eltolás művelettel egybe lehet őket tenni, pl: int step = (x << 16) | (y << 8) | z;

Jester

(#1300) Zollee válasza Votyesz13 (#1294) üzenetére


Zollee
tag

Bekérsz egy értéket. Mivel a legnagyobb érméd a 10-es, ezzel elosztod, majd az egész részét eltárolod egy változóban. A maradékot tovább osztogatod (az 5-össel, majd a 2-essel) úgy ahogy a 10-zel is tetted, és ezeknek az egész részeit is hozzá adod az előbbi "számoló" változódhoz. Majd a számoló változód értékét kiiratod, hisz az érmék darabszáma ebben lesz.

A legügyesebb állat az ürge, hiszen búzával teli pofazacskóval is képes repülni, miközben egy baglyot egyensúlyoz a hátán.

Copyright © 2000-2024 PROHARDVER Informatikai Kft.