- NVIDIA GeForce RTX 5070 / 5070 Ti (GB205 / 203)
- AMD Ryzen 9 / 7 / 5 9***(X) "Zen 5" (AM5)
- Radeon RX 9060 XT: Ezt aztán jól meghúzták
- Azonnali alaplapos kérdések órája
- AMD Ryzen 9 / 7 / 5 / 3 5***(X) "Zen 3" (AM4)
- Hobby elektronika
- AMD K6-III, és minden ami RETRO - Oldschool tuning
- Vezetékes FEJhallgatók
- HDMI topic
- OLED monitor topik
Új hozzászólás Aktív témák
-
Geresics
addikt
válasz
kingabo #3922 üzenetére
Bocsi, vizsga után rohantam melózni, azért nem gépeltem be, amit csináltam. Valami ilyesmit hoztam össze. Tudom, hogy lehetne szebb is, de hát a görbülés a lényeg, nem az ötös!
Kb. ezt hoztam össze vizsgán (ill. próbálkoztam még egy-két módosítással is), de nem jó.
#include <stdio.h>
#include <string.h>
void main()
{
char szoveg[10];
int i=0;
int szam=0;
printf("Adjon meg egy max. 10 karakter hosszu szoveget, majd usson ENTER-t!\n");
gets(szoveg);
for (i=0; i<10; i++)
{
if (szoveg[i]=='0' ||
szoveg[i]=='1' ||
szoveg[i]=='2' ||
szoveg[i]=='3' ||
szoveg[i]=='4' ||
szoveg[i]=='5' ||
szoveg[i]=='6' ||
szoveg[i]=='7' ||
szoveg[i]=='8' ||
szoveg[i]=='9')
szoveg[i]=szam;
printf("%s", szam*szoveg[i+1]);
else printf("%s", szoveg[i]);
i++;
}
} -
artiny
őstag
válasz
kingabo #3808 üzenetére
Ez már olvastam
de az elején még teccet,hogy nem definiciókként írja le a dolgokat. Csak a kozepe fele már elvesztem a szovegben. Masodszor is nekifutottam akkor már szinte mindent értettem. De a végén nem tudtam ossze hozni a programot. (chat programnál én is olvastam már egyszer ezeleott
)
-
vanek
tag
-
Jester01
veterán
válasz
kingabo #3544 üzenetére
Sőt, tömb sem kell
-
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ó így -
artiny
őstag
válasz
kingabo #3061 üzenetére
Köszönöm a segítségeteket,sikerült így
most már megírni /talán jól is
/
#include <stdlib.h> // for itoa() call
#include <stdio.h> // for printf() call
int main() {
int num,i,mard,erd = 0,num2;
printf("Adjon meg egy szamot \n");
scanf("%d",&num);
num2=num;
for(i = 1; ; i++){
mard = num%10;
// printf("mardadek %d\n", mard);
if(!(mard == 0 || mard == 3 || mard == 6 || mard == 9)){
erd = erd + mard;
}
num = num/10;
// printf("%d\n", num);
if(num==0){
break;
}
}
printf("Szamjegyek osszege /0,3,6,9 kivul/ %d\n", erd);
if(erd%3 == 0){
printf("%d oszthato 3 .al",num2);
}
else{
printf("%d nem oszthato 3 .al \n\n",num2);
}
return 0;
} -
artiny
őstag
válasz
kingabo #3057 üzenetére
Helo
"Ezt kell addig csinálnod, amíg végül 0-t nem kapsz." -ezt nem nagyon ertem,
hogyan tudok beljebb halladni,hogy nem csak az utolso szamot tudjam "levagni",ellenorizni?
pl.: 151
a = num%10; // erdemeny: 1
b = num%100; // erdemeny: 51
itt a baj hogy az 5 utan az 1 is ott van...hogy lehet h csak az 5 .st irja ki?
-
Jester01
veterán
válasz
kingabo #2669 üzenetére
A lényeges kifejezés az "initial whitespace". Tehát ettől még ugyanúgy megáll az operator>> a szavak között, mert csak a beolvasás elején lévőket érinti. Ráadásul ahogy a link mondja is, bizonyos esetekben a nem eldobott bevezető szóköz rögtön le is állítja a feldolgozást:
#include <iostream>
#include <string>
using namespace std;
int main(int, char**)
{
string name;
cin >> noskipws >> name;
cout << '*' << name << '*' << endl;
cin >> name;
cout << '*' << name << '*' << endl;
cin >> name;
cout << '*' << name << '*' << endl;
return 0;
}
$ g++ -Wall test.cpp
$ echo "John Doe" | ./a.out
*John*
**
**Itt a feldolgozás a szóközön megállt, mert a noskipws miatt nem dobja el, viszont az operator>> ezen overloadja a szóköznél annak kiolvasása nélkül megáll. Szóval ez így sose megy tovább.
-
#90999040
törölt tag
válasz
kingabo #2501 üzenetére
Igen, így még valóban lehet optimalizálni.
Jester01: valóban igazad volt, hogy a feltétel módosításával működőképes a kód. Mondjuk első nekifutásra nem is néztem meg olyan részletesen a #2497-es hozzászólásomban említett okok miatt, inkább működő alternatívákat kerestem, és csak a #2498-as hozzászólásod után tértem vissza az eredeti kódra.
-
Cicero
őstag
válasz
kingabo #2469 üzenetére
Sajna előjöhet, a házi mintafájljába is előkerül, és nyilván kell is, hogyan máshogy jelölnéd azt hogy az egyik helyiérték 0?
Megoldás még mindig kéne hexából decbe, ha valakinek van valami ötlete kérem írja le. (A gond az, hogy olvasásnál bájtonként tudok olvasni, ami 8 bit, azonban bináris és hexa között 4 bites az átjárás (szal 4 bittel tudok leírni egy hexa karaktert pl F = 1111). Beolvasásnál így a "2A" hexa szám egy karakterként jelenik meg a stringben, amit valahogy vissza kéne fejtsek egy decimális számra. Ha ezt megtudnám, már kb sínen lennék... (ugye ASCII-ban 0-tól 255 -ig terjed a karakterkód azaz hexában: 00 -> FF )
-
Szőkecica
csendes tag
válasz
kingabo #2411 üzenetére
Megnéztem köszi, most már kezdem érteni de még mindig nem tiszta. Írtam egy példát és ezt próbálgatom hogy most hogyis van ez.
#include <stdio.h>
main()
{
char k;
k=127; /* -128 és 127 közötti értéket tud tárolni */printf("%d\n\n", k);
printf(" %d bajt\n\n", sizeof(k));
}ahogy tesztelgettem oda írtam a kommentemet (hogy nehogy lefelejtsem:-)). Az lenne most a kérdésem hogy akkor ez alapértelmezetten előjeles? Ha jól értem, és hogy tudom előjel nélkülivé alakítani? Gondolom akkor negatív értéket nem tud felvenni, cak pozitívat, ami 0-255 között lehet? Mit jelent tulajdonképpen az hogy előjeles?
Azt hittem hogy az ami előtt van egy - jel :-) -
Pcmagicnet
csendes tag
válasz
kingabo #2378 üzenetére
Köszi, próbálkozom. A tömbök kezelését még nem nagyon értem. Ha átmásolom az egyik tombből a másikba az 5 karakternél hosszabb szavakat, akkor az hogyan helyezkedik el a tömbben? Hogy tudom számolni vagy növelni a szavak számát? Úgy tanultam, hogy 1 tömbelem 1 karaktert tartalmaz.
pl: a tömbök indexei:
tomb[0] = 'h';
tomb[1] = 'e';
tomb[2] = 'l';
tomb[3] = 'l';
tomb[4] = 'o';
tomb[5] = '\0'; szóköz vagy sortérésnél beírja a 0 -a karaktert?....és hogy folytatódik tovább?
így?
tomb[6] = 'm';
tomb[7] = 'i';
tomb[8] = 'z';
tomb[9] = 'u';
tomb[10] = '\0';..és ezt hogy lehet kiíratni? Vagy nem jól gondolom az egészet?
-
RexpecT
addikt
válasz
kingabo #2352 üzenetére
Köszi szépen.
A Te progid a feladatban megadott pl-re rossz eredményt fog adni, mivel amikor kiér a csiga, Nálad akkor is visszacsúszik.
Ez tényleg így van.ezt már sikerült javítanom ezzel:
for(i=1;magassag<=h && magassag>=0;i++)
{
magassag+=u;
if(magassag<h)
{
magassag-=d;
}
u=u*f;
printf("magassag %f\n",magassag);
}
Viszont azt is meg kellene oldani, hogy a csiga ne tudjon negatív irányba visszacsúszni,de erre még nem jöttem rá, hogy hogyan is kellene. -
Pcmagicnet
csendes tag
válasz
kingabo #2357 üzenetére
Értem már, köszi
. Jó hogy mondod ezeket a dolgokat: printf("%s","*"); helyett printf("\*");
mert ezekről nem tudtam. Még csak most kezdtem el tanulni a C -t eddig csak webes nyelveket tanultam.
Csináltam egy másik progit amiben számmal indexelt tömböt használok, a te példádhoz hasonlóan. A kódtábla megvan köszi, de szerintem soha nem fogom tudni megtanulni mindet.
Köszi mégegyszer mindent -
Pcmagicnet
csendes tag
válasz
kingabo #2354 üzenetére
Igazad van! Tényleg rosszul közelítettem meg a feladatot. Most csináltam egy olyat, hogy a bevitt karakterek száma adja meg a 100% -ot. Ez ugye bármennyi lehet! Ennek megfelelően számolom ki az egyes karakterek előfordulási gyakoriságát %-ban.
Szerintem jó lett, de azért nézd meg. Kíváncsi vagyok a véleményedre.
#include <stdio.h>
main()
{
int c1, nc, i, ures, nulla,egy,ketto,harom,negy,ot,hat,het,nyolc,kilenc,egyeb;
int a,b,c,d,e,f,g,h,i2,j,k2,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z;
float k;
ures=c1=nc=a=b=c=d=e=f=g=h=i2=j=k2=l=m=n=o=p=q=r=s=t=u=v=w=x=y=z = 0;
nulla=egy=ketto=harom=negy=ot=hat=het=nyolc=kilenc=egyeb= 0;
while((c1 = getchar()) != EOF){
++nc;
switch(c1){
case 'a': ++a; break;
case 'b': ++b; break;
case 'c': ++c; break;
case 'd': ++d; break;
case 'e': ++e; break;
case 'f': ++f; break;
case 'g': ++g; break;
case 'h': ++h; break;
case 'i2': +i2; break;
case 'j': ++j; break;
case 'k2': ++k2; break;
case 'l': ++l; break;
case 'm': ++m; break;
case 'n': ++n; break;
case 'o': ++o; break;
case 'p': ++p; break;
case 'q': ++q; break;
case 'r': ++r; break;
case 's': ++s; break;
case 't': ++t; break;
case 'u': ++u; break;
case 'v': ++v; break;
case 'w': ++w; break;
case 'x': ++x; break;
case 'y': ++y; break;
case 'z': ++z; break;
case ' ': ++ures; break;
case '\n': ++ures; break;
case '\t': ++ures; break;
case '0': ++nulla; break;
case '1': ++egy; break;
case '2': ++ketto; break;
case '3': ++harom; break;
case '4': ++negy; break;
case '5': ++ot; break;
case '6': ++hat; break;
case '7': ++het; break;
case '8': ++nyolc; break;
case '9': ++kilenc; break;
default: ++egyeb; break;
}
}
printf("Osszes karakter:%ddb=(100%s)\n\nEbbol:", nc, "%");
/* százalék számítás */
k = (nc/100.0) ;
printf("\na:");
for(i=0; i<=a; ++i){
printf("%s","*");
}
printf("(%1.1f%s) \n", (a / k), "%" );
printf("b:");
for(i=0; i<=b; ++i){
printf("%s","*");
}
printf("(%1.1f%s) \n", (b / k), "%" );
printf("c:");
for(i=0; i<=c; ++i){
printf("%s","*");
}
printf("(%1.1f%s) \n", (c / k), "%" );
printf("d:");
for(i=0; i<=d; ++i){
printf("%s","*");
}
printf("(%1.1f%s) \n", (d / k), "%" );
printf("e:");
for(i=0; i<=e; ++i){
printf("%s","*");
}
printf("(%1.1f%s) \n", (e / k), "%" );
printf("f:");
for(i=0; i<=f; ++i){
printf("%s","*");
}
printf("(%1.1f%s) \n", (f / k), "%" );
printf("g:");
for(i=0; i<=g; ++i){
printf("%s","*");
}
printf("(%1.1f%s) \n", (g / k), "%" );
printf("h:");
for(i=0; i<=h; ++i){
printf("%s","*");
}
printf("(%1.1f%s) \n", (h / k), "%" );
printf("i2:");
for(i=0; i<=i2; ++i){
printf("%s","*");
}
printf("(%1.1f%s) \n", (i2 / k), "%" );
printf("j:");
for(i=0; i<=j; ++i){
printf("%s","*");
}
printf("(%1.1f%s) \n", (j / k), "%" );
printf("k:");
for(i=0; i<=k2; ++i){
printf("%s","*");
}
printf("(%1.1f%s) \n", (k2 / k), "%" );
printf("l:");
for(i=0; i<=l; ++i){
printf("%s","*");
}
printf("(%1.1f%s) \n", (l / k), "%" );
printf("m:");
for(i=0; i<=m; ++i){
printf("%s","*");
}
printf("(%1.1f%s) \n", (m / k), "%" );
printf("n:");
for(i=0; i<=n; ++i){
printf("%s","*");
}
printf("(%1.1f%s) \n", (n / k), "%" );
printf("o:");
for(i=0; i<=o; ++i){
printf("%s","*");
}
printf("(%1.1f%s) \n", (o / k), "%" );
printf("p:");
for(i=0; i<=p; ++i){
printf("%s","*");
}
printf("(%1.1f%s) \n", (p / k), "%" );
printf("q:");
for(i=0; i<=q; ++i){
printf("%s","*");
}
printf("(%1.1f%s) \n", (q / k), "%" );
printf("r:");
for(i=0; i<=r; ++i){
printf("%s","*");
}
printf("(%1.1f%s) \n", (r / k), "%" );
printf("s:");
for(i=0; i<=s; ++i){
printf("%s","*");
}
printf("(%1.1f%s) \n", (s / k), "%" );
printf("t:");
for(i=0; i<=t; ++i){
printf("%s","*");
}
printf("(%1.1f%s) \n", (t / k), "%" );
printf("u:");
for(i=0; i<=u; ++i){
printf("%s","*");
}
printf("(%1.1f%s) \n", (u / k), "%" );
printf("v:");
for(i=0; i<=v; ++i){
printf("%s","*");
}
printf("(%1.1f%s) \n", (v / k), "%" );
printf("w:");
for(i=0; i<=w; ++i){
printf("%s","*");
}
printf("(%1.1f%s) \n", (w / k), "%" );
printf("x:");
for(i=0; i<=x; ++i){
printf("%s","*");
}
printf("(%1.1f%s) \n", (x / k), "%" );
printf("y:");
for(i=0; i<=y; ++i){
printf("%s","*");
}
printf("(%1.1f%s) \n", (y / k), "%" );
printf("z:");
for(i=0; i<=z; ++i){
printf("%s","*");
}
printf("(%1.1f%s) \n", (z / k), "%" );
printf("Ures:");
for(i=0; i<=ures; ++i){
printf("%s","*");
}
printf("(%1.1f%s) \n\n", (ures / k), "%" );
printf("0:");
for(i=0; i<=nulla; ++i){
printf("%s","*");
}
printf("(%1.1f%s) \n", (nulla / k), "%" );
printf("1:");
for(i=0; i<=egy; ++i){
printf("%s","*");
}
printf("(%1.1f%s) \n", (egy / k), "%" );
printf("2:");
for(i=0; i<=ketto; ++i){
printf("%s","*");
}
printf("(%1.1f%s) \n", (ketto / k), "%" );
printf("3:");
for(i=0; i<=harom; ++i){
printf("%s","*");
}
printf("(%1.1f%s) \n", (harom / k), "%" );
printf("4:");
for(i=0; i<=negy; ++i){
printf("%s","*");
}
printf("(%1.1f%s) \n", (negy / k), "%" );
printf("5:");
for(i=0; i<=ot; ++i){
printf("%s","*");
}
printf("(%1.1f%s) \n", (ot / k), "%" );
printf("6:");
for(i=0; i<=hat; ++i){
printf("%s","*");
}
printf("(%1.1f%s) \n", (hat / k), "%" );
printf("7:");
for(i=0; i<=het; ++i){
printf("%s","*");
}
printf("(%1.1f%s) \n", (het / k), "%" );
printf("8:");
for(i=0; i<=nyolc; ++i){
printf("%s","*");
}
printf("(%1.1f%s) \n", (nyolc / k), "%" );
printf("9:");
for(i=0; i<=kilenc; ++i){
printf("%s","*");
}
printf("(%1.1f%s) \n\n", (kilenc / k), "%" );
printf("Egyeb karakter:");
for(i=0; i<=egyeb; ++i){
printf("%s","*");
}
printf("(%1.1f%s) \n\n", (egyeb / k), "%" );
system("PAUSE");
return 0;
}Most már csak azt kéne megoldani a hisztogram kinyomtatásánál, hogy a 100% az max. 70 karakter vagyis * legyen. Az 50% 35 *, a 10 % 7 *....stb. Ezt hogy oldjam meg?
Köszi a segítséget!!!
-
Pcmagicnet
csendes tag
válasz
kingabo #2352 üzenetére
Ha 10db a betűm van, akkor az 14.3% lesz. Mert ha 70 karakterben határozzuk meg a 100% -ot, akkor ( a / 0.7 ) az 14.3 lesz. A 10 ennyi % - a a 70 -nek.
De most esett le hogy kellene meg csinálni.
Úgy kellene megcsinálni, hogy akár 1db karakter is 100% legyen? És ha több szót karaktereket beírunk akkor karakterekre felbontva számolja ki hogy melyikből hány % -nyi van? pl: van 10db karakterem , ebből 6db 'a', és 4db 'b'. Akkor úgy kellene megjeleníteni, hogy 60% 'a', és 40% 'b' ?
Jól értem? Mert akkor én egy teljesen más vonalon indultam el -
Pcmagicnet
csendes tag
válasz
kingabo #2350 üzenetére
Igen, már elkezdtem csinálni. Az alja felé van egy rész, ami az 'a' karaktert már %-ban írja ki.
/* Ha pl: 70 karakter széllességben határozzuk meg a 100% -ot */
if(a != 0){a2 = a / 0.7; /* elosztom az 'a' értékét a 70. 1 % -ával. Ennyi % lesz! */
printf("a:");
for(szam=0; szam <= a; ++szam){
if(szam <= 70){
printf("%s", "*" );
}
}if(a2 <= 100.0){
printf("(%1.1f%s)", a2,"%");
}
else{
printf("(100.0%s)", "%");
}
}Tizedestörttel íratom ki, így nem kell kerekíteni. Úgy csináltam, hogyha túl menne a 100% -on, pl: 93 'a' betű, akkor ne írja ki hogy pl: 132%, hanem ha elértem a 70 karaktert, akkor 100% ot jelezzen. Ez így jó?
-
Karma
félisten
válasz
kingabo #2282 üzenetére
"A sizex-et add át egy lokális változónak, mert azt nem változtathatod."
WTF?! Érték szerinti átadásról hallottál-e már? Ha egy 4-es literált adsz be, akkor is működni fog, hiszen lokális változóként viselkedik. (Ráadás válasz: most buktál meg egy prog1 vizsgán ezért.) De basszus már majdnem elbizonytalanítottál.
Új hozzászólás Aktív témák
Hirdetés
● olvasd el a téma összefoglalót!
● ha kódot szúrsz be, használd a PROGRAMKÓD formázási funkciót!
- NVIDIA GeForce RTX 5070 / 5070 Ti (GB205 / 203)
- RETRO beárazás (mobil, PC, konzol)
- Kerékpárosok, bringások ide!
- Xiaomi 15 Ultra - kamera, telefon
- Okos Otthon / Smart Home
- Xiaomi Mi 11 Ultra - Circus Maximus
- AMD Ryzen 9 / 7 / 5 9***(X) "Zen 5" (AM5)
- Magga: PLEX: multimédia az egész lakásban
- Kazy Computers - Fehérvár - Megbízható?
- A fociról könnyedén, egy baráti társaságban
- További aktív témák...
- HP Zbook 14 laptop (14FHD/I7-G5/8GB/128SSD/MagyarVilágítós)
- Jó áron ÁRON ELADÓ! Üzleti HP Elitebook 1040 G9 Laptop! / i5-1245U 16GB 256GB
- Szuper áron DELL XPS 13 7390 /i7-10510U/16 GB Ram/512 GB SSD/IPS/
- ÁRESŐ! Dell Inspiron 3493 /10.gen i5-1035G1/8GB/512 GB SSD FHD
- Akciós áron eladó HP Elitebook 845 G7 / AMD Ryzen 5 pro-4650U/16 GB/256 SSD/14"/FHD/IPS/Gari/touch
- Telefon felvásárlás!! iPhone 12 Mini/iPhone 12/iPhone 12 Pro/iPhone 12 Pro Max
- BESZÁMÍTÁS! ASRock Z370 i5 8500 16GB DDR4 512GB SSD 2060 Super 8GB Zalman Z9 Plus Enermax 750W
- Eredeti, új Lenovo 330W töltők - ADL330SDC3A
- ÁRGARANCIA! Épített KomPhone Ryzen 7 9800X3D 32/64GB RAM RTX 5070 12GB GAMER PC termékbeszámítással
- Apple iPhone 13 128GB, Kártyafüggetlen, 1 Év Garanciával
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest
Cég: Liszt Ferenc Zeneművészeti Egyetem
Város: Budapest