- Honor Magic7 Pro - kifinomult, költséges képalkotás
- Samsung Galaxy Watch (Tizen és Wear OS) ingyenes számlapok, kupon kódok
- Honor 200 Pro - mobilportré
- Díjnyertes okosgyűrű érkezik júliusban
- Motorola Edge 40 neo - színre és formára
- Motorola Moto Tag - nyomom, követ
- Telekom mobilszolgáltatások
- Ingyen beszerezhető pár SEGA klasszikus mielőtt lekerülnek a Play Áruházból
- CMF Phone 2 Pro - a százezer forintos kérdés
- Milyen okostelefont vegyek?
Ú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!
- Külföldi rendelések: boltok, fizetés, postázás
- Honor Magic7 Pro - kifinomult, költséges képalkotás
- Eredeti játékok OFF topik
- Villanyszerelés
- Audi, Cupra, Seat, Skoda, Volkswagen topik
- Drón topik
- EA Sports WRC '23
- Linux kezdőknek
- Samsung Galaxy Watch (Tizen és Wear OS) ingyenes számlapok, kupon kódok
- Bittorrent topik
- További aktív témák...
- BESZÁMÍTÁS! Intel Core i7 4790 4 mag 8 szál processzor garanciával hibátlan működéssel
- LG 27GR95QE - 27" OLED / QHD 2K / 240Hz & 0.03ms / NVIDIA G-Sync / FreeSync Premium / HDMI 2.1
- ÁRGARANCIA!Épített KomPhone i3 10105F 16/32/64GB RAM RTX 3050 6GB GAMER PC termékbeszámítással
- REFURBISHED és ÚJ - HP USB-C Dock G5 docking station (5TW10AA) - 3x4K felbontás, 120Hz képfrissítés
- Bomba ár! Lenovo X1 Yoga 2nd - i7-7G I 8GB I 256SSD I 14" WQHD I HDMI I W11 I CAM I Garancia!
Állásajánlatok
Cég: PC Trade Systems Kft.
Város: Szeged
Cég: Promenade Publishing House Kft.
Város: Budapest