- Gurulunk, WAZE?!
- sziku69: Fűzzük össze a szavakat :)
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- eBay-es kütyük kis pénzért
- Luck Dragon: Asszociációs játék. :)
- bitpork: Phautós tali a Balcsinál 2025 Augusztus 2 napján (szombat)
- bambano: Bambanő háza tája
- Magga: PLEX: multimédia az egész lakásban
- gban: Ingyen kellene, de tegnapra
- Meggyi001: RTX 5060 - Az új népkártya?
Hirdetés
Talpon vagyunk, köszönjük a sok biztatást! Ha segíteni szeretnél, boldogan ajánljuk Előfizetéseinket!
Új hozzászólás Aktív témák
-
bandi0000
nagyúr
válasz
bandi0000 #5371 üzenetére
Meg annyit ha tudnál esetleg még segíteni, hogy úgy néz ki az IF-nél hasal el, megpróbáltam úgy hogy felvettem 2 integer változót és abba belerakni egy számot, amit az strlen ad visza, hogy tudjam hány betűből áll de úgy néz ki mintha bele akarná ezáltal tölteni a szót vagy valamit az int változóba ha érted
-
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.
-
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. -
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 " -
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
-
-
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;
} -
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.
-
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? -
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
-
Jester01
veterán
-
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. -
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 -
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;
} -
-
kispx
addikt
-
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
-
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 #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. -
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;}
} -
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
Ú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!
- Telefon felvásárlás!! Xiaomi Redmi 9, Xiaomi Redmi 9AT, Xiaomi Redmi 10, Xiaomi Redmi 10 2022
- Bomba Ár! Dell Latitude 3190 - Intel N4120 I 4GB I 64GB SSD I 11,6" HD I Cam I W11 I Garancia!
- AKCIÓ! Lenovo Legion Slim 5 Gamer notebook - R7 7435HS 16GB RAM 1TB SSD RTX 4070 8GB GDDR6 WIN11
- Bomba ár! HP EliteBook X360 830 G8 - i7-1185G7 I 16GB I 512SSD I 13,3" FHD Touch I Cam I W11 I Gari!
- Akció! Paidashu 10600MAH / 20700MAH Powerbank olcsón!
Állásajánlatok
Cég: FOTC
Város: Budapest