Új hozzászólás Aktív témák
-
Dirty_Pio
csendes tag
válasz
Jester01 #943 üzenetére
Szoval ha ki szeretned szamitani az Euler-fele szam egyik x-ik hatvanyat( e^x -t ), akkor az a dolgod, hogy veszed a Taylor fele felbontasat a szamnak, ami lenyegebe a megoldas: e^x=1+e^1/1!+e^2/2!+e^3/3!+... egeszen egy megfeleloen nagy szamig. Es magyarazas kozbe ra is jottem mi is a problema, azaz en nem valasztottam eleg nagy szamot azaz enm eleg pontos az osszegem, mivel az elso x db szamot vettem igy ha mondjuk az e^4-t szeretnem kiszamolni csak az osszeg elso 4 tagjat veszem, es a kovetkezo szamok nem eleg kicsik ahhoz, hogy lehanyagolhato legyen. A kodban a kovetkezo javitasokat eszkozoltem :
#include <stdio.h>
int ex(int n, int x)
{
if (n>0) return x*ex(n-1,x);
else return 1;
}
int fact(int n)
{
if (n>0) return n*fact(n-1);
else return 1;
}
float xex(int n, int x)
{
float q;
if (n>0) {q=(float)ex(n,x)/fact(n);
// printf("%f \n",q);
return q+xex(n-1,x);
}
-->>else return 0;<<-- mivel igy ketszer szamolna a 0 faktorialist h
}
int main(void)
{
int x,n;
scanf("%d",&x);
->>printf("%f",xex(32,x)); <<- ennyit bit meg a float vagy a memoria... ha nagyobb pontossaggal probalkozok akkor errort kapok. Mondjuk igy sem olyan pontos a szamitas, mint amilyent a google mutat, de azt hiszem nincs mar mas hiba. Ha ti talaltok szoljatok!
system("pause");
return 0;
} -
blaces
tag
-
blaces
tag
válasz
Jester01 #910 üzenetére
Igen a ciklus gyorsabb, az valóban nem jó neki. A 2 for ciklus megengedett...
#include <stdio.h>
int main(){
int terfog;
int i, j, k;
int teglatestek=0;
/*int rovidebb;*/
scanf("%d", &terfog);
/*rovidebb=terfog/2;*/
for(i=1; i<=terfog/i; i++){
if (!(terfog%i)){
for(j=i; j<=terfog/j; j++){
if (!(terfog%j)){
k=terfog/(i*j);
if(k>=j)
teglatestek++;
}
}
}
}
printf("%d\n", teglatestek);
return 0;
}Na így tudtam rövidíteni (a tegnapi fórumozásból így tudtam kivenni.), de most nem tudom, hogy hol a hiba, a példa esetekből a 254-re 3-t ad, holott 2-öt kéne adnia, a többire annyit ad amennyit illik neki.
-
blaces
tag
válasz
Jester01 #908 üzenetére
konkrétan mondta a gyakvezér, hogy a 3 ciklus valami mást kell..., hogy a program 5 másodpercen belül legyen... (vagy millisecundum...).
Rákérdezek mélben a gyakvezérnél, és még alszok rá egyet, holnap éjfélig van a beadási határidő, hátha eszembe jut valami okosság álomközben.a primtényezős felbontást meglestem. A wikipédián talált kóddal ellenőriztem le, a 99 kivételével mindegyikre annyi prím számot adott le amennyi a példában a kimenten szerepel.
"Ha osztója, akkor gyorsan le is kell osztani és belső ciklusban már csak ezt felbontani."
Ez hogy nézz ki egy példa kódban? if (terfogat%i==0) eddig oké a további részt nem tudom megvalósítani -
blaces
tag
válasz
Jester01 #905 üzenetére
Feladat:
Írj programot, amely a bemenetről beolvas egy természetes számot - egy térfogatot! A program írja a szabványos kimenetre, hogy hány különböző téglatesthez tartozhat ez a térfogat! (A téglatestek oldalhossza csak egész szám lehet!)
Példa:
bemenet- kimenet
27 - 3
4 - 2
99 - 4
254 - 2Nekem erre csak a 3 for ciklusos megoldás jutott eszembe
-
Lortech
addikt
válasz
Jester01 #899 üzenetére
Ez elég tesco gazsdaságos program lett tényleg, egy pár szemetet beleraktam a már meglévők mellé is (/0, nev[0]). De a lényeg részemől valami finesz belevitele volt a logikába, az ebből a szempontból lényegtelen és hibás részeket egy az egyben átvettem, ha megnézed.
-áhá, az ismétlős tényleg így működik. Több mint egy éve nem írtam hagyományos telefonon, el kellett volna olvasni a feladatot.
-const: nekem mindegy, van jelentősége azonkívül, hogy tényleg konstansként van használva és odakívánkozik a const ?
-gets és tsai: másoltam, nem értem, miért tanítják ezeket az elavult és kerülendő dolgokat a diákoknak. pl. [link]
-strlen: másoltam, tényleg ki kéne váltani egy azonnali értékkel.
-printf: szintén.
-toupper: az jogos, egy-két sor megspórolható.
-szám / egyéb nekem úgy tűnik, nem volt feladat. Persze input vizsgálat kéne. -
blaces
tag
válasz
Jester01 #889 üzenetére
kösz, így értem, hogy miért volt rá szükség. A példával eltudom már képzelni a próblémát.
Lortech nekem ez már egy picit magas
habár gondolom hogy valami olyasmit akartál írni, hogy az elsonyer+=1 helyett elsonyer++ használjak. A többi részt nem nagyon értettem a szépítésnek, bocsi.
Meg jobb az ha csak annyit finomítok rajta amennyit értek, mert ha meg kell védeni a progit (van valami plágium ellenörző) akkor eltudjam magyarázni. De szívesen megtanulnám a rövidebb(szebb) formákat is. -
blaces
tag
válasz
Jester01 #885 üzenetére
köszi a segítséget mindkettőtöknek!
scanf(" %c %c",&elso,&masodik); - így tényleg megy.
jelenleg két könyvet olvasok át ez ügyben, de nem találtam ehhez hasonló példát, ahol két karaktert olvass be, vagy hogy miért kell szóköz oda, vagy mit hogyan befolyásolja a /n ezt az egészet.
Szóval nálam a hiba a /n miatt volt, ami az okozta, hogy ha egy sorból kellett olvasnia két karaktert, akkor az első karakter után berakott egy sortörést, és a scanf a második sorból akarta olvasni a második karaktert? és emiatt valamilyen túlcsordulás történt?
-
Davey7
senior tag
válasz
Jester01 #844 üzenetére
Még mindig bajlódok a 4-es feladattal.
Ez a kód jött ki,de nem működik megfelelően:int i,j,k, visszaford, max, index = 0; //az index azt jelenti,hogy hol áll épp az abc-ben
char karakterek = 97;
scanf("%d %d", &visszaford, &max); //itt olvasom be a visszafordulási ill. azt az értéket,hogy meddig írja ki
for (i = 0; i < max; i++) {
for(j=0;j < visszaford;j++) { //ez a rész ír előrefele
printf("%c", karakterek);
karakterek++;
index++;
}
if (index >= visszaford) {
for (k=0; k!=max-visszaford;k++){ //ez pedig visszafele
--karakterek;
printf("%c", karakterek);
}
}
}Itt a program lényeges része,azt tudom,hogy az index-szel van a baj,de nem jövök rá,hogy mi.
-
Dirty_Pio
csendes tag
válasz
Jester01 #839 üzenetére
Koszi. Meg volna egy kerdesem : mivel olvassam be az adatokat, mert a scanf elcseszi nekem eleg rendesen, mivel a buffert szepen betologatja az adatok helyere es nincs igazan semmi 5letem mit hasznaljak helyette, mar azon kivutl johu irok egy fuggvenyt ami szepen beolvassa a getchar() ral a neveket meg a kulonbozo szovegeket. Akkor mukodne ha csak a scanf() -el a szamokat olvasnam be?
-
Dirty_Pio
csendes tag
válasz
Jester01 #799 üzenetére
Hi, erre nem igazan tudom a valaszt, hogy miert nem megy:
#include <stdio.h>
#include <stdlib.h>
void create_and_fill_array2(int * a, int n) {
a=(int *)malloc(sizeof(int)*n);
int i;
for (i=0; i<n; i++)
*(a + i)=i;
}
void print_array(int *tab,int n) {
int i;
for (i=0; i<n; i++)
printf("%d ",tab[i]);
}
int main (void) {
int *b;
create_and_fill_array2(b,5);
print_array(b,5);
return 0;
}ha a figgvenyen kivul hasznalom a malloc() -t akkor nincsen semmi problema.
-
Dirty_Pio
csendes tag
válasz
Jester01 #797 üzenetére
Nos egy utolso hiba maradt amivel nem sikerult megbirkoznom: az mreadben amikor a q[i][j] -nek ertekul akarom adni a readnr fuggvegy erteket akkor kidobja azt az errort, hogy invalid conversion from 'int(*)()' to 'int '. Ez mit jelent es a masik dolog: miert nem fogadta el a ROW/COL helyett a max1/max2 -t ?
-
válasz
Jester01 #764 üzenetére
Hali!
A Fire/SOUL/CD az kb 1992-ben rendszerprogramozó matematika szakon végzett.
400 pontból 398-al, de csak azért, mert valamit nem tudott elolvasni a szaki, még ha a végeredmény stimmelt is. Ezenkívűl a választott diploma munkám címe ez volt:
"Lineáris permutációk a káoszban avagy rendezettség a rendezettlen halmazban"Ebből adódóan, nem hajtok semmilyen babérokra(nincs mire).
Sok esetben csak a kezdő "lökést" kell megadni pár emberkének, még ha ez azzal is jár, hogy megírod helyette a progit....Annyi gondom volt a progival, hogy így nem szabad megírni egy ilyen(file-compare) programot.
(csak sajnos a tanárbá feltételei miatt, csak így lehetett)Fire.
-
cellpeti
nagyúr
válasz
Jester01 #764 üzenetére
Segít ő!
Megírja a progit és akit érdekel,ugyis végignézi,mit miért és hogyan csinált benne,és elkezd rajta gondolkozni. Vagy párszor átnézi,megnézi benne az ötleteket és a folyamatok,majd nyit egy C környezetet és megpróbálja újra megírni!
Sztem elég jó tanulási forma ez is! -
-
#25954560
törölt tag
válasz
Jester01 #252 üzenetére
koszi.
nem a memoriateruleteken akarok optimalizalni, csak rosszul fogalmaztam. a hozzaferesekkel van bajom. valami szemafort muszaj lesz hasznalni, ehhez viszont kell szinkronizacio a szalak kozott. ha tobb szal matathat egyszerre ugyanabban a tablaban, akkor abbol baj lehet.
tovabb bonyolitja a dolgot, hogy mi van a virtualis gepben futo cuccossal? akkor bizony maga a virtual machine kell hasznaljon tobb magot, mert belul en nem kell tudjam mi van alatta. ajjajjaaaaajjj -
#25954560
törölt tag
válasz
Jester01 #249 üzenetére
aha. latom mar, kozben talaltam par jo linket is.
ha kizarolag unix/linux rendszerrol beszelunk, akkor mindig a kernel intezkedik az uj szalak szetosztasarol a magok kozott? (mondjuk terhelestol fuggoen)
ha nem kene hozzanyulni minden egyes uj sokmagos proci megjelenesekor, akkor hogyan lehet erdemben 2, 4 es 8 magra elore megirni? megirom nyolc szalra es akkor ket magon is 2x4 szalon fut majd?
memoriateruletek hozzaferesevel nem kell foglalkozni? vagy lehet azert nemileg optimalizalni?
szerencsere olyan a cuccos h konnyu sok szalra bontani es raadasul csak az altaluk irt adattablak miatt kell figyelni arra h egyszerre csak egy valaki irhat. (nehogy belefussunk szoftveresen a tlb bugba)
-
SKFA
csendes tag
válasz
Jester01 #208 üzenetére
Köszönöm a segítséget utólag, és előre is!
Őszintén szólva annyira nem vágom a programozást hogy így kivitelezzem, tanárnak is valószínűleg eleg lenne egy egyszerűbb megoldás.
Ha jól értem a pontosságnak nem sok köze van a tizedesjegyek számához, sokkal inkább a az x^n/x! elvégzett műveletek számához. -
-
kicsitomi88
őstag
NA jo de 5 es fel perc volt a nullarol. Csak az akartam leirni, hogy milyen elv alapjan adom ossze oket h o is lassa.
A feladatban nem volt szo sem ellenorzesrol sem semmirol.
valoban char c[21];
es azert a -1el szorzas mert nem volt lelki erom a 48-c-at atirni ha igy is mukodott es ket alapmuveletet elvegezni es ascii tablat bongeszni tovabb.
1.
#include <stdlib.h>
#include <stdio.h>main()
{
char c[21]; int i=0; int s=0;gets(c);
while ( c[i] != '\0' )
{
s += (c[i]-48);
i++;
}printf("%d ", s);
fflush(stdin);
getchar();}
Ú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!
- Milyen asztali (teljes vagy fél-) gépet vegyek?
- AMD Ryzen 9 / 7 / 5 9***(X) "Zen 5" (AM5)
- War Thunder - MMO Combat Game
- Android szakmai topik
- Cyberpunk 2077
- Ivqkzy-: 2. gépem
- Bambu Lab 3D nyomtatók
- Motorolaj, hajtóműolaj, hűtőfolyadék, adalékok és szűrők topikja
- Kerékpárosok, bringások ide!
- Bittorrent topik
- További aktív témák...
- GAMER PC : RYZEN 5 4500 / 16GB DDR4 / ASUS RX 480 8GB / WiFi / Bluetooth / 512GB M.2 SSD / 500GB HDD
- Dell Latitude 7390, 13,3" FHD IPS , I5-7300U CPU, 16GB DDR4, 512GB SSD, WIN 11, ( olvasd végig )
- Acer PREDATOR HELIOS NEO 16 / i9-14900HX / RTX 4070 (140W) / 1 TB SSD / 240HZ
- Topping A70 Pro fejhallgató erősítő
- Topping D70 Pro Octo DAC
- ÁRGARANCIA!Épített KomPhone Ryzen 7 5700X 16/32/64GB RAM RTX 3060 12GB GAMER PC termékbeszámítással
- Telefon felvásárlás!! iPhone 16/iPhone 16 Plus/iPhone 16 Pro/iPhone 16 Pro Max
- Bomba ár! Dell Latitude E7240 - i7-4GEN I 16GB I 256SSD I 12,5" HD I HDMI I Cam I W10 I Garancia!
- ÁRGARANCIA!Épített KomPhone i5 10600KF 16/32/64GB RAM RTX 3060 12GB GAMER PC termékbeszámítással
- OnePlus 13 - Black Eclipse - Használt, karcmentes
Állásajánlatok
Cég: CAMERA-PRO Hungary Kft
Város: Budapest
Cég: Promenade Publishing House Kft.
Város: Budapest