Hirdetés
- Samsung Galaxy A56 - megbízható középszerűség
- iPhone topik
- „Új mérce az Android világában” – Kezünkben a Vivo X300 és X300 Pro
- Jövő héten érkezik a Mate 80 széria
- Xiaomi 14T Pro - teljes a család?
- Okosóra és okoskiegészítő topik
- Samsung Galaxy S23 Ultra - non plus ultra
- Google Pixel topik
- Samsung Galaxy Watch (Tizen és Wear OS) ingyenes számlapok, kupon kódok
- Mobil flották
Új hozzászólás Aktív témák
-
-
válasz
cellpeti
#723
üzenetére
Hali!
Maximálisan egyetértek Veled, hogy nem a tanárok hibája, hanem az oktatási rendszerünké.
"A tanároktól(tisztelet a kivételnek) nem kapnak türelmet az emberkék..."
Elnézést ha ezzel a mondattal félreérthető voltam, itt arra céloztam, hogy jómagam is(sajnos) ismerek olyan "tanárokat", akik egyszerűen pályát tévesztettek, alkalmatlanok a tanítói szakmára. Az "igazi" tanárokat(ezek szerint mint anyukád is) maximálisan tisztelem, mert lelkiismeretesen végzik a munkájukat, holott nekik is lehet mindenféle gondjuk-bajuk (anyagi, magánéleti, egészségügyi stb), de ennek ellenére erőn felül teljesítve, a diákok érdekeit szem előtt tartva, tisztességesen és elkötelezetten végzik a munkájukat.Fire.
-
válasz
cellpeti
#713
üzenetére
Hali!
Én magam is, amikor segítek, akkor CodeBlocks-ban írok, teljsen free, nagyon jó fejlesztőkörnyezet. Azonban kiskatus meg Borland Turbo C++ 4.0-ba.
Na ezt nem tudom felrakni x64 vista alá sajnos. Viszont így látatlanba, meg nem tudom, hogy hogy vannak beállítva a könyvtárak benne. valószínű, hogy az exe nem oda generálódik, ahol a forrásfájlok vannak.Fire.
-
-
Steve-S
tag
válasz
cellpeti
#676
üzenetére
Hi! Itt az én verzióm, bár lehet nem a legtökéletesebb, nem vagyok valami nagy prof C-ből, de működik! Bár lehet már kicsit későn postolom.
Azért remélem segítettem valamit.#include <stdio.h>
int getline(char t[],int lim)
{
int i;
char c;
for(i=0; i<lim && (c=getchar())!=EOF && c!='\n'; i++)
t[i]=c;
return i;
}
main()
{
int s, i, osszeg, szamok;
char tomb[20];
printf("Adj meg egy 6 szamjegyu kodot: ");
while((s=getline(tomb,20))!=0)
{
osszeg=0;
szamok=0;
if(s>0 && s!=6)
{
printf("A kod nem 6 szambol all!\n");
printf("Adj meg egy 6 szamjegyu kodot: ");
continue;
}
if(s==6)
{
for(i=0; i<6; i++)
if(tomb[i]>='0' && tomb[i]<='9')
szamok++;
}
if(s==6 && szamok!=6)
{
printf("Nem jo a kod, csak szamokat tartalmazhat!\n");
printf("Adj meg egy 6 szamjegyu kodot: ");
continue;
}
if(szamok==6)
{
for(i=0; i<5; i++)
osszeg+=tomb[i]-'0';
}
if((osszeg%6)==(tomb[5]-'0'))
{
printf("Jo a kod!\n");
fflush(stdin);
printf("Adj meg egy 6 szamjegyu kodot: ");
}
else
{
printf("Nem jo a kod!\n");
fflush(stdin);
printf("Adj meg egy 6 szamjegyu kodot: ");
}
}
} -
wiggen123
senior tag
válasz
cellpeti
#672
üzenetére
az isalnum a ctype.h ansi c könyvtárban van, ez része minden c implementációnak, szóval nyugodtan használhatod. Itt egy jó referencia: [link]
A feladatodhoz az én verzióm: beolvasni használd a gets() függvényt, az char*-ot ad vissza. menj végig a karaktertömbön amíg össze kell adni őket, vedd ki őket egy 2 hosszú sztringbe, 0. karakter a számjegy 2. a \0, használd az atoi konverziós függvényt hogy számmá alakítsd, így már össze tudod adni őket. A ciklusból kilépve az utolsó számjegyet ugyanígy számmá alakíthatod és ellenőrizheted.
ZH-n érdemes megkérdezni, hogy feltételezheted e, hogy helyesek az input adatok. Tipikusan nem arra kíváncsiak még akkor, hogy ki tudod e szűrni az összes kivételes helyzetet, hanem, hogy az alapokkal tisztába vagy e.
-
Benmartin
senior tag
válasz
cellpeti
#667
üzenetére
valami ilyesmi:
#include <stdio.h>
int getline()
{
int sum = 0, i = 0, c, hatodik;
while((c = getchar()) && isalnum(c))
{
sum += c - '0';
hatodik = c - '0';
i++;
}
sum -= hatodik;
if(i != 6 || sum % 6 != hatodik) return 0;
return 1;
}
int main()
{
if(getline())
{
puts("Helyes!");
} else puts("Hibas");
getchar();
return 0;
} -
Jester01
veterán
válasz
cellpeti
#664
üzenetére
Pl. kiveszed a 0 lezárást a getline függvényből, mert úgysem kell. Ugyanakkor az i növelését beleteszed a while ciklusba is. Így tehát a függvény legfeljebb 6 karaktert ír a tömbbe (ezzel a túlcsordulás megoldva) és a visszatérési érték alapján pedig a main-ben ellenőrizheted a hosszt (nem kell strlen).
-
Jester01
veterán
válasz
cellpeti
#658
üzenetére
Igen, a bekért számjegyek tömbjén megy végig, összedva őket. Azért nem <= kell mert a tömbök indexelése 0-val kezdődik. Tehát az első 5 számjegy a 0,1,2,3,4 indexeken van.
A string hosszát valóban az strlen adja meg, de mivel a te beolvasó függvényed eleve nem ad vissza csak 6 karaktert, ezért ezzel azt nem tudod kiszűrni ha többet írnak be. Ehhez a beolvasásnál kellene ellenőrizni, hogy pontosan 6 karaktert írtak-e be.
MOD: sőt, mivel egy lezáró 0 byteot is tesz, rögtön túl is címzi a 6 elemű tömböt. Uppsz. -
Jester01
veterán
válasz
cellpeti
#656
üzenetére
Azok azért vannak, hogy megkapd a számjegyek értékét. A 0 ascii kódja (ahogy a stringben van) ugyanis 48 (másnéven '0'). Szerencsére innen sorban jön a többi 9 számjegy, tehát sima kivonással meg lehet kapni a számértéket.
Egyébként a string hosszának ellenőrzése még nincs meg.
-
doc
nagyúr
válasz
cellpeti
#559
üzenetére
kezdesnek nem rossz

