Új hozzászólás Aktív témák
-
Jester01
veterán
Valószínűleg nem nullázod az átvitelt a kivonás előtt. Nekem működik.
-
vanek
tag
Meg is érkeztem..
a problémám a következő lenne,
az eredményt az s1 be szeretném beletenni, mivel majd egy while ciklussal addig kell összeadogatnom a számokat, amíg nem lesz a műveleti jel '='for(c=0; c<=a; c++)
{
osszeg[a-c]=((s1[a-c]-s2[b-c])+10)%10-g;
if((s1[a-c]-s2[b-c])+s2[b-c]<0)
{
g=1;
}else{
g=0;
}
}ha jól sejtem, akkor az if részben már a két szám eredményeképpen kapott számból vonja ki az aktuális s2-t, de miért nem jó, ha még hozzáadom az s2-őt? Akkor az eredeti számot kapom nem?:\ de még sem akar működni..
ugyan ilyen gondom van az összeadásnál is..
-
kingabo
őstag
Vegyük a következő esetet: s1[a-0] = 9, s2[b-0] = 8, ekkor osszeg[a-0]=s1[a-0]+s2[b-0]+g; az osszeg[a] helyére 17-et ír, nem pedig 7-et. Nálad a tizesek helyén van a 4 az egyesek helyén a 11, ezért lett 411.(ha teszel egy szóközt a jegyek kiíratása közé, úgy könnyebb észrevenni) Megoldás: az osszeg[a-.. jobb oldalának vedd a 10-el vett maradékát.
-
kingabo
őstag
Nos, mivel stringként olvasol be a file-ból, ezért a tömb elemek nem a számokat, hanem azok ascii kódját tartalmazzák. Pl a 0 helyett 48-at. Tehát ha a szám kellene, nem a kódja, akkor minden karakterből le kell vonni 48-at. s1[i] -= 48; (lehet van szebb megoldás is, de most nem jut eszembe.
ui: 5 percig tudod szerkeszteni a hsz-ed.
szerk: az atoi pont erre való.
-
kingabo
őstag
Huh, 1000 éve nem olvastam file-ból c-ben.
, talán a legegyszerűbb az lenne, ha írnál egy fv-t ami az ascii-ben tárolt számot átalakítja, annak a valódi értékére. Ehhez a 0 vagy az 1 (nemtom melyik van elől) ascii kódját kellene minden számjegynél levonni.
"átvitelnél a túlcsordulásra gondolsz?"
Igen.Feladat: sztem jó az irány, az előjelezést meg nem olyan nehéz megoldani.
-
kingabo
őstag
osszeg[a-i]=s1[a-i]+s2[b-i];, ha jól sejtem itt a számok ASCII kódját adod össze, ezért van gond a kiíratással. Megoldás: a beolvasásban ne stringként olvas be, hanem számként. Hiba még, hogy pl 8+9 esetén a "túlcsordulást" nem viszed tovább.
Szerintem ha megosztod a feladatot lehet, hogy a mostani elképzelésednél könnyebbet tudnánk kitalálni.szerk: lemaradtam.
Ja és igen a szám hossz...
-
Jester01
veterán
Ezzel több baj is van.
Ha egyáltalán nem működik az azért lehet mert nem jó a bemenet. Ha tényleg "45+15" akkor azt egyben megeszi az első scanf. Kell közéjük valami elválasztó whitespace, például "45 + 15". Ezután az lesz a következő baj, hogy simán az ascii kódot nem lehet összeadni, le kell vonni belőle 0 ascii kódját. Ha ez is megvan akkor még az átvitel (carry) problémáját is meg kell oldani. Az eredmény hosszával is gondok vannak, te egyszerűen az első szám hosszát használod ami nem (mindig) jó. -
Becopyznád a jelenlegi teljes programodat?
Mert en most megneztem az eredeti kododdal, meg a javitasokkal is, de mar a linkelt pdf-ben szereplo peldat hasznalva is helytelen eredmenyt ad...
Meg milyen kornyezetben probaltad te ezt?
En egy kabinetes gepen futtattam s ott adott vissza rosszat s ugye a Biro is ugyanilyen kornyezetben futtattja majd.Szerk: Latom Jester01 megelozott.
-
Jester01
veterán
Ez nagyon kreatívan megírt program. Ha ember bírálná el, nem sok jó származna belőle.
Mindenesetre a baj az fgets körül lehet, az ugyanis eltárolja a sorvég jelet is. Ezáltal egyfelől csak akkor találod meg a dolgokat ha az éppen a sor végén van, másfelől pedig a 255 hosszú sorokon elcsúszik a feldolgozás (és onnan már nem is jön helyre). Jelen formájában a feladatkiírásban lévő példára sem működik, nem értem ezt hogy nem vetted észre.
-
WonderCSabo
félisten
Megírtam egy picit más megközelítéssel. Nem lehet, hogy a mainben rossz vmi? Én most már fáradt vagyok elemezni ezt a bonyolult problémát.
int vizsgal(char s1[], char d1[])
{
int i, j;
int b = 1;
for(i = 0; i<= strlen(s1)-strlen(d1); ++i)
{
for(j=0; j < strlen(d1); ++j)
{
if(s1[i+j-1] != d1[j])
{
b = 0;
break;
}
else
b = 1;
}
if(b)
return i-1;
}
return i-1;
} -
WonderCSabo
félisten
Válaszoltam a C++ topikban, de itt folytassuk.
Új hozzászólás Aktív témák
● olvasd el a téma összefoglalót!
● ha kódot szúrsz be, használd a PROGRAMKÓD formázási funkciót!
- Samsung Galaxy S25 Ultra - titán keret, acélos teljesítmény
- Google Pixel 10 és 10 Pro összehasonlító gyorsteszt
- Milyen routert?
- Vezeték nélküli fejhallgatók
- AMD Navi Radeon™ RX 9xxx sorozat
- Villanyszerelés
- BestBuy topik
- Xbox Series X|S
- Milyen asztali (teljes vagy fél-) gépet vegyek?
- sziku69: Fűzzük össze a szavakat :)
- További aktív témák...
- LG V50
- Eladó Lenovo ThinkPad X1 Carbon Gen 8 prémium üzleti ultrabook, WQHD kijelzővel!
- Eladó HP EliteBook 645 G11 új, dobozos, Ryzen 5, DDR5, LTE képes üzleti laptop!
- Eladó ASUS TUF Gaming F15 (FX507ZU4-LP067W) i7, RTX 4050, gamer laptop!
- Eladó HP Envy x360 15-fe0178ng OLED, RTX 3050, i7-1355U, gyakorlatilag új! 3 órát ment eddig
- iPhone 13 mini 128GB Midnight -1 ÉV GARANCIA - Kártyafüggetlen, MS3086, 94% Akkumulátor
- GYÖNYÖRŰ iPhone 13 256GB Black -1 ÉV GARANCIA - Kártyafüggetlen, MS2247
- Honor 90 512GB, Kártyafüggetlen, 1 Év Garanciával
- GYÖNYÖRŰ iPhone 13 Pro 256GB Silver -1 ÉV GARANCIA - Kártyafüggetlen, MS3384, 95% Akkumulátor
- Samsung S23+ 256GB Állapot: 10/10 6 hónap jótállás!
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest