- Házi hangfal építés
- HTPC (házimozi PC) topik
- LG C3: egy középkategóriás OLED tévé tesztje
- AMD Navi Radeon™ RX 9xxx sorozat
- AMD K6-III, és minden ami RETRO - Oldschool tuning
- AMD Ryzen 9 / 7 / 5 9***(X) "Zen 5" (AM5)
- Milyen egeret válasszak?
- Azonnali notebookos kérdések órája
- Vezetékes FEJhallgatók
- Házimozi belépő szinten
Új hozzászólás Aktív témák
-
Oppenheimer
nagyúr
válasz
Oppenheimer #2499 üzenetére
Tehát az UDP_Socket operator<< függvénye lentebb olvasható (mint mondtam is, mindig működik). A sender_address és a sender_port egy std::string és uint16_t típusú, inicializált változók.
Itt megtörtént a standard outputra kiírás:
De közben felvillan a "debug error!" hibaüzenet, amiből utána ennyi látszik:
Jó, mi?
-
Oppenheimer
nagyúr
az opertor<< nem csinál semmit csak kiír. Az is mindig jól működik, kivéve ebben a szálban. Nem használ közös adatot, két külön objektumról van szó amik a saját tagváltozóit írják ki.
std::ostream& operator<<(std::ostream& os, const Socket& sock)
{
os << sock.IP_address << ":" << sock.port;
return os;
}A két szál közös adatai meg mutex-ekkel védett stl tárolók, de odáig most nem jut el a program, hogy használja is őket a második szál.
-
válasz
Oppenheimer #2497 üzenetére
Nyilvan nem az std::cout az erdekes, hanem hogy mit csinal az << operatorod az osztalyodban.
Mi az az adat, ami a ket szalban kozos? Gyanitom, hogy a << operator hasznal osztott adatot.
-
válasz
Oppenheimer #2495 üzenetére
Tehat jol ertem, hogy
- a problema determinisztikus
- mindig a masodik szalnal jon elo (az elso recvfrom mukodik, de ugyanaz a kod egy masik szalon meghivva mar nem) -
Oppenheimer
nagyúr
válasz
Oppenheimer #2494 üzenetére
Kicsit elrontottam a debugolási lépések leírását, nem azok a képek vannak, amikre emlékeztem.
Szóval a második képhez tartozó helyes szöveg ez lenne: várakozik is csomagra timeout nélkül, ahogy annak lennie kell.
Az első képhez meg csak annyi a komment, hogy meghívódik a recvfrom()
-
Oppenheimer
nagyúr
Részleteket tudok mutatni, és elmondom mit csináltam.
Elöljáróban annyit, hogy csináltam egy wrapper osztályt a winapi köré, hogy OO módon tudjam kezelni socketeket, és amúgy tök jól működik.
Itt az 1. számú szálon meghívódik a rcvfrom() és várakozik is csomagra timeout nélkül, ahogy annak lennie kell:
Miután küldök neki egy csomagot, azt szépen feldolgozza a szál:
Ezek után elindítja a 2. számú szálat, ami egy másik socketre hívja meg a recvfrom()-ot:
Megnyomom az F11-et (step into) és voilà:
Látom szerkesztettél és call stack kell, intézek egyet.
Itt a call stack, nyilván csak az abortot előidéző utasításig tudom megnézni: -
válasz
Oppenheimer #2492 üzenetére
Publikus a forras? Ha nekiallsz debugolni, akkor mi tortenik (call stack kellene)?
-
Oppenheimer
nagyúr
válasz
Oppenheimer #2491 üzenetére
Senkinek nincs ötlete?
-
Oppenheimer
nagyúr
válasz
Oppenheimer #2490 üzenetére
Amugy irtam kis kiegeszito programokat amikkel kiprobaltam, hogy mukodik-e amit csinalok, es mukodik. Meg ezen a programon belul is mukodik, csak azon a bizonyos szalom nem.
-
Oppenheimer
nagyúr
winapit socketet használó programot írok. Amikor egy ezzel kapcsolatot api hívást csinálok az egyik szálból, pl select(), vagy recvfrom(), akkor elszáll a program a fenti hibaüzenettel. Túrtam elég sokat a netet, de nem találtam róla semmi használhatót.
SO-n azt írták, hogy egy kezeletlen exception miatt meghívódik a terminate() ami meghívja az alkalmazás abort()-ját és ezért áll le.
Próbáltam, hogy try-catch blokkba elkapok mindent a függvényhívás körül, de ugyan úgy abortálódott a futás. Egyébként msdn-en semmit nem írnak arról, hogy ezek a függvények exceptiont dobnának.
Én arra gyanakszom, hogy a többszálúság miatt lehet, de minden socketet csak egy, a saját szálából használok. Egyébként is úgy debugoltam, hogy a másik szál aludt, mikor erre a függvényhívásra lépett az utasításszámláló.A másik furcsa jelenség a következő: overloadoltam az operator<<-t az egyik saját osztályomnak. Tökéletesen működik mindig, kivéve abban a szálban, ami a fenti hibát produkálja. Egész pontosan mikor megtörténik az outputra kiírás, akkor is dob egy ilyen hibaüzenetet, de ekkor még tovább tudom futtatni a programot. WTF?
UI: bocs, hogy nem print screeneltem, a szituációban egyszerűbb volt fotózni.
-
Karma
félisten
válasz
kmisi99 #2488 üzenetére
WonderCSabo már szólt korábban, úgyhogy még mielőtt nagyon belemennénk, tedd fel a kérdést a C programozás topikban, ahová való.
-
kmisi99
addikt
Sziasztok! Nagyon kezdő szinten programozok és fájlkezelésben egy ilyen programot kellene csinálnom de fogalmam sincs hogy kezdjem el
Az a rész már megvan ahol megnyitom a bináris fájlt az f=fopen... de innentől elvesztem. A feladat
bekér egy hónapot kiírja az adott hónaphoz tartozó összes érték kódját a bináris fájlból (egy kód legföljebb egyszer szerepelhet)
Elsőnek csak ennyit.
Ennyi van meg
FILE *f;
int ossz=0,i;
short s;
f=fopen("..//trofea.dat", "rb");
if(!f)
{Előre is köszönöm a segítséget!
-
Oppenheimer
nagyúr
válasz
WonderCSabo #2484 üzenetére
A legtöbb példában amit láttam nem egy osztály tagfuggvenyet adták át, hanem egy globális függvényt, ezért először nem értettem, hogy miért kell 2 paraméter a thread konstruktorának, aztán végül leesett.
emvy: valóban tökmindegy, csak annyi, hogy a mainben meg be kell várni azt a szálat.
Amúgy deklaráltam egy threadeket tároló listát és abba pusholtam bele a futás közben létrehozott threadeket, aztán a létrehozó szál végén vegigiteraltam a listán és mindre meghívtam a joint, így rendben működik.
-
válasz
WonderCSabo #2484 üzenetére
> két paraméteres konstruktort hívja meg
Asszem ellipszis a harmadik, nem ket parameteres, de ez csak szorszalhasogatas.
-
WonderCSabo
félisten
válasz
Oppenheimer #2481 üzenetére
Nem tudom, hogy világos-e, de itt nincs semmi extra szintaxis (ahogy javában sincs ebben az esetben). Az std::thread egy sima osztály, thread_name itt a változó neve, és létrehozatalakor a két paraméteres konstruktort hívja meg. Az első paraméter egy függvény pointer, jelen eseten itt egy member function-ra, a második paraméter pedig sima address of operátor, hogy referencia szerint legyen átadva. Ez azért szükséges, hogy a metódus hívásakor adott legyen a this. (Mellesleg a példánymetódusoknál amúgy is valami ilyesmire fordul, mármint mindig a függvény első paramétere az objektum lesz.)
-
válasz
Oppenheimer #2481 üzenetére
Az miert fontos, hogy melyik szal? (Hacsak nincs UI thread.)
-
Oppenheimer
nagyúr
válasz
Oppenheimer #2481 üzenetére
Hazafelé menet leírom hogy mit csináltam, hátha segít majd egyszer valakinek, bár nem egy nagy mágia.
-
válasz
Oppenheimer #2479 üzenetére
Szerintem:
class A {
void foo() {}
};
// stb..
A a;
std::thread thread_name(&A::foo,&a); -
Oppenheimer
nagyúr
Van egy osztály, amiben van egy függvény aminek nincs paramétere és nincs visszatérési értéke. Ezt a függvényt szeretném meghívni egy másik osztályból külön szálként std:threadet használva. Ennek mi a helyes módja?
-
kmisi99
addikt
válasz
WonderCSabo #2477 üzenetére
Kösz meg is oldotta a gondot.
-
kmisi99
addikt
válasz
WonderCSabo #2474 üzenetére
Tényleg azt észre se vettem, még az lenne a konkrét feladat, hogy ha beírok egy szót mint pl ablak 235 akkor a számot is kiírja pl ABLAK 235, de ha szóközt rakok csak az első stringet írja ki.
-
-
kmisi99
addikt
Volna egy programom ami kisbetűsből nagybetűssé alakít át, de annyi a bajom vele, hogy az első betűt nem alakítja át pl beírom, hogy ablak akkor annyit ad ki, hogy BLAK.
Ez lenne a program#include <stdio.h>
#include <ctype.h>
int main ()
{
int i=0;
char str[20];
char c;
scanf("\n%s", &c);
while (str[i])
{
c=str[i];
putchar (toupper (c));
i++;
}
return 0;
} -
kmisi99
addikt
válasz
h1ght3chzor #2471 üzenetére
Azóta tettem egy próbát a code blocks al máshonnan töltöttem le egy másik verziót ez már tökéletesen futtat, de kössz az ajánlást.
-
kmisi99
addikt
Kellene egy jó C fordító, milyet ajánlotok egy kezdőnek ilyen matekos programok megírására az egyetemen. A code blocks rajta van a gépen, de nem igazán futtat le semmit még ha a program jó is. Valami egyszerű, könnyen használható program érdekelne ami jól megjeleníti hol milyen hibát vétettem. Előre is köszönöm a válaszokat.
-
WonderCSabo
félisten
Alapból kizárt, hogy benne lennének. Max tudsz csinálni code snippet-et.
-
HAX
tag
Sziasztok.
A CodeBlocks-ban valahol/valahogy meglehet nézni a programozási tételeket, ha igen akkor hol?
Gondolom valahogy elő lehet hozni ha benne van "gyárilag" a min/max kiválasztás. -
LW
őstag
Az input streamnek, ahonnan az olvasás történik van olyan tagfüggvénye, amelyik a fájl végét jelzi bool-al.
http://www.cplusplus.com/reference/ios/ios/eof/ -
bandi0000
nagyúr
Kösz a.válaszokat,már mondtam hogy fogalmam sincs miben írok ezt így tanultam meg és így használom lehet vegyítem a kettőt de legalább mûkszik
-
Dave-11
tag
válasz
bandi0000 #2462 üzenetére
Igen, csak így nem haladsz egy sort sem a fájlban, és kapsz egy végtelen ciklust.
Tegyél bele még egy getline(f,temp); sort, ahol f a fájl, a temp meg egy ideiglenes string, azt csak arra használod hogy beolvasd az aktuális sort, és így szépen végighalad a fájlon és megkapod hány sor van benne.
Csak arra vigyázz hogy ha mondjuk üres sorra végződik, akkor azt is beolvasod és úgy veszed mintha ott is lenne adat. Ezért mondjuk tehetsz a while-ba egy if szerkezetet, hogy az n értékét csak akkor növelje, ha mondjuk a beolvasott sor nem egy üres string: temp!="". -
bandi0000
nagyúr
a feof függvényt hogy kellene helyesen használni? string tömb, kellene hogy hány sorból/elemből áll ugye hogy tudjam futtatni a for-t elvileg vissza kellene adnia egy számot így nem?:
while (!feof(f)) {
n++;
} -
theiron320
aktív tag
válasz
theiron320 #2460 üzenetére
Megvan a megoldás. Ha az alaposztályban levő virtuális függvényt újradefiniáljuk a származtatott osztályban akkor a paraméter lista és a visszatérített érték is ugyan az kell legyen, nem csak a név!
-
theiron320
aktív tag
Sziasztok! Segítséget szeretnék kérni. Adott egy A osztály a + és += operátor túlterhelve.(+= a pluszt hivja meg az aktuális és a paraméterként megadott objektumra). A B osztály az A osztály leszármazottja, itt csak a + operátor van túlterhelve. Azt szeretném elérni, hogy két B típusú objektumra ha meghívom a += operátort akkor ne az alaposztálybeli + operátor hanem a származtatott osztályban lévő + operátor hajtódjon végre. Próbáltam virtuálissá tenni a + operátor az alaposztályban, de amikor meghívom a += a két B típusú objektumra akkor mindkettőt A típusúnak veszi, és nem hajtódik végre a származtatott osztálybeli + operátor.Próbáltam így is (this->operator+(z)) ahol z a paraméterként megadott objektum.Ha más függvénnyel próbálom pl. egy ellenőriz ami kiírja, hogy alap vagy származtatott és meghívom a this->ellenoriz()-t akkor arra szépen megy.
-
badich13
újonc
Hello. Egy nagy kérésem lenne. C++os programot kéne készítenem. Remélem lesz akinek nem lenne túl nagy fáradtság és kisegít. Előre is köszönöm szépen!!
Itt lenne a feladat:
Hozza létre az Ember osztályt Súlya, Magassága, Kora, Anyja neve adattagokkal. Származtassa belőle a Férfi és a Nő alosztályokat. A Férfi alosztályt bővítse a Szakállhossz, Sumo birkozo e, a Nők alosztályt a Kedvenc rúzs színe, Kedvenc körömlakk színe, Kontyot visel adattagokkal. Írjon programot, amellyel létrehozhatók a Nő és a Férfi osztályok egyedeit tároló vektorok. A program tegye lehetővé a feltöltést és a Sumo birkozo férfiak átlagéletkorának kiírását, valamint a kontyot viselő nők összes adatának kilistázását.
-
cattus
addikt
válasz
kemkriszt98 #2456 üzenetére
-
kemkriszt98
tag
válasz
WonderCSabo #2454 üzenetére
Kár ... Amúgy nem tudom, hogy mért írtam azt, hogy magyar oldal... ha esetleg tudtok angol oldalt az is jó
-
cattus
addikt
válasz
WonderCSabo #2454 üzenetére
Asszem az ELTE-nek is van ilyen rendszere. Úgy emlékszem egyik ismerősöm - nem ELTE hallgató - használja, majd megkérdezem.
-
WonderCSabo
félisten
válasz
kemkriszt98 #2453 üzenetére
Ha jelentkezel a BME-re, akkor van ilyen oldal.
Egyébként szerintem nincs.
-
kemkriszt98
tag
Sziasztok, léteznek olyan magyar oldalak ahol megadnak egy feladatot, megoldod, feltöltöd a cpp-t és helyben ki is értékeli neked?
-
#36268800
törölt tag
válasz
dabadab #2451 üzenetére
Köszönöm szépen.
Még egy kérdésem lenne (és később talán több is
):
mi a különbség az int main() és az int _main(int argc, _TCHAR* argv[]) sorok között? Most bontogatom a szárnyaimat és a könyv, ami alapján alapozok, egyelőre mindig az elsőt használja, a szoftver pedig mindig a másodikat szúrja be automatikusan.
-
#36268800
törölt tag
Microsoft Visual C++ 2010-et használok. A kód elejére mindig beszúrja a következő sort:
#include "stdafx.h"
Mire jó ez a sor, ki lehet-e hagyni és ha kihagyom (vagy ha épp benne hagyom), később lesz-e kihatása az általam írt programokra?
-
bandi0000
nagyúr
válasz
bandi0000 #2448 üzenetére
Ezért szeretek ide írni, mert egyrészt segítetek sokat amit köszönök, meg így én is tudok gondolkozni, végül így oldottam meg:
for(j=1;j<7;j++)
{for(i=0;i<n;i++)
{
if(napok[j]==t.nap)
napok[j]=0;
}}
for(i=1;i<7;i++)
{
if(napok(i)!=0) printf("Ezen a napon pihent: %d\n",napok(i));
}kinulláztam egy napok tömbbe azokat az értékeket amiket megtalált, és ahol nem volt nulla azt meg kiírattam, a második kérdéses feladatnak meg holnap esek neki
-
bandi0000
nagyúr
válasz
kingabo #2446 üzenetére
Az lényegtelen csak demonstrácio volt nem így néz ki a programom, azt akartam vele csinálni hogy van egy napok változóm aminek az értéke 7 elindítok egy while-t és amikor a napok aktuális értéke nem egyenlő a nap i-dik elemével akkor növelje az i-t de ha egyenlő akkor csökkentse a napok értékét 1 el és ha végigment az egész tömbön és nem találta meg a napok aktuális értékét akkor kellene kiirnia hogy melyiket nem találta meg vagyis a a napok aktuális értékét
-
kingabo
őstag
válasz
bandi0000 #2441 üzenetére
Végig gondoltad, hogy az általad írt program mit csinál? A napok egy 10 elemű tömb első (0.) elemére mutat, amin indítasz egy ciklust, ami addig fut amig a fenti ptr értéke nem 0. De hol állítod a ptr nullára? Sehol -> végtelen ciklus! Az if-ben lévő feltételt nem értem, de a fenti tömb -1-edik elemére állítod teljesülés esetén a ptr-t. Aztán a -2, -3...
Én megszámolnám egy tömbben, hogy melyik nap hányszor szerepel, aztán már csak 7 elemet kell ellenőrizni, hogy melyik 0.Spoiler!
Én csinálnék egy 7 elemű tömböt, kinulláznám, és a napokban lévő számok -1-el indexelve mindig növelném az ott lévő értéket. (nyilván előtte ellenőrizendő, hogy a tömbbön belüli lesz-e az index...) Aztán a fenti ciklus után egy másik ciklus végig nézi, hogy a fenti tömbben hol maradt 0 érték.A másodikra szerintem is a struct a jó. Nyilván amikor a másik 2 értéket is megadod, akkor kiszámolod a távot és az alapján pedig a költséget.
-
cattus
addikt
Közben lejárt a szerkesztési idő, tipp a második részhez: szerintem egyszerű és hasznos dolog a struct használata. Kvázi egy új típust definiálsz, mint az int, char, string, stb., csak ebbe több változótípust is tárolhatsz.
Példa: síkban elhelyezkedő pontokat szeretnék tárolni (x és y koordináta) egy egydimenziós tömbben:struct pont // pont adattípus definiálása
{
int x;
int y;
};
pont t[100]; // pont-okból álló t[] tömb definiálásai. elem lekérdezése az a ill. b változókba:
int a = t[i].x;
int b = t[i].y;Ez a te konkrét példádban így nézne ki:
struct adatok
{
int kezd;
int veg;
int dij;
};
adatok tomb[100]; -
cattus
addikt
válasz
bandi0000 #2441 üzenetére
Mivel csak 7 lehetséges érték van, én megpróbálnám, hogy leellenőrzöm egyesével, hogy benne vanak-e a tömbben egy for ciklussal végigmenve, azon belül pedig egy while-t használva:
for (int i = 1; i <= 7; i++)
{
int j = 1; // ez itt vagy 1 vagy 0, attól függ, hogy kezeled a tömböket
while ((t[j] != i) && (j < "tömbhossz")) // a tömbhossz persze egy változó, előtte meg kéne adni az értékét mondjuk egy while ciklussal, ami addig növeli az értékét, amíg nem ér el az első NULL értékig
{
j++ ;
}
if (j > "tömbhossz") //túlfutott a while ciklus, azaz az i aktuális értéke nem szerepelt a tömbben
{ eltárol();
}
}
} -
bandi0000
nagyúr
Lenne 1-2 gondolkozós feladatom
tehát adott egy tömb feltöltve a hét napjaival, tehát amiben a hét napjai lennének számokkal, de többször is szerepelhet 1 nap, nekem végül is azt kellene kiszűrni hogy melyik nap nem volt benne, tehát:
napok[10]={1,1,1,2,4,5,6,7,6,7 }
növekvő sorrendbe raktam az egyszerűség kedvéért de nem tudok rá megoldást találni,
első körben ezt találtam ki:while(napok!=0)
{
if (t.nap==napok)
napok--;
else
{
i++;
}
}napokba van egy szám a 7 , a nap tömbbe meg ugye a napok, egyrészt hibával áll le a progi, másrészt lövésem sincs hogy hogyan kellene eltárolnom azt a számot amelyiket ugye nem találta meg
Másik gondom:
feladatba szerepelnek km adatok, számok ezek is, és egy táblázat szerint kéne kalkulálni rá árat, pl ha 1-2km között futott a futár akkor mit tom én 500Ft a díj, szóval a táblázatba 5-6 ilyen sor van, de nem tudom miként tároljam el hogy ne legyen túl bonyolult, mondjuk most így leírva az jutott eszembe, hogy 3 dimenziós tömb? tehát [kezdő érték][vég érték][ díjazás] ez így járható, vagy van ennél egyszerűbb is?
-
WonderCSabo
félisten
válasz
-Faceless- #2439 üzenetére
Ha már C++, akkor miért nem <cstdio> ? (Ezért tettem fel a kérdést, C-s header, printf helyett C++ -ban kezdésnél inkább cout >> szoktak, stb.)
-
-Faceless-
őstag
válasz
WonderCSabo #2438 üzenetére
Mert ezt c++-ban csináltam, ezzel kezdtem. Ehhez tartozott a kérdés.
-
WonderCSabo
félisten
válasz
-Faceless- #2437 üzenetére
Egyébként miért nem a C topikba írtad?
-
doc
nagyúr
válasz
-Faceless- #2435 üzenetére
mert a sumnak soha nem adsz erteket, igy egy random 'szemet' van benne, ami nalad eppen pont 8
sum == 500 + 15 => sum = 500 + 15
-
-Faceless-
őstag
Sziasztok!
Ismét hülye kérdés:
#include<stdio.h>main(){
int sum;sum == 500 + 15;
printf("500 és 15 összege: %d\n", sum);
return 0;
}Ennek miért 8 az összege? Valamit alapvetően rosszul csinálok? Próbáltam bonyolultabb feladatokat, de ott is 8-at adott ki bármire. Ezt találtam egy példatárban, és ott azt írta így működnie kell...
Köszönöm, és bocsi az ilyen hülye kérdésekért csak nem haladok egyről a kettőre.
-
bandi0000
nagyúr
-
Dave-11
tag
válasz
bandi0000 #2431 üzenetére
Hát például itt kihasználhatod azt, hogy egy bizonyos értéknél nem lesznek nagyobbak a számok. Ugye írnod kell egy ciklust, ami végigmegy az összes adaton.
Még a ciklus előtt csinálsz két változót, az egyik a nap számát tárolja, a másik meg a fuvar sorszámát.
Azt a változót, ami a nap számát tárolja, felveszed 8-ra. Ez ugye hülyeség, de ennél már biztos hogy csak kisebbet fog találni az adatok között. A fuvarszámot tárolót szintén felveszed egy nagy számra (ha jól emlékszem ennél a feladatnál meg van adva, hogy egy nap hány fuvart mehet).
És a ciklusba szépen beleírod, hogy ha az aktuális adat napja kisebb vagy egyenlő mint az eddig eltárolt, és a fuvarszám is kisebb vagy egyenlő mint az eltárolt, akkor átállítja azokat ezekre az értékekre. Meg persze ezzel együtt lemented a megtett km-ek számát is, és a végén csak kiíratod ezeket a változókat. -
h1ght3chzor
őstag
válasz
bandi0000 #2431 üzenetére
Az adataidnak alapból rendezve kéne, hogy jöjjenek, legalább hétre lebontva, különben nem tudod megmondani szerintem. A buborékrendezést pedig utána a heteken belül csináld meg, hogy hétfő-kedd stb sorrendben legyenek, ezután végigmész a listán: hétfőtől kezded napok szerint++, és ha van km, akkor kiíratod, és ugrassz a következő hétfőre.
-
bandi0000
nagyúr
Na megint csak falba ütköztem, lényegében van 3 adat, első hogy a hét hanyadik napja a második a fuvarszám a 3, a megtett km
lényeg az, hogy ki kellene irattatni, hogy a hét első fuvara hány km-es volt, de úgy hogy akkor is jól írja ki, ha mondjuk a hét első fuvara nem az 1-ső hanem a 2. nap volt
én arra gondoltam, hogy sorba kellene rendezni és fölülről azt írja ki amelyiknek a km száma nem 0, de nem tudom hogy van e ennél egyszerűbb módszer, és hogy hogyan rendezzem, buborék rendezésre gondoltam, de nem tudom kivitelezni, mert ugye figyelni kéne a napokat és a napokon belüli számokat
-
Dave-11
tag
válasz
bandi0000 #2426 üzenetére
1. Miért próbálod a rendszámot két részként beolvasni a kötőjel mentén? A feladat megoldása során nincs majd arra szükséged, hogy azokat külön kezeld.
2. Az nem gond, hogy ami a forrásfájlban 09, és azt beolvasva neked csak 9, mert ez így helyes. Két feladat van még ott, ami azzal kapcsolatos, hogy kiírd az időt:
- az egyikben elég ha csak 9-et írsz ki
- a másik pedig külön kéri, hogy a nullákat is tedd oda, de azt megoldod egy egyszerű if szerkezettel majd, például így:
if(ora<10)
{
printf("0%d", ora);
}
else
{
printf("%d",ora);
}
és így tovább a percnél és a másodpercnél isFigyelj oda az ilyenekre, hogy felesleges dolgokból ne csinálj problémát, ezt mint szintén érettségire készülő társad mondom neked
-
bandi0000
nagyúr
válasz
bandi0000 #2425 üzenetére
Bocs a sok hsz-ért de nem tudok szerkeszteni, szóval itt járok:
Egyrészt az a gond, hogy hiába raktam a beolvasáshoz a kötőjelet hogy az első felét és a 2. felét a rendszámnak külön olvassa be, mert most csak 1 char-ba olvasta be és hiába járatom az i-t 0-tól legalább az első 10-15 sor hiányzik azt nem olvasta be valamiért, de gondolom lehet hozzá köze annak, hogy a forrásfájlba úgy van hogy: 09 de kiíratásnál csak 9-et ír
-
bandi0000
nagyúr
Köszönöm, a legtöbb hibát már orvosoltam amit írtál
Csak nincs időm és így próbálok gyakorolni, hogy mindig bele-bele írok a programba, mindig elfelejtem az X+1 karaktert lefoglalni, most lefoglaltam 1-el jobban néz ki de nem az igazi
Azért akarok ebbe programozni mert itt van az érettségi mindjárt, és én mindig C-ben programoztam, később lehet áttérek de most nem akarok kockáztatni
Amúgy eddig is amit gyakoroltam mindig így csináltam, ezeket ismerem elég alap tudom de nem tudok mit tenni, de amúgy a rendszámhoz visszatérve, elég egyszerű be kellene tudnia olvasni, de valamiért már az elején el megy mert az első integereket sem akarja beolvasniAmatőr hibát vétettem
Legelsőnek véletlen nem ovlastam hanem írtam a fájl-t ezért a forrás fájl teljesen üres voltMost már egészen pofás de nem az igazi mert a rendszám első fele char az jó de utána nem nagyon
-
cog777
senior tag
válasz
bandi0000 #2423 üzenetére
C-ben azert nehezebb programozni mint C++-ban. Biztos hogy C-ben akarod megcsinalni? Ugyanis C-ben nagyon kell figyelni dolgokra, pl ha elszursz egy pointert akkor megjosolhatatlan lehet a program viselkedese, vagy ha nem inicialialsz 0-val egy teruletet ahol string-et tarolsz akkor a printf tovabbi karaktereket is kiirat mert nem talalja a 0-a veget.
for ciklust 1-es index-el kezdted, igy akartad?
fscanf beolvassa ugyan az ertekeket es a string-et is de mi a garancia hogy a string pont akkora a szovegben mint a memoria teruleted:char re[3][7]? Mivel csak 7 karaktert foglaltal le es nem 8at azert hogy 0-t rakj a vegere ezert a printf tovabb irja a szoveget mint 7 karakter.printf utolso parametere nem &re[ I ]hanem csak re[ i ]
"Elvileg ennek tökéletesen kellene mennie"
Bocsanat, nem kotekedesnek szanom, de szerintem a buffer overflow betoreseket is ezek a kielentesek okozzakUgy erdemes programot kesziteni hogy torekszel arra hogy a hiba lehetosegek szamat minimalisra szoritsd.
Hacsak nem kifejezetten C-t akarsz tanulni linux kernel driver iras miatt, akkor inkabb hasznalj C++-t modern technologiakkal:std::array ahol beallitod a meretet a tomb-nek, .at(index) -el elered az elemet (es ha tul index-elsz akkor egybol latod mi a baj), komplett sort olvasnek be a helyedben es std::string-et hasznalnek majd onnan masolnam at az egyes reszeket struct-t ba mivel ezek a sorok egybe tartoznak.
Remelem sikerul atirnod! Sok sikert!
-
bandi0000
nagyúr
válasz
PumpkinSeed #2422 üzenetére
Az összeset? A számokat minek? Elvileg ennek tökéletesen kellene mennie
-
-Faceless-
őstag
válasz
PumpkinSeed #2419 üzenetére
Köszönöm
-
PumpkinSeed
addikt
válasz
-Faceless- #2418 üzenetére
2. fejezet - Egyszerű feladatok Innen vannak feladatok, bár c-s megvalósítással, de nem nehéz áttenni c++-ba.
-
-Faceless-
őstag
Sziasztok!
Olyan kérdésem lenne, hogy c++-t kezdtem el tanulni. Tudnátok esetleg ajánlani valami feladat gyüjtemény szerűséget, amivel könyebb lenne gyakorolni?
Más elkezdtem csinálni egy feladatot egy szegedi gyakorlati tanárnak az oldaláról néztem ki. (elég kevés van ott fönt, és szinte mind ugyanaz, de több mint a semmi) A lényege az lenne, hogy alap műveletekkel, és if, while, és for -al csináljak egy olyan loop-ot ami minden körben bekér egy számot addig ameddig az nem lesz 0 majd kiírja az eddig megadottak összegét. Ezt hogy érdemes csinálni?
(csak valami nem oké, mert lefut while ciklussal, de 0 után bekér még egy számot, és az összeadás sem jön ki)
Bocsi, hogy ilyen alap dolgokat kérdezek tuti, hogy az egészet ahogy van rosszul csinálom, de nem igen tudok fórumon kívül kitől tanácsot kérni.
-
bandi0000
nagyúr
válasz
bandi0000 #2416 üzenetére
Igazából a beolvasás/kiíratás se sikerül, 7 karakter hosszú a rendszám max, integerek meg csak 2 számjegyesek, és 3 db-ot próbálok beolvasni de elég fars értékeket dob vissza
A beolvasandó szövegnek meg ilyen a formátuma:
08 46 51 FD-2717
08 47 11 ZI-2088
08 48 52 EL-8894
08 50 34 SZ-3078
08 50 57 XY-8616
08 51 51 FY-2063
08 52 42 AY-2194 -
Jim-Y
veterán
Kb olyanra kell gondolni, hogy csinálok egy Panel osztályt, majd ebből származtatok két másik osztályt, az egyik mondjuk egy nyomógomb, vagy csúszka, vagy textfield, vagy akármi ilyen alap dolog. És mondjuk ezeket is fel szeretném tenni egy <vászonta> Frame-re, vagy akárhogy nevezik itt.
Egyik ismerősömnek segítenék aki nem ért (még) a programozáshoz, kaptak feladatot, nagyon alap, de én meg értek hozzá (sort of
) és ha itt kapok ötleteket, hogy a fentit mivel lenne érdemes elkezdeni akkor nem lesz gond.
-
Jim-Y
veterán
Sziasztok. Elsősorban Java-hoz értek, de most C++-ban kéne programoznom egy iskolai szintű feladatot. A kérdésem az lenne, hogy cpp-ben mi a Java Swing megfelelője? Vagy egyszerű grafikai programhoz mit kéne használni? üdv
-
dabadab
titán
válasz
kemkriszt98 #2402 üzenetére
Hozzalinkelted forditasnal a glutot?
-
kemkriszt98
tag
Sziasztok, sikerült megoldani az openGl-es problémát viszont adódott egy másik....
Ez a kód ezt a hibát dobja:.....\glut.h|486|undefined reference to `__glutInitWithExit'|
-
Karma
félisten
válasz
mgoogyi #2400 üzenetére
Ezt tapasztaltam igen, ha az enumot kihagytam a buliból, megjavult a sor...
De közben megoldódott, kaptam egy szeletet a másik fél tesztprojektjéből, amiben mbstowcs helyett MultiChar... valami függvényt használtak a 8-16 bites konverzióra, erre átálltam teljesen, és elmúlt a hiba...
Holnap esetleg bemásolom az eredeti kódomat, hátha valaki látja mi a baj vele. Én továbbra se látom.
Új hozzászólás Aktív témák
Hirdetés
● ha kódot szúrsz be, használd a PROGRAMKÓD formázási funkciót!
- DELL G2724D / Samsung Odyssey G5 1440p 165hz árak leírásban.
- Asus RTX 4070 12GB DDR6X - DUAL-RTX4070-O12G-EVO-DLSS 3 Garancia
- Apple iPhone 14 128GB, Kártyafüggetlen, 1 Év Garanciával
- Apple iPhone 14 Pro Max 128GB, Kártyafüggetlen, 1 Év Garanciával
- Új Apple iPhone 16 Pro 128GB, Kártyafüggetlen, 3 Év Garanciával
- ASUS Radeon RX 7600 V2 Dual OC 8Gb - Aqua gari 26.12.12 ig
- ÁRGARANCIA! Épített KomPhone Ryzen 5 4500 16/32/64GB RAM RTX 3060 12GB GAMER PC termékbeszámítással
- IKEA Format lámpák eladóak (Egyben kedvezménnyel vihető!)
- ÚJ Apple Macbook Air 15,3 M4 10C CPU/10C GPU/16GB/256GB - Ezüst -(2025)- 3 Ciklus-3 év gari - MAGYAR
- BESZÁMÍTÁS! Gigabyte B450 R7 5700X 32GB DDR4 512GB SSD RX 6700XT 12GB Rampage SHIVA be quiet! 650W
Állásajánlatok
Cég: CAMERA-PRO Hungary Kft
Város: Budapest
Cég: Liszt Ferenc Zeneművészeti Egyetem
Város: Budapest