- Szaporodik és sokasodik a One UI 8.5
- Samsung Galaxy S24 Ultra - ha működik, ne változtass!
- Honor 600 – kezes, kitartó, költséges
- Huawei Watch Fit 5 Pro - jó forma
- Samsung Galaxy A52s 5G - jó S-tehetség
- Samsung Galaxy S26 Ultra - fontossági sorrend
- Macrodroid
- Fotók, videók mobillal
- Xiaomi 14 - párátlanul jó lehetne
- Yettel topik
-
Fórumok
Mobilarena - mobil fórumok
Okostelefonok Mobiltelefonok Okosórák Autó+mobil Üzlet és Szolgáltatások Mobilalkalmazások Tartozékok, egyebek Mobilarena blogokPROHARDVER! - hardver fórumok
Notebookok TV & Audió Digitális fényképezés Alaplapok, chipsetek, memóriák Processzorok, tuning Hűtés, házak, tápok, modding Videokártyák Monitorok Adattárolás Multimédia, életmód, 3D nyomtatás Tabletek, E-bookok Nyomtatók, szkennerek PC, mini PC, barebone, szerver Beviteli eszközök Egyéb hardverek PROHARDVER! BlogokIT café - infotech fórumok
Infotech Hálózat, szolgáltatók OS, alkalmazások SzoftverfejlesztésGAMEPOD - játék fórumok
PC játékok Konzol játékok MobiljátékokLOGOUT - lépj ki, lépj be!
LOGOUT reakciók Monologoszféra FototrendFÁRADT GŐZ - közösségi tér szinte bármiről
Tudomány, oktatás Sport, életmód, utazás, egészség Kultúra, művészet, média Gazdaság, jog Technika, hobbi, otthon Társadalom, közélet Egyéb Lokál PROHARDVER! interaktív
-
Frissítve: 2014-04-25 14:12 Téma összefoglaló
Új hozzászólás Aktív témák
-
Lortech
addikt
-
D@ni88
addikt
1, int x, i, j = 0;
Ez nem azt jelenti, hogy x = 0 i = 0, j= 0, hanem x és y = meghatározatlan és j =0.
2, amiért nem fordul a programod az az, hogy i és j a cikluson kívül is deklarálva van, meg a ciklus fejében is.
3, minek ide a double? Ha %d-vel akarsz kiiratni, akkor pl int-ként deklaráld illetve fordítva, ha double-t akarsz kiiratni akkor "%f" a szimbólum.
double az itt nem a tizedes jegyet jelöli, hanem azt hogy tömb!
de végülis féligmeddig jó megoldás, csak nem kellenek oda a .00000 azt kéne eltüntetni
és esetleg valaki nem tudja h mivel lehet számot konvertálni karakterré? -
Lortech
addikt
1, int x, i, j = 0;
Ez nem azt jelenti, hogy x = 0 i = 0, j= 0, hanem x és y = meghatározatlan és j =0.
2, amiért nem fordul a programod az az, hogy i és j a cikluson kívül is deklarálva van, meg a ciklus fejében is.
3, minek ide a double? Ha %d-vel akarsz kiiratni, akkor pl int-ként deklaráld illetve fordítva, ha double-t akarsz kiiratni akkor "%f" a szimbólum.
-
D@ni88
addikt
Akkor ez mért nem jó?
#include <stdio.h>
void main()
{
double a[5][5];
int x, i, j = 0;
for(int i = 0; i < 5; i++)
{
for(int j = 0; j < 5; j++)
{
a[i][j] = x++;
}
}
for(i=0; i<5; i++)
{
printf("\n");
for(j=0; j<5; j++)
{
printf("%d", a[i][j]);
}
}
} -
D@ni88
addikt
-
amargo
addikt
hali, most kezdtünk el a suliban C-t tanulni.
az lenne a kérdésem h itt mit rontottam el.
Gépileg kéne feltöltenie sorba, de nem hagyja magát
esetleg, még azt kérdezném, h a karakteres 2d-s tömböt hogy kell létrehozni
vagy csak egyszerűen double-el?#include <stdio.h>
void main()
{
double a[5][5];
int i, j, x, y;
char c;
y=0;
for(i=0; i<5; i++)
{ y=x;
for(j=0; j<5; x=y; j++; x++)
{
a[i][j]=x;
}
}
}Én azt sem értem, hogy mit szeretnél csinálni?
Ez szépen sorba feltölti 0-24ig a tömbötdouble a[5][5];
int x = 0;
for(int i = 0; i < 5; i++)
{
for(int j = 0; j < 5; j++)
{
a[i][j] = x++;
}
} -
D@ni88
addikt
hali, most kezdtünk el a suliban C-t tanulni.
az lenne a kérdésem h itt mit rontottam el.
Gépileg kéne feltöltenie sorba, de nem hagyja magát
esetleg, még azt kérdezném, h a karakteres 2d-s tömböt hogy kell létrehozni
vagy csak egyszerűen double-el?#include <stdio.h>
void main()
{
double a[5][5];
int i, j, x, y;
char c;
y=0;
for(i=0; i<5; i++)
{ y=x;
for(j=0; j<5; x=y; j++; x++)
{
a[i][j]=x;
}
}
} -
Vico87
tag
File / New / Project, a megjelenõ ablakban pedig "Project type"-nak Visual C++, aztán "Templates" közül pedig "Win32 console application", töltsd ki a "name" és "solution name" mezõket, majd a varázslóban katt az "Application settings"-re, és pipáld be az "Empty project"-et, végül finish. Ezután a "Solution explorer"-ben (ha nincs kint alapból, akkor a View menübõl elõcsalogatható) jobb klikk a "Source files"-ra, "Add / New Item". Válaszd ki bal oldalt a "Code" kategóriát, majd a C++ file-t, névnek viszont adj *.c kiterjesztést (ezzel automatikusan C fordítót használ a VS, és nem C++ fordítót). Copy-paste-eld be a kódot a fájlba, majd futtasd (gyorsbill: Ctrl+F5, debuggerhez pedig F5).
-
feherpeter
csendes tag
millió megoldás van, a gugli igenis a barátod
persze a jpg beolvasása önmagában kevés, azt meg is kell jeleníteni, erre szintén sok lehetőséged van, az egyik legegyszerűbb és legjobb az SDL
keresgélj a neten SDL tutorialokat, ezzel a képbetöltés/megjelenítés mellett millió mást is meg tudsz csinálniKösz a választ!
-
doc
nagyúr
Keresgéltem google-n. Majdnem ugyanazt írtam be mint te(open jpg with c source). De ott csak jpg encoder/decoder volt meg open-source. Nézd csak meg ha gondolod.
Tehát azt szeretném hogy megmondom a kép elérési utját és valami változóba eltárolom és azt később megtudom jeleníteni. Most má nem muszály jpg tök mindegy csak valaki segítsen
millió megoldás van, a gugli igenis a barátod
persze a jpg beolvasása önmagában kevés, azt meg is kell jeleníteni, erre szintén sok lehetőséged van, az egyik legegyszerűbb és legjobb az SDL
keresgélj a neten SDL tutorialokat, ezzel a képbetöltés/megjelenítés mellett millió mást is meg tudsz csinálni -
feherpeter
csendes tag
Keresgéltem google-n. Majdnem ugyanazt írtam be mint te(open jpg with c source). De ott csak jpg encoder/decoder volt meg open-source. Nézd csak meg ha gondolod.
Tehát azt szeretném hogy megmondom a kép elérési utját és valami változóba eltárolom és azt később megtudom jeleníteni. Most má nem muszály jpg tök mindegy csak valaki segítsen
-
kicsitomi88
őstag
Hello!
Az lenne a kérdésem hogy megoldható-e C-ben hogy jpg fájlokat töltök be és megjelenítem őket. -
feherpeter
csendes tag
Hello!
Az lenne a kérdésem hogy megoldható-e C-ben hogy jpg fájlokat töltök be és megjelenítem őket. -
Lortech
addikt
C/C++ Projektet kéne neki nyitni kezdésnek, hacsak megnyitod a c fájlt, akkor nem fog futni.
-
odonye
csendes tag
Abban ,hogy kell nem tudom, de van más megoldás is: Dev C++.
-
Pocak89
senior tag
Azt meg tudná nekem mondani vki hogyan lehet hagyományos c programot lefordítani/lefuttatni microfos visual studio 2005-ben? mert a "play" gomb az szürke és nemtom mit csináljak. Inkább abban írnám nem turbó c-ben.

-
-kdM-
senior tag
Például létrehozol egy egyszerű structot két mezővel:
int szam;
char * szo;Aztán implementálsz egy neked szimpatikus dinamikus adatszerkezetet (pl láncolt lista) melynek elemtípusa az előbbi struct és amelyben tudsz keresni a "szo" mezo szerint. Aztán feldolgozod a szavakat, és ha van már egy adott szó a listában, akkor a megfelelő elem szam mezőjéhez hozzáadsz egyet, ha nincs, akkor befűzöl a lista végére egy új elemet. Nyilván itt keményen memóriát kell kezelni, de ez alap.
kicsit primitivebb uton ugyan, de megoldottam...azert ezt is megerne kiprobalni
koszi
-
Lortech
addikt
hello!
lenne egy keresem egy feladattal kapcsolatban...tehat egy txt-bol beolvasok x szot/nevet es a programmal meg kell szamoltatni melyik szobol/nevbol mennyi van
(nem kell forraskod minta eleg egy hasznalhato otlet mivel nekem mar sokadik megoldasom vallott kudarcot :/ es termeszetesen a programnak "csak" a szamlalo reszere kene tipp)Például létrehozol egy egyszerű structot két mezővel:
int szam;
char * szo;Aztán implementálsz egy neked szimpatikus dinamikus adatszerkezetet (pl láncolt lista) melynek elemtípusa az előbbi struct és amelyben tudsz keresni a "szo" mezo szerint. Aztán feldolgozod a szavakat, és ha van már egy adott szó a listában, akkor a megfelelő elem szam mezőjéhez hozzáadsz egyet, ha nincs, akkor befűzöl a lista végére egy új elemet. Nyilván itt keményen memóriát kell kezelni, de ez alap.
-
Retekegér
MODERÁTOR
Uff. Szóval if után nem teszünk ;-t, hacsak nem egy üres utasítást akarsz szimbolizálni.
Itt most az történt, hogy az igaz ágadban lett egy üres utasítás (;). Majd jön egy blokk ( {} )ami mindig lefut az előbbi if-től függetlenül, így persze egyből kilép az exit miatt.
Meg az ilyen exit(-1) is felesleges, egy if () {} else {} megoldás szimpibb.De hozzán legközelebb az áll, hogy ha a két param sikeresen beolvasódott, akkor csinálsz valamit, egyébként meg nem (nincs else ág sem), és végetér a program a main blokk végén.
Pontosvessző véletlenül maradt benne, ráadásul az exit függvényt tartalmazó stdlib.h állományról is megfeledkeztem. Mindegy.
Így már jobb egy kicsit:#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
main()
{
int a,b,c;
do
{
printf("Kerek ket szamot:");
if (scanf("%d,%d",&a,&b)!=2)
{
printf("Hibas adatbevitel!\n");
continue;
}
c=a+b;
printf("A ket szam osszege: %d+%d=%d\n",a,b,c);
}
while (getch()!=32);
} -
-kdM-
senior tag
hello!
lenne egy keresem egy feladattal kapcsolatban...tehat egy txt-bol beolvasok x szot/nevet es a programmal meg kell szamoltatni melyik szobol/nevbol mennyi van
(nem kell forraskod minta eleg egy hasznalhato otlet mivel nekem mar sokadik megoldasom vallott kudarcot :/ es termeszetesen a programnak "csak" a szamlalo reszere kene tipp) -
Lortech
addikt
Uff. Szóval if után nem teszünk ;-t, hacsak nem egy üres utasítást akarsz szimbolizálni.
Itt most az történt, hogy az igaz ágadban lett egy üres utasítás (;). Majd jön egy blokk ( {} )ami mindig lefut az előbbi if-től függetlenül, így persze egyből kilép az exit miatt.
Meg az ilyen exit(-1) is felesleges, egy if () {} else {} megoldás szimpibb.De hozzán legközelebb az áll, hogy ha a két param sikeresen beolvasódott, akkor csinálsz valamit, egyébként meg nem (nincs else ág sem), és végetér a program a main blokk végén.
-
Retekegér
MODERÁTOR
Normális olyan értelemben, hogy vsz. nem bug. Nem normális olyan értelemben, hogy gondolom nem ezt szeretnéd. Esetleg bennemarad a pufferben valami az előző beolvasásokból, ezért egyből lefut a beolvasás. Ha bemásolod a kódot, akkor egyértelművé tehető. A system("PAUSE"); a program végén nem szép megoldás, és kerülendő is valódi alkalmazásoknál, de tesztelni és tanulgatni megteszi az előbbi figyelembevételével.
Egyszerű programnál is ez a helyzet, pl.:
#include <stdio.h>
main()
{
int a,b,c;
printf("Kerek ket szamot:");
if (scanf("%d,%d",&a,&b)!=2);
{
printf("Hibas adatbevitel!");
exit(-1);
}
c=a+b;
printf("A ket szam osszege: %d+%d=%d\n",a,b,c);
} -
Lortech
addikt
Normális olyan értelemben, hogy vsz. nem bug. Nem normális olyan értelemben, hogy gondolom nem ezt szeretnéd. Esetleg bennemarad a pufferben valami az előző beolvasásokból, ezért egyből lefut a beolvasás. Ha bemásolod a kódot, akkor egyértelművé tehető. A system("PAUSE"); a program végén nem szép megoldás, és kerülendő is valódi alkalmazásoknál, de tesztelni és tanulgatni megteszi az előbbi figyelembevételével.
-
Retekegér
MODERÁTOR
Az normális, ha Windows környezetben szempillantás alatt lefut a program és be is zárja az ablakot? Még akkor is, ha egy kamuváltozót akarok beolvastatni a program végén. (Dev-C++-t használok)
-
Vico87
tag
Igazából nem kell megnézni, hogy valamelyik nagyobb-e. Mert ugyanis négyzetre emeled, ami után mindenképp nemnegatív értéket kapsz.
Az újabb C szabványban már van inline függvényekre támogatás. Azzal szerintem a legjobb egy ilyet megoldani.
Valahogy így :inline tavolsag(int x1, int x2, int y1, int y2) {
return sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2) );
}(Bár a Visual Studio 2005 nem eszi meg C esetén az inline függvényt)
Hoppá lemaradt a típus, a mod idő meg lejárt.
A pontos függvénydefiníció :inline double tavolsag(...)
-
Vico87
tag
Hello.
Unalom űzésként találtam ezt a topicot, ide legalább tudok írogatni

Előszöris, sajna csak C# ban tudom elmondani az én megoldásomat, de remélem az is segít:
először is, az oké, hogy kivonod X2 - X1 et, és Y1 ből Y2 őt, de ugye, arra is gondolj, hogy a két pont közül nem tudod, melyik hol, van, tehát először megkell állapítani, hogy melyik a nagyobb, és nagyobból a kisebbet számold ki.
public double GetDistance(PointF p1, PointF p2)
{
double xDistance = Math.Max(p1.X, p2.X) - Math.Min(p1.X, p2.Y);
double yDistance = Math.Max(p1.Y, p2.Y) - Math.Min(p1.Y, p2.Y);return Math.Sqrt(Math.Pow(xDistance, 2) + Math.Pow(yDistance, 2));
}ezt aztán egysorossá is lelehet redukálni, nah meg PointF objektum helyett lehet több double, int, decimal, vagy neked tetsző változót használni. Lehet, hogy nem tökéletes mert notepadba lehet elírtam valamit, de sztem ez jó lesz
Igazából nem kell megnézni, hogy valamelyik nagyobb-e. Mert ugyanis négyzetre emeled, ami után mindenképp nemnegatív értéket kapsz.
Az újabb C szabványban már van inline függvényekre támogatás. Azzal szerintem a legjobb egy ilyet megoldani.
Valahogy így :inline tavolsag(int x1, int x2, int y1, int y2) {
return sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2) );
}(Bár a Visual Studio 2005 nem eszi meg C esetén az inline függvényt)
-
amargo
addikt
-
odonye
csendes tag
Hogyan tudnék gyököt vonni?
-
feherpeter
csendes tag
-
doc
nagyúr
Hello!
main()
{
char ch[3];
ch = "123";
printf ("%s", ch);
}A 4. sorban azt mondja hogy Lvalue required. De hát ott van nem? Vagy mi a baj vele?

