- Súlyos adatvédelmi botrányba kerülhet a ChatGPT az EU-ban
- HBO Max & OD topic
- Hálózatokról alaposan
- 3 évig még biztosan nem rendelhetünk Xiaomi EV-t
- Windows 11
- Vodafone otthoni szolgáltatások (TV, internet, telefon)
- Otthoni hálózat és internet megosztás
- Milyen routert?
- Microsoft Excel topic
- Proxmox VE
Új hozzászólás Aktív témák
-
kispx
addikt
válasz bandi0000 #3442 üzenetére
Nem kellettett volna szétbontanod. Bekéred egy int-be. Utána...
1) ha 1000, akkor kiiratod az "M" sztringet
2 ha nem 1000 akkor
megnézed, hogy nagyobb mint 500, ha igen akkor kiiratod a "D" sztringet, majd ebből a számból kivonsz 500-ataz így kapott számot ellenőrized, hogy nagyobb mint 100, ha igen akkor kiiratod a "C" sztringet, majd ebből a számból kivonsz 100-at (Ha jól emlékszem, három C lehet egymás mellett, szóval ezt a lépést 3X csináld meg)
az így kapott számot ellenőrized, hogy nagyobb mint 50, ha igen akkor kiiratod a "L" sztringet, majd ebből a számból kivonsz 50-et
.... stb, egyészem 1-ig
[ Szerkesztve ]
-
sztanozs
veterán
válasz bandi0000 #3449 üzenetére
Nálam is >= a >
pszeudo:while (num>0){
if num >=900 { s+="CM"; num -=900;}
else if num >=500 { s+="D"; num -=500;}
else if num >= 400 { s+="CD"; num -=400;}
else if num >= 100 { s+="C"; num -=100;}
else if num >= 90 { s+="XC"; num -=90;}
else if num >= 50 { s+="L"; num -=50;}
else if num >= 40 { s+="XL"; num -=40;}
else if num >= 10 { s+="X"; num -=10;}
else if num >= 9 { s+="IX"; num -=9;}
else if num >=5 { s+="V"; num -=5;}
else if num >=4 { s+="IX"; num -=4;}
else if num >=1 { s+="I"; num -=1;}
}[ 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...
-
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...
-
-
-
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...
-
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.
-
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 ]
-
kispx
addikt
-
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...
-
sztanozs
veterán
válasz bandi0000 #3501 üzenetére
felesleges a while-ban az 'a' változó meg az if (x == 0) a= 1;
egyszerűen csak while (x>0) kell, az a-t nem is használod másra csak ennek az ellenőrzésére...[ 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...
-
kingabo
őstag
válasz bandi0000 #3543 üzenetére
Még if se kell.
Hátulról előre haladsz a tömbbön, a tömb i-edik értéket megszorzod a hozzátartozó hatvánnyal és ezt összegzed. A hatvány pedig a kövi: kezdetben 1 aztán minden iteráció végén szorzod 2-vel.
Ha if-fel akarod: a szorzás előtt megnézed, hogy az adott érték nem nulla-e.[ Szerkesztve ]
-
Jester01
veterán
válasz bandi0000 #3555 üzenetére
Jó lenne ez, csak a %d ugye addig olvas amíg tud, tehát egyben benyeli a számsorodat. Ezért kell karakterenként olvasni.
eriktoth: Igen, ha túlcsordul akkor elölről kezdi. Ezt ott kellene lekezelni ahol növeled, hogy ne növelje tovább ha már UCHAR_MAX
[ Szerkesztve ]
Jester
-
dabadab
titán
válasz bandi0000 #3560 üzenetére
Miert egyre inicializalod az x-et? A tmb-ben meg karaktereket nezel, nem szamokat, ezert az egyenloseg jobb oldalar nem 1, hanem '1' kell (ami ASCII eseten egyebkent 49).
x=0;
for ( int c=0 ; tmb(c) != 0 ; c++ )
{
x <<= 1;
if ( tmb(c) == '1' ) x|=1;
}Ja, meg azt azert vegyuk eszre, hogy a tizes szamrendszerbe valo konvertalast az printf()-re biztad
[ Szerkesztve ]
DRM is theft
-
kingabo
őstag
válasz bandi0000 #3720 üzenetére
Pár dolog:
- a while ciklusban az i változód a tomb utolsó utáni elemére fug mutatni.
- négyzetszámot nem úgy állítasz elő, hogy 1-et vagy 2-t megszorzol 2-vel.
- miért várod, hogy a kiíratásnál más legyen az a és a b értéke, ha az utolsó for ciklusban meg se változtatod őket? -
EQMontoya
veterán
válasz bandi0000 #5342 üzenetére
Nem akarok kódot írni, mert akkor nem tanulsz belőle, de szívesen adok néhány tippet.
1, A tömböt, amibe beolvasod a karaktereket, később is módosíthatod. Nincs szükséged második tömbre.
2, Használj valami rendezést. Az egész feladat arra megy ki, hogy a kapott karaktereket valamilyen formában rendezd, és ezt add visza. Néhány példa: buborékrendezés, minimum kiválasztáos rendezés.Buborékot nem illik használni, de az a legegyszerűbb, ha nem láttál még ilyesmit. Erre a feladatra a minimum kiválasztás szerintem teljesen oké, próbáld meg azt. Ha nem megy, írd le, meddig jutottál.
Same rules apply!
-
zsambek
aktív tag
válasz bandi0000 #5344 üzenetére
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
int i, min, j; //int
char string[20]; //string
char tmp; //temp char
scanf("%s",string); //scan
//minimum selection sort
for(i = 0; i < strlen(string) -1 ; i++){
min = i;
for(j = i+1; j < strlen(string); j++){
if(string[j] < string[min])
min = j;
}
tmp = string[min];
string[min] = string[i];
string[i] = tmp;
}
printf("%s",string);
return 0;
}[ Szerkesztve ]
-
-
zsambek
aktív tag
válasz bandi0000 #5350 üzenetére
Szia!
Valahogy ugy kellene, hogy eloszor nezz meg egy ASCII tablat, hogy hogy lehetne egy char-t int-re "kasztolni", ugy, hogy 0 legyen az 'a' betu. A 'b' betu az 1, es igy tovabb..
(Olvass be egy chart, irasd ki int-kent, Olvass be egy chart, vonj ki belole egy chart, irasd ki int-kent)Mit kellene, mibol kivonni.
Igy meg tudnal tolteni egy 26 elemu int tombot a 0-rol, es nem kellene szorakozni massal.Ide feltoltottem, de eloszor azt akarom, hogy kicsit szenvedj vele, es gondolkozz, ha esetleg teljesen feladtad, akkor kerdezz, es megmondom a kodot!
http://thinfi.com/m14
[ Szerkesztve ]
-
zsambek
aktív tag
válasz bandi0000 #5352 üzenetére
Szia!
Számomra ez elég triviális, de én tavaly azt csináltam ilyenkor, hogy google--> és rákerestem az érettséginek a pontozási útmutatójára, és ott eléggé részletesen le van írva.
"Két szó bekérése és megvizsgálása 5 pont
Utalt a beolvasandó tartalomra, és beolvasta a két szót 1 pont
Összehasonlította a két szót 2 pont
Helyesen állapította meg, hogy a két szó anagramma 1 pont
Ha anagrammák voltak, kiírta a képernyőre az „Anagramma”
szót, egyébként a „Nem anagramma” szöveget 1 pont "[ Szerkesztve ]
-
EQMontoya
veterán
válasz bandi0000 #5361 üzenetére
Írsz egy függvényt, ami paraméterként kap egy szót, és kiírja annak anagrammáit.
Felveszel egy tömböt, láncolt listát, bármit, amiben a leghosszabb _szavak indexét_ tárolod.
Elindulsz végig a paraméterként kapott szótömbbön, és ha az eddiginél hosszabb szót találsz, akkor kiüríted az indexeidet, ha egyenlő hosszúságút, akkor csak hozzáírsz.
Így a bejárás után megvan, hogy milyen hosszú a leghosszabb szó, mennyi ilyen hosszúságú van és azok hol vannak a tömbödben. Ez után már csak meg kell velük hívni a legelső függvényt.Same rules apply!
-
EQMontoya
veterán
válasz bandi0000 #5368 üzenetére
Az a probléma, hogy amit csinálni akarsz, az shallow copy, de Neked deep copyra lenne szükséged. Most a shallow copyt is viszonylag rosszul csinálod, mert a pointered heapen van, a lokális változód pedig valszeg stacken, tehát ez így ebben a formában nem fog menni.
A megoldást az strcpy (deprecated!) illetve strncpy függvények környékén keresd.
Same rules apply!
Ú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!
- exHWSW - Értünk mindenhez IS
- Samsung Galaxy S23 és S23+ - ami belül van, az számít igazán
- Folyószámla, bankszámla, bankváltás, külföldi kártyahasználat
- Súlyos adatvédelmi botrányba kerülhet a ChatGPT az EU-ban
- gban: Ingyen kellene, de tegnapra
- Toyota topik
- VR topik (Oculus Rift, stb.)
- TCL LCD és LED TV-k
- Modern monitorokra köthető 3dfx Voodoo kártya a fészerből
- Napelem
- További aktív témák...