de a getchar az getchar(), mivel fuggvenyt hivsz meg
a while magjaba meg be kell rakni az ellenorzest, ami a t, s vagy u erteket noveli, annak megfeleloen hogy mi volt a beolvasott karakter
persze ahhoz, hogy ellenorizni tudd, be kell tenni egy valtozoba az erteket -
doc
nagyúr
válasz
cellpeti
#554
üzenetére
1) nem valaszoltal a kerdesre
2) a stilusodon nem artana csiszolni
3) most megis hogy varod el hogy a kod ismerete nelkul megmondja valaki, hogy adott valtozot mire hasznal?
4) ebben az esetben viszont NAGYON minimalis gondolkodassal teljesen egyertelmu a valasz
5) ha a konyv olvasasa soran ennyire nincs lovesed sem a feladatok megoldasarol, akkor olvasd el meg egyszer az adott fejezetet... -
válasz
cellpeti
#538
üzenetére
Hali!
Gyorsan megcsináltam(több megoldás is létezik persze), mielött ellépek itthonról. Ha valami nem tiszta írj. Késő este vagy holnap leszek majd.
(mivel ez csak példa, nem foglalkoztam azzal hogy kitudja mekkora számot lehessen beírni, ezért 2 gigánál nagyobbat ne írj be, mert hibásan fog működni. Bár kipróbálhatod
)#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define C_Y 14
int cimlet[C_Y] = {20000,10000,5000,2000,1000,500,200,100,50,20,10,5,2,1};
int hanyszor[C_Y] = {0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0,0,0};
int main()
{
long int i, cash;
char money[255];
printf("Enter money: ");
if (!strlen(gets(money))) {
printf("\n\nMoney not found...EXIT");
return -1;
}
printf("\n\n");
for (i=0;i<strlen(money);i++)
if(money[i]<'0' || money[i]>'9') {
printf("Is NAN [Not A Number]...\nEXIT");
return -1;
}
cash=atoi(money);
for (i=0;i<C_Y;i++) {
hanyszor[i]=cash / cimlet[i];
cash-=hanyszor[i]*cimlet[i];
if (hanyszor[i]) printf("%5d db\t %d\n",hanyszor[i],cimlet[i]);
}
return 0;
}Fire.
-
-
PazsitZ
addikt
válasz
cellpeti
#527
üzenetére
Azért írtam oda, hogy "letárolod a címletet"
Bár osztással tényleg gyorsabb.
Megtaláltam egy régi pascalos forráskódom.
Ez bankautomata és csak pár értékes, de hátha segít:write('K‚rt ”sszeg:');readln(be);
x:=be mod 1000;
if x<=0 then begin
y:=(be div 1000);
if y mod 10>=0 then begin
ossz10:=y div 10;
be:=y mod 10;
end;
if y mod 5>=0 then begin
ossz5:=be div 5;
y:=be mod 5;
end;
if y mod 1>=0 then begin
ossz1:=y div 1;
be:=y mod 5;
end;
writeln('kiadand˘ cˇmletek:');
writeln('10000ft-os cˇmlet:',ossz10:8:0);
writeln('5000ft-os cˇmlet:',ossz5:8:0);
writeln('1000ft-os cˇmlet:',ossz1:8:0);
end
else begin
writeln('Minimum 1000,5000,10000ft-os cˇmletek vehet‹ ki');
end; -
PazsitZ
addikt
válasz
cellpeti
#525
üzenetére
Haladsz a legnagyobb címlettől a legkisebbig. Ezeket berakhatod egy tömbbe. [20000,10000,5000...]
Ha az összeg nagyobb, mint a címlet: kivonod a címletet a pénzösszegből, letároloda címletet majd újravizsgálod.
Ha kisebb: kisebb címletre lépsz.
Ha a pénzösszeg nulla kiírod a letárolt címleteket.Szvsz ha aktualizálni akarod beolvasásnál szabd ki, hogy 5-re vagy nullára végződjön a pénzösszeg.
Ú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!
- Game Pass Ultimate előfizetés azonnal, problémamentesen, méghozzá OLCSÓN! Immáron 8 éve!
- BESZÁMÍTÁS! Asrock B450M R5 5600X 16GB DDR4 512GB SSD RX 6700 10GB Zalman T4 PLUS A-Data 750W
- Apple iPhone 13 128GB, Kártyafüggetlen, 1 Év Garanciával
- Honor 90 512GB, Kártyafüggetlen, 1 Év Garanciával
- LG 27GP95RP - 27" Nano IPS - UHD 4K - 160Hz 1ms - NVIDIA G-Sync - FreeSync Premium PRO - HDR 600
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest
Cég: Laptopműhely Bt.
Város: Budapest

Azért remélem segítettem valamit.




)