a 3 kevés lesz, ha karaktert akarsz beletenni akkor 4 eleműnek kell lennie, mert tárolni kell a stringvégi lezáró 0-t is
a ch="123" helyett meg az strcpy(ch, "123") formát használd, mert így csak a mutatót írod át (ami elvileg működik, de ne szokjunk rá...
) -
feherpeter
csendes tag
Hello!
main()
{
char ch[3];
ch = "123";
printf ("%s", ch);
}A 4. sorban azt mondja hogy Lvalue required. De hát ott van nem? Vagy mi a baj vele?

-
CrusherW
tag
Sziasztok!
Erre a kérdésre tudja valaki a választ?
Írjon makrófüggvényt, ami két síkbeli pont távolságát számítja ki.
Ugye a két pont távolságát úgy számoljuk ki, hogy adott az x1, x2, és y1, y2. Ha x2-ből kivonom az x1-et, megkapom a derékszögű háromszög egyik oldalát, amely ugye az x tengellyel párhuzamos. Ugyanígy y2-ből y1-et ha elveszem, megkapom a derékszögű háromszög másik oldalát, ami meg ugye az y tengellyel párhuzamos. Ha összekötöm a két pontot, akkor megkapom a derékszögű háromszög átfogóját. na már most ha ismerek két oldalt, és a háromszög derékszögű, akkor alkalmazhatom a Pitagorasz-tételt.
Na ezt kéne valahogy felírni egy makrófüggvénnyel.
Én valami ilyesmit írtam vizsgán:#define C = sqrt(a*a+b*b, 1/2);
Hello.
Unalom űzésként találtam ezt a topicot, ide legalább tudok írogatni

Előszöris, sajna csak C# ban tudom elmondani az én megoldásomat, de remélem az is segít:
először is, az oké, hogy kivonod X2 - X1 et, és Y1 ből Y2 őt, de ugye, arra is gondolj, hogy a két pont közül nem tudod, melyik hol, van, tehát először megkell állapítani, hogy melyik a nagyobb, és nagyobból a kisebbet számold ki.
public double GetDistance(PointF p1, PointF p2)
{
double xDistance = Math.Max(p1.X, p2.X) - Math.Min(p1.X, p2.Y);
double yDistance = Math.Max(p1.Y, p2.Y) - Math.Min(p1.Y, p2.Y);return Math.Sqrt(Math.Pow(xDistance, 2) + Math.Pow(yDistance, 2));
}ezt aztán egysorossá is lelehet redukálni, nah meg PointF objektum helyett lehet több double, int, decimal, vagy neked tetsző változót használni. Lehet, hogy nem tökéletes mert notepadba lehet elírtam valamit, de sztem ez jó lesz
-
odonye
csendes tag
Köszönöm, pontos vessző, pedig csak gépelési hiba.
-
doc
nagyúr
Sajnos egy nagyon hülye kérdésem lenne. Mivel mostnában egy jóideig nem programozgattam, és előtte is írtózatossan kezdő voltam, msot felmerült egy problémám. Függvények, amik(ha jól emlékszem) előtte működtek, most nem.
PL:
int main()
{
int a
printf("%d",valami(a));
}
valami(b);
int valami(b);
{
int c;
c=5;
return (c);
}ezek előtte sem működtek

