Új hozzászólás Aktív témák
-
kispx
addikt
válasz sztanozs #3447 üzenetére
Jogos, egy gyors wikipedia keresés alapján mondtam
És még egy kiegészítés, nem x>500 hanem x>=500
(#3446) Bobrooney
A WinForms-nak nincs magyar nyelvű irodalma. De tudtommal már nem fejlesztik tovább.(#3452) bandi0000
(#3447) sztanozs hozzászólásában szereplő számokat is tedd bele, mert a wikiből nem jól mondtam én sem. És vannak olyan számok pl I ami háromszor is előfordulhatnak, szóval azokat rakd bele egy ciklusba.[ Szerkesztve ]
-
bandi0000
nagyúr
válasz sztanozs #3450 üzenetére
if(x>1000)
{
printf("M");
x=x-1000;
if (x > 500)
printf("DC");
x = x - 500;
if (x>400)
{
printf("CD");
x=x-400;
if (x>100)
{
printf("C");
x=x-100;
if (x>90)
{
printf("XC");
x=x-90;
if (x>50)
{
printf("LC");
x=x-50;
if (x>40)
{
printf("XL");
x=x-40;
if (x>10)
{
printf("X");
x=x-10;
if (x=9)
{
printf("IX");
x=x-9;
if (x>5)
{
printf("VL");
x=x-5;
if (x=4)
{
printf("IV");
x=x-4;
if (x>0)
{
printf("I");
x=x-0;
igy irtam igy gondoltad?Xbox One: bandymnc
-
sztanozs
veterán
válasz bandi0000 #3452 üzenetére
if helyett else if - vagy continue; minden if rész végére
Ez se túl szép:
if (x>0)
{
printf("I");
x=x-0;
}[ Szerkesztve ]
JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...
-
-
bandi0000
nagyúr
válasz sztanozs #3453 üzenetére
if (x>400)
{
printf("CD");
x=x-400;
}
continue;így gondoltad vagy ne zárjam le az if-et csak a végén az összeset?
mert ebben az esetben ezt irja: continue statement not within a loop
vagy netán kell ennek egy függvény?Am bocs hogy ilyen értetlen vagyok de nem tanítják meg rendesen de elvárják hogy megcsináljuk amit pl elöbb leírtál hogy úgy irjam le nem láttam még olyat csak úgy tudom ahogy én csináltam sajnos...
[ Szerkesztve ]
Xbox One: bandymnc
-
-
sztanozs
veterán
De kell, nézd csak meg pl. a 737-et:
1. kör után: 121
DCXVI
2. kör után: 20
DCXVICXI
3. kör után: 0
DCXVICXIX
...[ Szerkesztve ]
JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...
-
bandi0000
nagyúr
if(x>1000)
{
printf("M");
x=x-1000;
}
if(x>900)
{
printf("CM");
x=x-900;
}
if (x >= 500)
{
printf("DC");
x = x - 500;
}
if (x>400)
{
printf("CD");
x=x-400;
}
if (x>100)
{
printf("C");
x=x-100;
}
if (x>90)
{
printf("XC");
x=x-90;
}
if (x>50)
{
printf("LC");
x=x-50;
}
if (x>40)
{
printf("XL");
x=x-40;
}
if (x>10)
{
printf("X");
x=x-10;
}
if (x=9)
{
printf("IX");
x=x-9;
}
if (x>5)
{
printf("VL");
x=x-5;
}
if (x=4)
{
printf("IV");
x=x-4;
}
if (x>0)
{
printf("I");
}hát így nem jó...vagy mindegyik if hez oda kéne irni az =-őt is?
Xbox One: bandymnc
-
sztanozs
veterán
válasz bandi0000 #3458 üzenetére
mondjuk, ha minden töbször előforduló jel if-je helyére while-t raksz (1000, 100, 10, 1), és minden > helyére >=-t akkor jó lesz...
ja és a vége
while (x>0)
{
printf("I");
x = x - 1;
}mod: Természetesen az...
[ Szerkesztve ]
JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...
-
bandi0000
nagyúr
válasz sztanozs #3459 üzenetére
while(x>1000)
{
printf("M");
x=x-1000;
}
if(x>900)
{
printf("CM");
x=x-900;
}
if (x >= 500)
{
printf("DC");
x = x - 500;
}
if (x>=400)
{
printf("CD");
x=x-400;
}
while (x>=100)
{
printf("C");
x=x-100;
}
if (x>=90)
{
printf("XC");
x=x-90;
}
if (x>=50)
{
printf("LC");
x=x-50;
}
if (x>=40)
{
printf("XL");
x=x-40;
}
while (x>=10)
{
printf("X");
x=x-10;
}
if (x=9)
{
printf("IX");
x=x-9;
}
if (x>=5)
{
printf("VL");
x=x-5;
}
if (x=4)
{
printf("IV");
x=x-4;
}
if (x>0)
{
printf("I");
x = x - 1;
igy se jó ha segít akkor fel tudom rakni az egész programot DEV C be csinálom[ Szerkesztve ]
Xbox One: bandymnc
-
bandi0000
nagyúr
tehát akkor mit kellene irni?
am meg még azt láttam hogy ha beírom h 566 akkor átmegy 500 ra jó a DC megy tovább 50 nél nagyobb a 66 igen és akkor beirja hogy LC holott a 60 LXamúgy van még 1 fajta ezt oszttársam csinálta ez igy jó vagy hülyeség?
int main(){
int k=0,j,h,a,sz1=0,sz2=0,sz3=0,sza1=0,sza2=0,sza3=0,I=1,II=2,III=3,IV=4,V=5,IX=9,X=10,XL=40,L=50,XC=90,C=100,CD=400,D=500,CM=900,M=1000;
printf("Adj meg egy szamot 1 es 1000 kozott:");
scanf("%d",&a);
sz1=a/100;
sz2=(a-sz1*100)/10;
sz3=((a-sz1*100)-sz2*10)/1;
printf("A Megadott szam a:%d\n",a);
printf("sz1:%d\n",sz1);
printf("zs2:%d\n",sz2);
printf("sz3:%d\n",sz3);
for (k=0;k<sz1;k++) printf("C");
for (j=0;j<sz2;j++) printf("X");
for (h=0;h<sz3;h++) printf("I");
system("pause");
//getchar();
}Xbox One: bandymnc
-
kispx
addikt
válasz bandi0000 #3469 üzenetére
Na kerestem egy IDE-t a gépen. Elbeszéltünk egymás mellett
#include <stdio.h>
int main()
{
int x = 566;
printf("Szam = ");
scanf("%d", &x);
if(x>=1000)
{
printf("M");
x=x-1000;
}
while(x>900)
{
printf("CM");
x=x-900;
}
while (x >= 500)
{
printf("D");
x = x - 500;
}
while (x>=400)
{
printf("CD");
x=x-400;
}
while (x>=100)
{
printf("C");
x=x-100;
}
while (x>=90)
{
printf("XC");
x=x-90;
}
while (x>=50)
{
printf("L");
x=x-50;
}
while (x>=40)
{
printf("XL");
x=x-40;
}
while (x>=10)
{
printf("X");
x=x-10;
}
while (x>=9)
{
printf("IX");
x=x-9;
}
while (x>=5)
{
printf("V");
x=x-5;
}
while (x>=4)
{
printf("IV");
x=x-4;
}
while (x>0)
{
printf("I");
x = x - 1;
}
return 0;
}Nekem ez a 660-at jól írja ki.
MÁS:
A Qt Creator miért nem ír ki semmit sem debugolás alatt? Ha terminálból futtatom csak akkor ír ki valamit ez a program. -
kingabo
őstag
válasz bandi0000 #3471 üzenetére
Egy alternatív megoldás az eredeti 5letedet is felhasználva: csinálsz 3db 10 elemű tömböt feltöltöd őket, hogy a százasok, tízesek, egyesek helyére mit kell írni, ha a tömbindex + 1 az érték. Ezután a szétbontott számokat a fenti tömbökben indexként használva összefüzöd a római számot.
-
bandi0000
nagyúr
válasz kingabo #3477 üzenetére
köszönöm bár már nem kell de ha akarsz segíteni van egy másik feladat aminek az a lényege hogy most bekérek egy legfeljebb 4 jegyű számot és azt átírja 2-es számrendszerbelibe
tehát pl beírok egy 10-est akkor ő kidobja hogy 1010
Van egy megoldási lehetőség a tegnapihoz hasonlóan hogy kiirom hogy ha 9000-8000-7000 stb mit kell kiirnia és ugyan úgy kivonom belőle, de biztos van egyszerűbb megoldás is mert ennek az a hibája hogy ki kéne számolnom hogy a 6000 pl hogy néz ki 2 es számrendszerben és igy tovább
a tanár azt mondta hogy bontsuk fel asszem hexadecimálisnak hívják amikor a kettes számrendszert felosztjuk 4-sével tehát: pl 011001010101 ez igy nézne ki : 0110|0101|0101|
és akkor az x számot felbontom számjegyekre és megvizsgálom hogy ha az 1-ő számjegy 9 akkor irja ki a kettes számrendszerbeli átváltását a 9-nek tehát akkor elsőnek kiirná hogy 1001 és akkor vizsgálja a 2.3.4. elemét a számnak de szerintem ez nem jó ígyXbox One: bandymnc
-
kispx
addikt
válasz bandi0000 #3479 üzenetére
Akkor kezdjük az elejétől.
"bekérek egy legfeljebb 4 jegyű számot"
A legnagyobb 4 jegyű szám 9999, ami binárisan 10011100001111 (14 karakter ha jól számolom). Tehát lefoglalsz egy 14 elemű karaktertömböt, ebbe rakod a végeredményt.Az eljárás: (úgy mint papíron)
bekéred a számod (legyen x)x-et elosztod kettővel. A maradékot (0 vagy 1-et beleírod a karaktertömbbe)
A hányadost megint elosztod kettővel és a maradékot megint beleírod a karaktertömbbe.
.
.
.
Egészen addig csinálod míg a hányados nulla nem lesz. Végül a karaktertömböt fordítva írod ki.Tehát példával illusztrálva:
x = 5
5 / 2 == 2 (maradék 1)
2 / 2 == 1 (maradék 0)
1 / 2 == 0 (maradék 1)101
[ Szerkesztve ]
-
sztanozs
veterán
Asszem valahogy így...
char[81] bin = "";
int counter = 1;
while (szam > 0 ) {
if (counter % 5 == 0) {
bin[80 - counter] = '|';
counter++;
}
bin[80 - counter] = '0' + (szam % 2);
szam = szam / 2;
counter++;
}
printf( bin[81 - counter] );JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...
-
bandi0000
nagyúr
Érteni értem de azt hogy tudom leírni hogy maradék lett e vagy sem?
[ Szerkesztve ]
Xbox One: bandymnc
-
-
kispx
addikt
-
bandi0000
nagyúr
while(a==0)
{
z=x%2;
if(z==1)
{
for(i=0;i<14;i++)
{
tmb[i]=1;
}
}
if(z==0)
{
for(i=0;i<14;i++)
{
tmb[i]=0;
}
}
if(x==0)
{
a=1;
}
}
én meg hirtelen ezt találtam ki ez hülyeség mi?
vagyis én ug ygondoltam hogy a while addig ismételje amig nem lesz az x=0, és akkor a while-ban átírja az a-t 1 re és elvileg meg szakad a ciklus nem?[ Szerkesztve ]
Xbox One: bandymnc
-
bandi0000
nagyúr
-
sztanozs
veterán
válasz bandi0000 #3494 üzenetére
12-nél a 1100 helyes (1*8+1*4+0*2+0*1)
Vagy fordítva rakod be a tömbbe (végétől kezdve és a végére teszel egy '\0'-t (string vége karakter C-ben) és onnan iroatod ki ahova visszafele eljutottál (ezt csinálja az én példám). Vagy feltöltöd a tömböt rendesen és kiiratáskor címezed meg a végétől és egy csökkenő ciklusban egyesével kiírod a számokat (de ugye csak annyit, amennyit beleraktál).
Harmadik megoldás - valahogy így (fordító és ellenőrzés nélkül):
bitmaszk és bitshift
char* binaryConv(int szam){
char* binary = "0000|0000|0000|0000";
int bitmask = 0x4000; //16 384
int counter = 0;
while (bitmask > 0){
if (szam & bitmask) binary[counter] = '1'; // ha az adott bit 1, akkor a stringbe is azt helyettesítjük
counter++;
if (counter%4 == 0) counter++; //átléptetni az elválaszókat
bitmask = bitmask >> 1; //bitmaszkot eggyel jobbra tolni
}1) Csak 4 jegyű számokig működik (azaz pontosabban 16384-ig)
2) Amit visszaad ki lehet irattatni printf-fel...
return binary;
}JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...
-
sztanozs
veterán
válasz bandi0000 #3499 üzenetére
És érted is?
Vazz, csak most látom, hogy beleszkerkesztettem a kód végébe (return elé) a kommentet...
És még egy plusz komment (tévedés az eredeti kommentben): nem 16384 a max, a 65535-ig menő számokon működik helyesen a kód (az annál nagyobb számokon az 15. feletti biteket nem írja ki)
1111 | 1111 | 1111 | 1111 = 65 535[ Szerkesztve ]
JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...
Új hozzászólás Aktív témák
● olvasd el a téma összefoglalót!
● ha kódot szúrsz be, használd a PROGRAMKÓD formázási funkciót!
- Iphone 12 Pro 128 GB + Tok
- Nintendo Switch RP2040-tiny Picofly 2.74fw CFW chip készlet eladó!
- Nintendo Switch RP2040-tiny Picofly 2.74fw CFW chip készlet eladó!
- Xbox 360 Slim 500GB Rgh 3.0 azonnali bootolás! + játékok, 1+5 év gar. 22 éve működő üzletből!
- XBOX ONE S 500GB, dobozában, gyári tarozékaival és 6 hó garanciával, Bp-i üzletből!
Állásajánlatok
Cég: Ozeki Kft.
Város: Debrecen
Cég: Ozeki Kft.
Város: Debrecen