int main()
{
int a
printf("%d",valami(a));
}ez eddig OK, csak az "int a" végére kell egy pontosvessző
valami(b);
ez viszont a levegőben lóg, a main-en kívül van, így nem jó
int valami(b);
{
int c;
c=5;
return (c);
}ez meg majdnem jó (ha azt akarod hogy 5-öt adjon vissza), csak a fejléc nem, helyesen:
int valami(int b)
{
... -
odonye
csendes tag
Sajnos egy nagyon hülye kérdésem lenne. Mivel mostnában egy jóideig nem programozgattam, és előtte is írtózatossan kezdő voltam, msot felmerült egy problémám. Függvények, amik(ha jól emlékszem) előtte működtek, most nem.
PL:
int main()
{
int a
printf("%d",valami(a));
}
valami(b);
int valami(b);
{
int c;
c=5;
return (c);
} -
doc
nagyúr
Sziasztok!
Erre a kérdésre tudja valaki a választ?
Írjon makrófüggvényt, ami két síkbeli pont távolságát számítja ki.
Ugye a két pont távolságát úgy számoljuk ki, hogy adott az x1, x2, és y1, y2. Ha x2-ből kivonom az x1-et, megkapom a derékszögű háromszög egyik oldalát, amely ugye az x tengellyel párhuzamos. Ugyanígy y2-ből y1-et ha elveszem, megkapom a derékszögű háromszög másik oldalát, ami meg ugye az y tengellyel párhuzamos. Ha összekötöm a két pontot, akkor megkapom a derékszögű háromszög átfogóját. na már most ha ismerek két oldalt, és a háromszög derékszögű, akkor alkalmazhatom a Pitagorasz-tételt.
Na ezt kéne valahogy felírni egy makrófüggvénnyel.
Én valami ilyesmit írtam vizsgán:#define C = sqrt(a*a+b*b, 1/2);
inkabb:
#define TAVOLSAG(x1,y1,x2,y2) sqrt(((x1)-(x2))*((x1)-(x2))+((y1)-(y2))*((y1)-(y2)))
fejbol irtam, szoval nem biztos hogy jo
a sok zarojel (minden parameter kore) azért kell, hogy na nem egyetlen szammal, hanem vmilyen kifejezessel hivod meg, ne kavarodjon ossze, mivel ez csak sima szoveghelyettesites
-
plaschil
aktív tag
Sziasztok!
Erre a kérdésre tudja valaki a választ?
Írjon makrófüggvényt, ami két síkbeli pont távolságát számítja ki.
Ugye a két pont távolságát úgy számoljuk ki, hogy adott az x1, x2, és y1, y2. Ha x2-ből kivonom az x1-et, megkapom a derékszögű háromszög egyik oldalát, amely ugye az x tengellyel párhuzamos. Ugyanígy y2-ből y1-et ha elveszem, megkapom a derékszögű háromszög másik oldalát, ami meg ugye az y tengellyel párhuzamos. Ha összekötöm a két pontot, akkor megkapom a derékszögű háromszög átfogóját. na már most ha ismerek két oldalt, és a háromszög derékszögű, akkor alkalmazhatom a Pitagorasz-tételt.
Na ezt kéne valahogy felírni egy makrófüggvénnyel.
Én valami ilyesmit írtam vizsgán:#define C = sqrt(a*a+b*b, 1/2);
-
supesz
aktív tag
Nagyon jó. -
supesz
aktív tag
Most töltöm.

Megnézem milyen. Előtte leszedtem a MiracleC Compilert, de nem tudom mi nem jó neki. A könyvből másolom be neki a példát, de nem fordítja le. Ráadásul nem engedi beírni a könyvtári fügyvény hívására vonatkozó sort sem. Mi lehet vele?! Nem tudom.
Remélem ez a Dev jobban muzsikál majd
-
Lortech
addikt
Igen, van sima c projekt template-je is. Legegyszerűbb a devcpp.
-
supesz
aktív tag
Hello,
Tud vki ajánlani vmi windowsos c compilert?
Az 1hsz-be volt ez a devc++ vagy mi. Az fordítja a sima c nyelvet is? Igazából vmi windows alatt futó cucc kellene, mert az a régi kék képernyő nem olyan szimpi.
Tud vki valamit esetleg ajánlani? -
PazsitZ
addikt
-
JoJ
csendes tag
Na végre megvan!

megjegyzés.: a while olvassa a stringet és közben vizsgálja, hogy 0 e, így ha a string végére ér (ami 0), akkor kilép a ciklusból
-
JoJ
csendes tag
Még annyit kérdeznék (ha jól emlékszem azt is kérdezte), hogy az s és a t milyen állomány?
Gondolom szöveges... -
JoJ
csendes tag
Nagyon-nagyon szépen köszönöm!

-
#25954560
törölt tag
1. Igen, alapvetően jobb az operációs rendszerre hagyni a magok kezelését, de bele lehet szólni.
2. Ha nem tudsz dinamikusan szétosztani tetszőleges szálra, akkor írd meg 8ra, igen.
3. Nem értem mit akarsz a memóriaterülteteken optimalizálni. Lehet, hogy csak nem ismerem ezt a technikát.
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
-
Jester01
veterán
Na ide is leírom, hátha többen olvassák: (boccs a noob kérdésekért...)
strcpy függvénystrcpy (s, t)
char *s, *t;
{
while (*s++ = *t++)
;
}Mi az s és a t?
Mi a *s, *t?
Mi a *s++ és a *t++, és mit csinál?
Hogyan "tudja" a while, hogy mikor van vége a szövegnek?
(az nem kielégítő válasz, hogy megkeresi a 0-át a string végén!)- s és t a cél illetve a forrás paraméter
- *s és *t az aktuális karakter
- a *s++/*t++ eltárolja/visszaadja az aktuális karaktert majd növeli a pointert, hogy a következő kartakterre mutasson
- pedig a while bizony onnan tudja, hogy vége a szövegnek, hogy összetalálkozik a lezáró 0-val. Máshonnan nem is tudhatja
-
doc
nagyúr
Na ide is leírom, hátha többen olvassák: (boccs a noob kérdésekért...)
strcpy függvénystrcpy (s, t)
char *s, *t;
{
while (*s++ = *t++)
;
}Mi az s és a t?
Mi a *s, *t?
Mi a *s++ és a *t++, és mit csinál?
Hogyan "tudja" a while, hogy mikor van vége a szövegnek?
(az nem kielégítő válasz, hogy megkeresi a 0-át a string végén!)akkor a másik totyikba már nem válaszolok

szóval:s az a cím (ha úgy tetszik, string) ahova a t címen tárold string bemásolódik
char *s annyit jelent, hogy az s változó egy karakterre mutató mutató lesz
*s++ ez annyit művel, hogy megadja azt az értéket, amire az s változó mutat, majd az s értékét növeli, így az a következő karakterre fog mutatni
a while onnan tudja hogy vége a szövegnek, hogy a t változó, ami minden ciklusban a következő karakterre mutat, 0-ra fog mutatni, ami meg ugye string vége
így az s által mutatott helyre 0 kerül, ezt a visszatérési értéket a while is látja, és mivel 0, amit ő "hamis"-ként értelmez, végezremélem vmennyire érthető volt...
-
Jester01
veterán
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
)1. Igen, alapvetően jobb az operációs rendszerre hagyni a magok kezelését, de bele lehet szólni.
2. Ha nem tudsz dinamikusan szétosztani tetszőleges szálra, akkor írd meg 8ra, igen.
3. Nem értem mit akarsz a memóriaterülteteken optimalizálni. Lehet, hogy csak nem ismerem ezt a technikát.
-
JoJ
csendes tag
Na ide is leírom, hátha többen olvassák: (boccs a noob kérdésekért...)
strcpy függvénystrcpy (s, t)
char *s, *t;
{
while (*s++ = *t++)
;
}Mi az s és a t?
Mi a *s, *t?
Mi a *s++ és a *t++, és mit csinál?
Hogyan "tudja" a while, hogy mikor van vége a szövegnek?
(az nem kielégítő válasz, hogy megkeresi a 0-át a string végén!) -
#25954560
törölt tag
Több magot akkor fog kihasználni, ha több szálon fut. Ahhoz meg az kell, hogy a feladatot lebontsd párhuzamosan végezhető műveletekre, lehetőleg hasonló számításigénnyel. Mindezt ideális esetben tetszőleges számú szálra, például az adatmennyiség n részre osztásával. Általában ehhez szükséges valami extra művelet, ami a részműveletek eredményéből összerakja a végeredményt. Például ha az a feladat, hogy készíts fényességdiagramot egy fényképről, akkor a képet feloszthatod annyi részre ahány mag van és a részekre párhuzamosan végrehajtod a számlálást. Végül pedig összeadod a részeredményeket. Persze ha lehetséges, akkor menet közben is egyből aggregálhatsz, csak akkor figyelni kell a szinkronizálásra. (Amire persze amúgy is figyelni kell). Ha eleve több feladat van (mint például egy web szerver esetén) akkor tipikusan a thread pool architektúrát szokták alkalmazni, amikoris az n (vagy n-1) végrehajtó szál párhuzamosan, de önállóan dolgozza fel a kéréseket. A feladatokat funkcionálisan is szét lehet bontani, csak ekkor nagyobb probléma az egyenlő elosztás illetve a tetszőleges skálázódás. Pl. egy játék esetén lehet dedikált futási szála a rajzolásnak, a hangkezelésnek, a hálózatkezelésnek -- csak ezek ugye közel sem azonos processzorigényűek.
64 bites architektúra általában nem igényel speciális kódot, de persze ki lehet használni az előnyeit a nagyobb címtartománynak. Például ha van sok adatot tartalmazó fájlod amit eddig seek/read módon használtál véletlen elérésre, azt most nyugodtan bemappolhatod (jajj) a memóriába és így majd az operációs rendszer a hardver segítségével meggyorsíthatja a működést.
Ugyanakkor át kell nézni a jelenlegi programot, nem végez-e trükköket (tipikusan pointer -> int -> pointer konverziót) ami nem működik 64 biten.Az x86-64 továbbá nem csak azt jelenti, hogy 64 bites a címtartomány, hanem több regiszter is van. Ezzel viszont c++ esetén elég a fordítónak foglalkozni.
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
) -
Jester01
veterán
Uraim!
ha van egy eleg osszetett C/C++ progi es at kell tenni tobbmagos/64bites kornyezete, akkor nagyon-nagyon-nagy vonalakban mit kell nezni, mi lesz a feladat?
teljesitmeny-noveles a cel, minimum a tobbmagos procit ki kene hasznalni (nem csak ketto, akkor mar menjen n+1 magon is, mindjart jonnek a nehalem-ek
)
tudom h tulsagosan altalanos a kerdes, de majd ha egyre tobb mindent ertek, akkor lesz konkretabb is
koszi,
&rewTöbb magot akkor fog kihasználni, ha több szálon fut. Ahhoz meg az kell, hogy a feladatot lebontsd párhuzamosan végezhető műveletekre, lehetőleg hasonló számításigénnyel. Mindezt ideális esetben tetszőleges számú szálra, például az adatmennyiség n részre osztásával. Általában ehhez szükséges valami extra művelet, ami a részműveletek eredményéből összerakja a végeredményt. Például ha az a feladat, hogy készíts fényességdiagramot egy fényképről, akkor a képet feloszthatod annyi részre ahány mag van és a részekre párhuzamosan végrehajtod a számlálást. Végül pedig összeadod a részeredményeket. Persze ha lehetséges, akkor menet közben is egyből aggregálhatsz, csak akkor figyelni kell a szinkronizálásra. (Amire persze amúgy is figyelni kell). Ha eleve több feladat van (mint például egy web szerver esetén) akkor tipikusan a thread pool architektúrát szokták alkalmazni, amikoris az n (vagy n-1) végrehajtó szál párhuzamosan, de önállóan dolgozza fel a kéréseket. A feladatokat funkcionálisan is szét lehet bontani, csak ekkor nagyobb probléma az egyenlő elosztás illetve a tetszőleges skálázódás. Pl. egy játék esetén lehet dedikált futási szála a rajzolásnak, a hangkezelésnek, a hálózatkezelésnek -- csak ezek ugye közel sem azonos processzorigényűek.
64 bites architektúra általában nem igényel speciális kódot, de persze ki lehet használni az előnyeit a nagyobb címtartománynak. Például ha van sok adatot tartalmazó fájlod amit eddig seek/read módon használtál véletlen elérésre, azt most nyugodtan bemappolhatod (jajj) a memóriába és így majd az operációs rendszer a hardver segítségével meggyorsíthatja a működést.
Ugyanakkor át kell nézni a jelenlegi programot, nem végez-e trükköket (tipikusan pointer -> int -> pointer konverziót) ami nem működik 64 biten.Az x86-64 továbbá nem csak azt jelenti, hogy 64 bites a címtartomány, hanem több regiszter is van. Ezzel viszont c++ esetén elég a fordítónak foglalkozni.
-
#25954560
törölt tag
Uraim!
ha van egy eleg osszetett C/C++ progi es at kell tenni tobbmagos/64bites kornyezete, akkor nagyon-nagyon-nagy vonalakban mit kell nezni, mi lesz a feladat?
teljesitmeny-noveles a cel, minimum a tobbmagos procit ki kene hasznalni (nem csak ketto, akkor mar menjen n+1 magon is, mindjart jonnek a nehalem-ek
)
tudom h tulsagosan altalanos a kerdes, de majd ha egyre tobb mindent ertek, akkor lesz konkretabb is
koszi,
&rew -
plaschil
aktív tag
Sziasztok!
Van egy-két vizsgakérdés ami annyira összetett, hogy nem tudok rá pontosan válaszolni.
Segítenétek nekem?
A kérdések:
1. Adatfolyam, fájlkezelés; szabványos adatfolyamok, bufferelés
2. C preprocesszor direktívák, makrószimbólumok és makróeljárások -
Lortech
addikt
1, a = 0 , b = 1
2, a = 1, b = 0, mivel az a csak a b= a után inkrementálódik, postfix operátor.
3, a = 2, b = 1, mivel b az értékadás előtt inkrementálódik (prefix operátor), és ez adódik a-hoz.
4, a = 3, b = 2 -
lszabi83
csendes tag
Hello!
Vki segítsen plíííz! Nem nagyon megy a prog, gondolom nem nehéz ez a feladat! De nem jövök rá magamtól! Részletesen el tudjátok mondani a megoldáast??
int a=0, b=1; b=a++; a+=++b; a+=b++; Mennyi a és b értéke?
Sok ilyen hasonló feladatot kaptam, de nem értem! THX!! -
odonye
csendes tag
Köszönöm.
-
doc
nagyúr
a struct-ot zárd le pontosvesszővel, tehát így:
struct valami
{
int a;
float b;
} ;vagy ha akarsz változót ilyen típussal, akkor:
struct valami
{
int a;
float b;
} valtozo;ttower: azert az nem igy megy, a mysql.h önmagában kevés, abban csak a deklarációk vannak, fel kell tenned a mysql-t a megfelelő dev fileokkal (lib, header, stb)
-
ttower
aktív tag
hello mindenki
c és mysqlben kellene egy kis segítség. interneten találtam egy rakat leírást hogy hogy kéne a mysql-t használni c programokból, de sehol sem találom a mysql.h fájlt. megvan ez esetleg valakinek vagy van valami gyűjtőoldal ahonnan le lehetne szedni?
-
odonye
csendes tag
struct valami
{
int a;
float b;
}
scanf("%d",&a)
Hát valami ilyesmi. Igazából az én gondom az, hogy sehol semmi programozást nem tanultam illetve tanulok, és az info tanárom is csak pascal-ban tud egy keveset.:S -
doc
nagyúr
-
odonye
csendes tag
Kérdés. A struct-omban int-re char-ra es float-ra miert irja hogy undeclared?(minden tipusra ezt kapom).
-
feherpeter
csendes tag
Nem a gépeddel van a "baj", hanem a rutinnal. Mai ( és "tegnap előtti" ) gépeken nem fog megfelelően futni, mert túl gyorsak.
De ott van leírva jól a probléma, és lehetséges alacsonyszintű megoldási módok is. Jobban, jobbat én se tudok írni.
Hardver / operációs rendszer / fordítófüggetlen, jó megoldás nem nagyon van erre az egyszerűnek tűnő problémára.Turbo C + DOS-ról van szó egyáltalán? A legemészthetőbb megközelítés talán az, hogy egy ciklusban lekéred az aktuális időt addig, amíg a kiinduláshoz képest megfelelő idő eltelt. Ez azért nem jó megoldás, mert hiába nem csinál semmi hasznosat a program, a várakozás közben folyamatosan terheli a gépet.
Igen TURBO C. Kösz mindent.

-
Lortech
addikt
Köcce.
Ezek szerint a gépemmel van a baj? Ha máshol fordítom akkor jó lesz? Vagy van más módja is a miliszekundumos késleltésnek?Nem a gépeddel van a "baj", hanem a rutinnal. Mai ( és "tegnap előtti" ) gépeken nem fog megfelelően futni, mert túl gyorsak.
De ott van leírva jól a probléma, és lehetséges alacsonyszintű megoldási módok is. Jobban, jobbat én se tudok írni.
Hardver / operációs rendszer / fordítófüggetlen, jó megoldás nem nagyon van erre az egyszerűnek tűnő problémára.Turbo C + DOS-ról van szó egyáltalán? A legemészthetőbb megközelítés talán az, hogy egy ciklusban lekéred az aktuális időt addig, amíg a kiinduláshoz képest megfelelő idő eltelt. Ez azért nem jó megoldás, mert hiába nem csinál semmi hasznosat a program, a várakozás közben folyamatosan terheli a gépet.
-
feherpeter
csendes tag
traits of turbo c
8. oldal: 15.12.2 delay( ) pont.Köcce.
Ezek szerint a gépemmel van a baj? Ha máshol fordítom akkor jó lesz? Vagy van más módja is a miliszekundumos késleltésnek? -
Lortech
addikt
Könyörgök valaki segítsen!
#include <dos.h>
void main()
{
delay(5000);
printf("Letelt az 5 másodperc.");
getch();
}Itt 5 öt mp múlva kéne kiírna a szöveget. De rögtön megjelenik.

traits of turbo c
8. oldal: 15.12.2 delay( ) pont. -
feherpeter
csendes tag
Könyörgök valaki segítsen!
#include <dos.h>
void main()
{
delay(5000);
printf("Letelt az 5 másodperc.");
getch();
}Itt 5 öt mp múlva kéne kiírna a szöveget. De rögtön megjelenik.

-
odonye
csendes tag
Köszönönöm!

-
Lortech
addikt
-
odonye
csendes tag
De, úgy olvastam be. Hogyan kéne?
-
Lortech
addikt
Egész véletlenül nem így olvastad be a stringet?
scanf("%s",string);Mert ez nem a sorvége jelig fogja tárolni az értéket stringben, hanem az első white space-ig.
-
odonye
csendes tag
épp törölni akartam a hozzászólást mert rájöttem! De köszönöm szépen! Viszont ez valamiert nem menti a szokozt es ami utanna van.:S
-
a_nagy_pok
csendes tag
Hali!
char * string; /* a bekért karaktersor */
/* ..... */
FILE * f = fopen("fajl_neve", "w");
fprintf(f, "%s", string);
fclose(f);Részletesebben lásd itt:
http://www.cppreference.com/stdio/ -
feherpeter
csendes tag
Hello!
Van a delay() függvény. Az a bajom vele hogy nincs késleltetés hanem simán kihagyja. Nincs hibaüzi. Az elejére odaírtam "#include <dos.h>"-t. Mit csiáljak hogy működjön? -
odonye
csendes tag
Hello mindeki! Azt szeretném kérdezni, hgoy hogyan tudnám azt megcsinálni, hogy a bekért karaktersort egy másik szöveges fájl-ban tárolom?
-
CPT.Pirk
Jómunkásember
Aha, okés. Ennek a működése világos, tanár ezt is tanította, meg ezt várta el, de ha nem adja meg, hogy honnan szedjen be a progi email címet, akkor elvileg szabad kezem lenne a döntésben... Viszont a scanf utálat okára még nem jöttem rá.
-
shev7
veterán
Ja bocs
ok akkor békénhagylaknem ertem a felhaborodasodat... adtam linket, vagy nem?
-
feherpeter
csendes tag
Ja bocs
ok akkor békénhagylak -
shev7
veterán
Kösz shev7! Már csak azt kéne tudnom hogy mi az a függvény.
google-t ismered?

-
feherpeter
csendes tag
Kösz shev7! Már csak azt kéne tudnom hogy mi az a függvény.
-
shev7
veterán
Sziasztok!
Úgy fújta a szél, hogy most c++,java,pascal,assembly és qbasic után sima C-t kell tanúlni fősulin. A dolog megyeget, meg is írtam egy email cím ellenőrző progit, de azzal kapcsolatban lenne kérdésem.
ugyan nem volt kikötve, honnan kell vennie a proginak az emailcímet, én scanfel kértem be egy char tömbbe, aztán hosszellenőrzés, majd vizsgáló ciklusok, stb...
Viszont a tanár úr kiakadt, mondván a scanf olyan, mintha a viszkető szemünket a seggünkön keresztűl akarnánk megvakarni. (igyekeztem pontossan idézni) Valami hasonló dolgot mondott a getchar()-ra is, ott a pascalosokra utalva, de azt nem használtam. Szóval valami átadásos dolgot kell majd megoldanom, hogy pl. program.exe asdfg@fgg.hu -ból kiszedje az emailcímet magának. ilyen argv meg nemtudom dolgok kellenének nekem oda main fgv-be...
probald ki mit csinal ez, es erteni fogod

#include <stdio.h>
int main( int argc, const char* argv[] )
{
// Prints each argument on the command line.
for( int i = 0; i < argc; i++ )
{
printf( "arg %d: %s\n", i, argv[i] );
}
} -
CPT.Pirk
Jómunkásember
Sziasztok!
Úgy fújta a szél, hogy most c++,java,pascal,assembly és qbasic után sima C-t kell tanúlni fősulin. A dolog megyeget, meg is írtam egy email cím ellenőrző progit, de azzal kapcsolatban lenne kérdésem.
ugyan nem volt kikötve, honnan kell vennie a proginak az emailcímet, én scanfel kértem be egy char tömbbe, aztán hosszellenőrzés, majd vizsgáló ciklusok, stb...
Viszont a tanár úr kiakadt, mondván a scanf olyan, mintha a viszkető szemünket a seggünkön keresztűl akarnánk megvakarni. (igyekeztem pontossan idézni) Valami hasonló dolgot mondott a getchar()-ra is, ott a pascalosokra utalva, de azt nem használtam. Szóval valami átadásos dolgot kell majd megoldanom, hogy pl. program.exe asdfg@fgg.hu -ból kiszedje az emailcímet magának. ilyen argv meg nemtudom dolgok kellenének nekem oda main fgv-be...
-
shev7
veterán
char string[3];
...
string[0] = getmaxx();
outtextxy(getmaxx() / 2, getmaxy() / 2, string);Ha ezt rakom be akkor is fura karaktereket kapok

outtextxy(getmaxx() / 2, getmaxy() / 2, 640);
itt is fura karakterek

outtextxy(getmaxx() / 2, getmaxy() / 2, "640");
ennél rendesen kiírja hogy 640
Lécci segítsetek!
at kell konvertalnod az int-et char*-ba. Mivel ez relative gyakori muvelet van ra konyvtari fv. itoa a baratod.
-
feherpeter
csendes tag
char string[3];
...
string[0] = getmaxx();
outtextxy(getmaxx() / 2, getmaxy() / 2, string);Ha ezt rakom be akkor is fura karaktereket kapok

outtextxy(getmaxx() / 2, getmaxy() / 2, 640);
itt is fura karakterek

outtextxy(getmaxx() / 2, getmaxy() / 2, "640");
ennél rendesen kiírja hogy 640
Lécci segítsetek!
-
feherpeter
csendes tag
Igen mondta
. Az a baj hogy fura karaktereket ír ki nem számokat(vagy semmit). Tudom hogy szöveg kell neki csak nem tudom hogy csináljak szöveget számból. Ezt magyarázza el valaki -
Jester01
veterán
Hello!
Itt van egy egyszerű kis program. Azt kéne csinálnia, hogy középre kiírja, hogy a képernyő milyen széles. De valami fura karaktereket kapok
#include <graphics.h>
#include <conio.h>
#include <stdlib.h>
void main()
{
int x, Gd, Gm, Hibakod;
Gd = DETECT;
initgraph(&Gd, &Gm, "");
Hibakod = graphresult();
if (Hibakod)
{
clrscr();
cprintf("Grafikus hiba: %s", grapherrormsg(Hibakod));
getch();
exit(1);
}
rectangle(0, 0, getmaxx(), getmaxy());
settextjustify(CENTER_TEXT, CENTER_TEXT);
settextstyle(DEFAULT_FONT, HORIZ_DIR, 3);
x = getmaxx();
outtextxy(getmaxx() / 2, getmaxy() / 2, x);
getch();
closegraph();
}Hát mert gondolom a szerencsétlen outtextxy szöveget vár, te meg egy számot adsz be neki. Ezt egyébként a fordító valószínűleg meg is mondta neked.
-
feherpeter
csendes tag
Hello!
Itt van egy egyszerű kis program. Azt kéne csinálnia, hogy középre kiírja, hogy a képernyő milyen széles. De valami fura karaktereket kapok
#include <graphics.h>
#include <conio.h>
#include <stdlib.h>
void main()
{
int x, Gd, Gm, Hibakod;
Gd = DETECT;
initgraph(&Gd, &Gm, "");
Hibakod = graphresult();
if (Hibakod)
{
clrscr();
cprintf("Grafikus hiba: %s", grapherrormsg(Hibakod));
getch();
exit(1);
}
rectangle(0, 0, getmaxx(), getmaxy());
settextjustify(CENTER_TEXT, CENTER_TEXT);
settextstyle(DEFAULT_FONT, HORIZ_DIR, 3);
x = getmaxx();
outtextxy(getmaxx() / 2, getmaxy() / 2, x);
getch();
closegraph();
} -
SKFA
csendes tag
--- t.c.orig 2007-12-14 18:46:12.000000000 +0100
+++ t.c 2007-12-14 18:49:52.000000000 +0100
@@ -7,7 +7,7 @@
}
-int eszam(){
+double eszam(){
int h, p=0, i=0;
double e=2.0;
@@ -17,13 +17,13 @@
printf("Csak pozitiv egesz szam fogadhato el!");
else
for (i=2; i<p; i++) {
- e+=1/faktorialis(p);
+ e+=1./faktorialis(i);
}
return e;
}
int main(){
- printf("\nVegeredmeny:%e",eszam());
+ printf("Vegeredmeny:%g\n",eszam());
return 0;
}Fő probléma 2 volt: az egész és a lebegőpontos számítások helytelen használata, illetve a faktoriális hívásban nem a ciklusváltozót adtad át.
Örök hálám a segítségért, működik!
Gyorsan be is adtam. -
Jester01
veterán
Üdv ismét!
Nagyjából sikerült megérteni a feladatot, a következőképpen hangzana:Ez a feladat szövege: Az e kiszámolása (ex=1+x+x2/2!+x3/3!+...) adott pontossággal (input). Az exp() nem használható .
Input: pontosság (>10E-15)
Output: Az e a kért pontossággal.Ha jól értelmezem, akkor
ha input=7, akkor ezt a műveletsort hajtaná végre:
e=2+(1/2!)+(1/3!)+(1/4!)+(1/5!)+(1/6!)+(1/7!), és kiírná e-t.
Ha input=3, akkor ezt:
e=2+(1/2!)+(1/3!), és kiírná e-t.#include <stdio.h>
#include <math.h>
int faktorialis(int n){
if(n==1) return 1;
return (n * faktorialis(n-1));
}
int eszam(){
int h, p=0, i=0;
double e=2.0;
printf("Adja a meg a kivant pontossagot!\n");
scanf("%d", &p);
if (p<0)
printf("Csak pozitiv egesz szam fogadhato el!");
else
for (i=2; i<p; i++) {
e+=1/faktorialis(p);
}
return e;
}
int main(){
printf("\nVegeredmeny:%e",eszam());
return 0;
}Idáig jutottam, már abszolút nincs ötletem hogyan tovább. Így a program nem működik, 1.6-ot ad eredményül, többek között ezt sem tudom miért. Estére viszont be kellene adnom, különben csúszok egy évet.
Valaki tud, segítsen. Előre is köszönöm!--- t.c.orig 2007-12-14 18:46:12.000000000 +0100
+++ t.c 2007-12-14 18:49:52.000000000 +0100
@@ -7,7 +7,7 @@
}
-int eszam(){
+double eszam(){
int h, p=0, i=0;
double e=2.0;
@@ -17,13 +17,13 @@
printf("Csak pozitiv egesz szam fogadhato el!");
else
for (i=2; i<p; i++) {
- e+=1/faktorialis(p);
+ e+=1./faktorialis(i);
}
return e;
}
int main(){
- printf("\nVegeredmeny:%e",eszam());
+ printf("Vegeredmeny:%g\n",eszam());
return 0;
}Fő probléma 2 volt: az egész és a lebegőpontos számítások helytelen használata, illetve a faktoriális hívásban nem a ciklusváltozót adtad át.
-
SKFA
csendes tag
Üdv ismét!
Nagyjából sikerült megérteni a feladatot, a következőképpen hangzana:Ez a feladat szövege: Az e kiszámolása (ex=1+x+x2/2!+x3/3!+...) adott pontossággal (input). Az exp() nem használható .
Input: pontosság (>10E-15)
Output: Az e a kért pontossággal.Ha jól értelmezem, akkor
ha input=7, akkor ezt a műveletsort hajtaná végre:
e=2+(1/2!)+(1/3!)+(1/4!)+(1/5!)+(1/6!)+(1/7!), és kiírná e-t.
Ha input=3, akkor ezt:
e=2+(1/2!)+(1/3!), és kiírná e-t.#include <stdio.h>
#include <math.h>
int faktorialis(int n){
if(n==1) return 1;
return (n * faktorialis(n-1));
}
int eszam(){
int h, p=0, i=0;
double e=2.0;
printf("Adja a meg a kivant pontossagot!\n");
scanf("%d", &p);
if (p<0)
printf("Csak pozitiv egesz szam fogadhato el!");
else
for (i=2; i<p; i++) {
e+=1/faktorialis(p);
}
return e;
}
int main(){
printf("\nVegeredmeny:%e",eszam());
return 0;
}Idáig jutottam, már abszolút nincs ötletem hogyan tovább. Így a program nem működik, 1.6-ot ad eredményül, többek között ezt sem tudom miért. Estére viszont be kellene adnom, különben csúszok egy évet.
Valaki tud, segítsen. Előre is köszönöm! -
SKFA
csendes tag
Jajj, az f ráadásul egy int.

Én a következő módon csinálnám. Mivel az stdin is egy fájl, ezért készítenék egy függvényt ami bemenetként FILE* argumentumokat vár. Ezt ezután simán lehet hívni "igazi" fájlokkal illetve az stdin-el is.
Az "abcdef" stílusú változókról pedig addig szokj le amíg nem késő

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.
-
plaschil
aktív tag
Jajj, az f ráadásul egy int.

Én a következő módon csinálnám. Mivel az stdin is egy fájl, ezért készítenék egy függvényt ami bemenetként FILE* argumentumokat vár. Ezt ezután simán lehet hívni "igazi" fájlokkal illetve az stdin-el is.
Az "abcdef" stílusú változókról pedig addig szokj le amíg nem késő

Láttam én is azóta már string.

-
Jester01
veterán
Ő lenne az. A case1 lefut, a case2 nem. De miért nem? Segítsetek ha tudtok!
#include <stdio.h>
int fajlvizsgal( int argc, char *argv[] )
{
FILE *f1;if ( argc != 3 )
{
printf( "Hibas parameterezes!" );
printf( "\nHasznalat: programnev blabla.txt blabla.txt\n" );
return( -1 );
}if ( ( f1 = fopen( argv[1],"rt" ) ) == NULL )
{
printf( "\nHiba az elso argumentumban megadott fajl megnyitasaban!\n" );
return( -1 );
}fclose( f1 );
main( argv );}
int main (char *argv[])
{
int a, b, c, d, e, f;
FILE *f1;
FILE *f2;printf("Valasszon opciot: A konyvek.txt es az autok.txt fajlok osszehasonlitasa (1-es es enter)\n"
" A haha.txt fajl es begepelt szoveg osszehasonlitasa (2-es es enter)\n");
scanf("%d",&e);switch(e)
{
case 1:
f1=fopen("konyvek.txt","r");
f2=fopen("autok.txt","r");
b=1000;
for(a=0;a<b;a++){
c=getc(f1);
d=getc(f2);if(c!=d)
{break;
a++;
}}
if(a!=b)
{
fprintf(stderr, "\n A ket fajl szovege ettol a karaktertol nem egyezik: %d", a);
getchar();
getchar();
}
break;case 2:
printf("Gepelje be a szoveget, majd usson egy entert!\n");
f2=fopen("haha.txt","w+");
scanf("%s",&f);
fprintf(f2,"%s",f);b=1000;
for(a=0;a<b;a++){
c=getc(f1);
d=getc(f2);if(c!=d)
{break;
a++;
}}
if(a!=b)
{
fprintf(stderr, "\n A ket szoveg ettől a karaktertol nem egyezik: %d", a);
getchar();
}
if(a=b)
{
getchar();}
fclose(f1);
fclose(f2);break;
break;
}
}Jajj, az f ráadásul egy int.

Én a következő módon csinálnám. Mivel az stdin is egy fájl, ezért készítenék egy függvényt ami bemenetként FILE* argumentumokat vár. Ezt ezután simán lehet hívni "igazi" fájlokkal illetve az stdin-el is.
Az "abcdef" stílusú változókról pedig addig szokj le amíg nem késő

-
Jester01
veterán
Üdvözlet!
Nemrég kaptam egy beadandó feladatot, amit sehogysem bírok megfejteni....
Így hangzik: (e^x=1+x+(x^2/2!)+(x^3/3!)+(X^4/4!)... ) adott pontossággal (input). Azb exp() nem használható.
Input pontosság: (>10E-15)
Output: Az e a kért pontossággal.Egyáltalán mit jelentene ennél a feladatnál a pontosság? Input=x?
Ameddig eljutottam:#include <stdio.h>
#include <math.h>
int main (){
int p, i=0;
double e;
printf("Adja a meg a kivant pontossagot!\n");
scanf("%d", &p);
if (p<0)
printf("Csak pozitiv egesz szam fogadhato el!");
else
for (i=0; i<p; i++){
e=1+p+pow(p,i);}
printf("%lf", e);
return 0; }Van esetleg valakinek valamiféle ötlete a megoldáshoz?
Előre is köszönöm!Mivel az e értékét kell kiszámolni, ezért x=1. A bemenet pedig, hogy milyen pontossággal kell megadni az e-t.
A kiszámítandó összeg tehát: 1 + 1 + 1/2! + 1/3! + 1/4! + ...
De vigyázni kell, meg kell nézni, hogy a double elég pontos-e egyáltalán? -
SKFA
csendes tag
Üdvözlet!
Nemrég kaptam egy beadandó feladatot, amit sehogysem bírok megfejteni....
Így hangzik: (e^x=1+x+(x^2/2!)+(x^3/3!)+(X^4/4!)... ) adott pontossággal (input). Azb exp() nem használható.
Input pontosság: (>10E-15)
Output: Az e a kért pontossággal.Egyáltalán mit jelentene ennél a feladatnál a pontosság? Input=x?
Ameddig eljutottam:#include <stdio.h>
#include <math.h>
int main (){
int p, i=0;
double e;
printf("Adja a meg a kivant pontossagot!\n");
scanf("%d", &p);
if (p<0)
printf("Csak pozitiv egesz szam fogadhato el!");
else
for (i=0; i<p; i++){
e=1+p+pow(p,i);}
printf("%lf", e);
return 0; }Van esetleg valakinek valamiféle ötlete a megoldáshoz?
Előre is köszönöm! -
plaschil
aktív tag
Hali!
Szerintem az a baj a case 2-vel, hogy f1-et nem inicializáltad.
Arra tippelek, hogyf1 = stdin;
-t be kéne szúrni ahhoz hogy úgy működjön ahogy gondolod.
[OFF]Egyébként nem igazán értem mire jó a
fajlvizsgal
függvény, a programban sehol sem hívódik.[/OFF]
Igen, tudom, azzal is kéne valamit kezdeni.
-
a_nagy_pok
csendes tag
Ő lenne az. A case1 lefut, a case2 nem. De miért nem? Segítsetek ha tudtok!
#include <stdio.h>
int fajlvizsgal( int argc, char *argv[] )
{
FILE *f1;if ( argc != 3 )
{
printf( "Hibas parameterezes!" );
printf( "\nHasznalat: programnev blabla.txt blabla.txt\n" );
return( -1 );
}if ( ( f1 = fopen( argv[1],"rt" ) ) == NULL )
{
printf( "\nHiba az elso argumentumban megadott fajl megnyitasaban!\n" );
return( -1 );
}fclose( f1 );
main( argv );}
int main (char *argv[])
{
int a, b, c, d, e, f;
FILE *f1;
FILE *f2;printf("Valasszon opciot: A konyvek.txt es az autok.txt fajlok osszehasonlitasa (1-es es enter)\n"
" A haha.txt fajl es begepelt szoveg osszehasonlitasa (2-es es enter)\n");
scanf("%d",&e);switch(e)
{
case 1:
f1=fopen("konyvek.txt","r");
f2=fopen("autok.txt","r");
b=1000;
for(a=0;a<b;a++){
c=getc(f1);
d=getc(f2);if(c!=d)
{break;
a++;
}}
if(a!=b)
{
fprintf(stderr, "\n A ket fajl szovege ettol a karaktertol nem egyezik: %d", a);
getchar();
getchar();
}
break;case 2:
printf("Gepelje be a szoveget, majd usson egy entert!\n");
f2=fopen("haha.txt","w+");
scanf("%s",&f);
fprintf(f2,"%s",f);b=1000;
for(a=0;a<b;a++){
c=getc(f1);
d=getc(f2);if(c!=d)
{break;
a++;
}}
if(a!=b)
{
fprintf(stderr, "\n A ket szoveg ettől a karaktertol nem egyezik: %d", a);
getchar();
}
if(a=b)
{
getchar();}
fclose(f1);
fclose(f2);break;
break;
}
}Hali!
Szerintem az a baj a case 2-vel, hogy f1-et nem inicializáltad.
Arra tippelek, hogyf1 = stdin;
-t be kéne szúrni ahhoz hogy úgy működjön ahogy gondolod.
[OFF]Egyébként nem igazán értem mire jó a
fajlvizsgal
függvény, a programban sehol sem hívódik.[/OFF]
-
plaschil
aktív tag
Ő lenne az. A case1 lefut, a case2 nem. De miért nem? Segítsetek ha tudtok!
#include <stdio.h>
int fajlvizsgal( int argc, char *argv[] )
{
FILE *f1;if ( argc != 3 )
{
printf( "Hibas parameterezes!" );
printf( "\nHasznalat: programnev blabla.txt blabla.txt\n" );
return( -1 );
}if ( ( f1 = fopen( argv[1],"rt" ) ) == NULL )
{
printf( "\nHiba az elso argumentumban megadott fajl megnyitasaban!\n" );
return( -1 );
}fclose( f1 );
main( argv );}
int main (char *argv[])
{
int a, b, c, d, e, f;
FILE *f1;
FILE *f2;printf("Valasszon opciot: A konyvek.txt es az autok.txt fajlok osszehasonlitasa (1-es es enter)\n"
" A haha.txt fajl es begepelt szoveg osszehasonlitasa (2-es es enter)\n");
scanf("%d",&e);switch(e)
{
case 1:
f1=fopen("konyvek.txt","r");
f2=fopen("autok.txt","r");
b=1000;
for(a=0;a<b;a++){
c=getc(f1);
d=getc(f2);if(c!=d)
{break;
a++;
}}
if(a!=b)
{
fprintf(stderr, "\n A ket fajl szovege ettol a karaktertol nem egyezik: %d", a);
getchar();
getchar();
}
break;case 2:
printf("Gepelje be a szoveget, majd usson egy entert!\n");
f2=fopen("haha.txt","w+");
scanf("%s",&f);
fprintf(f2,"%s",f);b=1000;
for(a=0;a<b;a++){
c=getc(f1);
d=getc(f2);if(c!=d)
{break;
a++;
}}
if(a!=b)
{
fprintf(stderr, "\n A ket szoveg ettől a karaktertol nem egyezik: %d", a);
getchar();
}
if(a=b)
{
getchar();}
fclose(f1);
fclose(f2);break;
break;
}
} -
plaschil
aktív tag
A lényeget pont lehagytad. Emberek, legyetek szívesek mindig a teljes programot is mellékelni (külső link formájában), hogy ki lehessen próbálni! Ugyancsak általános megjegyzés, hogy tessék szépen bekapcsolni az összes warningot és kijavítani őket, hacsak nincs rá nyomós ok.
Valószínűleg az f változód simán char*. Ez baj, annak bizony helyet kell foglalni. A scanf hívásba pedig nem kell az & jel az f elé. Ettől eltekintve a progi sajnos több sebből vérzik.
A struct és az union közötti óriási különbség, hogy az union tagjai egymást átfedve helyezkednek el a memóriában, míg a struct esetében egymás után. Union esetén általában mindig csak az egyik mezőt használjuk (speciális eset pl. a típuskonverzió)
Küldtem egy privit.
-
Jester01
veterán
A lényeget pont lehagytad. Emberek, legyetek szívesek mindig a teljes programot is mellékelni (külső link formájában), hogy ki lehessen próbálni! Ugyancsak általános megjegyzés, hogy tessék szépen bekapcsolni az összes warningot és kijavítani őket, hacsak nincs rá nyomós ok.
Valószínűleg az f változód simán char*. Ez baj, annak bizony helyet kell foglalni. A scanf hívásba pedig nem kell az & jel az f elé. Ettől eltekintve a progi sajnos több sebből vérzik.
A struct és az union közötti óriási különbség, hogy az union tagjai egymást átfedve helyezkednek el a memóriában, míg a struct esetében egymás után. Union esetén általában mindig csak az egyik mezőt használjuk (speciális eset pl. a típuskonverzió)
Új hozzászólás Aktív témák
-
Fórumok
Mobilarena - mobil fórumok
Okostelefonok Mobiltelefonok Okosórák Autó+mobil Üzlet és Szolgáltatások Mobilalkalmazások Tartozékok, egyebek Mobilarena blogokPROHARDVER! - hardver fórumok
Notebookok TV & Audió Digitális fényképezés Alaplapok, chipsetek, memóriák Processzorok, tuning Hűtés, házak, tápok, modding Videokártyák Monitorok Adattárolás Multimédia, életmód, 3D nyomtatás Tabletek, E-bookok Nyomtatók, szkennerek PC, mini PC, barebone, szerver Beviteli eszközök Egyéb hardverek PROHARDVER! BlogokIT café - infotech fórumok
Infotech Hálózat, szolgáltatók OS, alkalmazások SzoftverfejlesztésGAMEPOD - játék fórumok
PC játékok Konzol játékok MobiljátékokLOGOUT - lépj ki, lépj be!
LOGOUT reakciók Monologoszféra FototrendFÁRADT GŐZ - közösségi tér szinte bármiről
Tudomány, oktatás Sport, életmód, utazás, egészség Kultúra, művészet, média Gazdaság, jog Technika, hobbi, otthon Társadalom, közélet Egyéb Lokál PROHARDVER! interaktív
● olvasd el a téma összefoglalót!
● ha kódot szúrsz be, használd a PROGRAMKÓD formázási funkciót!
- Mibe tegyem a megtakarításaimat?
- Lightyear - befektetési app
- Futárcégek
- Motoros topic
- AMD K6-III, és minden ami RETRO - Oldschool tuning
- Nintendo Switch
- Windows 11
- Gaming notebook topik
- Forza sorozat (Horizon/Motorsport)
- Luck Dragon: Alza kuponok – aktuális kedvezmények, tippek és tapasztalatok (külön igényre)
- További aktív témák...
- Eladó teljesen újszerű karcmentes Samsung Galaxy Watch Ultra
- DDR4 memóriák eladóak
- Hihetetlen Gaming PC brutális specifikációkkal! A dán Topdata.dk IT-cég által összerakva
- 2.5" 100% noti HDD-k Western Digital, Seagate 320Gb (3k) +1Tb (15k) van 1db SSHD is (15k)
- Lenovo P16s gen2 16" //Core i7 1360P // Nvidia RTX A500 4GB GDDR6 // 16Gb /512GB SSD/ gyári garancia
- Sudokoo NEXAURA 360 Liquid Cooler, 360mm vízhűtés!
- BESZÁMÍTÁS! ASRock A520M R7 5700 32GB DDR4 512GB SSD RTX 3060 Ti 8GB Rampage SHIVA Corsair 650W
- AKCIÓ! LENOVO ThinkPad P15 Gen 1 munkaállomás - i7 10750H 16GB DDR4 256GB SSD Quadro T1000 W11
- új NAGYakku!!! 6-10óra üzemidő, 5G! Dell Latitude 5330 i3-1215U - 16GB 256GB 13.3" FHD 1 év gar
- BESZÁMÍTÁS! Intel Core i9 10900X 10 mag 20 szál processzor garanciával hibátlan működéssel
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest


Mindig tanul az ember! 

vagy csak egyszerűen double-el?

)
Nagyon jó.



ok akkor békénhagylak
. Az a baj hogy fura karaktereket ír ki nem számokat(vagy semmit). Tudom hogy szöveg kell neki csak nem tudom hogy csináljak szöveget számból. Ezt magyarázza el valaki


