- Samsung Galaxy A55 - új év, régi stratégia
- Samsung Galaxy A56 - megbízható középszerűség
- A lapkakészlet és az akku különbözteti meg a Motorola Edge 60 és Edge 60 Pro-t
- Google Pixel topik
- Nem lett arányos a fogyókúra
- Apple iPhone 16 Pro - rutinvizsga
- Csíkszélességben verné az Exynos 2600 a Snapdragon 8 Elite 2-t
- Karaktere biztos lesz az első Nothing fejhallgatónak
- Samsung Galaxy Watch (Tizen és Wear OS) ingyenes számlapok, kupon kódok
- Íme az új Android Auto!
Új hozzászólás Aktív témák
-
cattus
addikt
válasz
kkdesign #8751 üzenetére
Felteszem mostanában kezdtél programozni, így én nem igazán ajánlanék még Linq-s megoldást, az egy ilyen bonyolultságú feladatra ágyúval verébre kategória.
Gondold végig, mi a probléma és hogyan lehetne megoldani. Leírom az én gondolatmenetemen (kódot szándékosan nem, jobb, ha azt magad vezeted le):
Hozz létre egy változót, amiben tárolod az eddigi leghosszabb sorozat hosszát (kezdetben 0, legyen a neve mondjuk max_lenght). Végig kell iterálni a tömbön. Minden számra meg kell nézni, hogy 0-e, vagy nem. Ha nem nulla, akkor ugye ahogy te is gondoltad, növelsz egy számlálót (legyen a neve mondjuk current_lenght, kezdetben 0 ez is). Ha nullát találsz, akkor megnézed, hogy a most talált sorozatod hosszabb-e, mint az eddigi. Ha igen, akkor felülírod a max_lenght-et, és nullázod a current_lenght-et.
-
moseras
tag
válasz
kkdesign #8751 üzenetére
Hello,
Nem teljesen tiszta, hogy mit is akarsz pontosan, valami ilyenre gondoltál ?
static int convert(List<int> l1)
{
int ret = 0;
foreach (var e in l1)
{
ret *= 10;
ret += e;
}
return ret;
}
static void Main(string[] args)
{
var szamok = new List<int>() { 0,0,1,5,7,3,0,0,1,2,3,0,0,5,8,7,4,5,0,1,2,5,8,9 };
// Az eredeti számsorozat
Console.WriteLine($"Az eredeti számsorozat: { string.Join("", szamok) }");
// A nem 0 értékű számjegyek száma
var c1 = szamok.Count(x => x != 0);
Console.WriteLine($"A nem 0 értékű számjegyek száma: { c1 }");
var temp = new List<int>();
var leghosszabb_szamok = new List<int>();
int maxx = 0;
foreach (var item in szamok)
{
if (item != 0)
{
temp.Add(item);
}
else
{
if (temp.Count > 0 && temp.Count >= maxx)
{
leghosszabb_szamok = leghosszabb_szamok.Where(n => Math.Floor(Math.Log10(n) + 1) >= maxx).ToList();
leghosszabb_szamok.Add(convert(temp));
maxx = temp.Count();
}
temp.Clear();
}
}
if (temp.Count > 0 && temp.Count >= maxx)
{
leghosszabb_szamok = leghosszabb_szamok.Where(n => Math.Floor(Math.Log10(n) + 1) >= maxx).ToList();
leghosszabb_szamok.Add(convert(temp));
}
// A leghosszabb számjegyű szám(ok)
Console.WriteLine($"A leghosszabb számjegyű szám(ok): { string.Join(", ", leghosszabb_szamok) }");
// A leghosszabb számjegyű szám(ok) jegyeinek száma
Console.WriteLine($"A leghosszabb számjegyű szám(ok) jegyeinek száma: { maxx }");
}Eredmény:
Az eredeti számsorozat: 001573001230058745012589
A nem 0 értékű számjegyek száma: 17
A leghosszabb számjegyű szám(ok): 58745, 12589
A leghosszabb számjegyű szám(ok) jegyeinek száma: 5Ha jól értem, akkor neked kellene
- az eredeti sorozat nem 0 elemeinek száma
- a leghosszab jegyű szám(ok) külön listába gyűjtve
- a leghosszab jegyű szám(ok) jegyeinek számaImi.
-
sztanozs
veterán
válasz
kkdesign #4010 üzenetére
Exception-re, ha nem tudod pontosan mit kell elkapni:
az a legyegyszerűbb, hogy csinálsz egy általános Exception catch-et és debuggerrel megnézed, hogy pontosan milyen kivételt dob...Amúgy meg ne sima parse-ot használj, hanem tryparse-ot és akkor nem kell kivételkezelés sem...
-
Ezekiell
veterán
válasz
kkdesign #4000 üzenetére
Hú, hát ha ennyire alapok hiányoznak, akkor szerintem kezdd először az elmélettel:
Az int (Int32) egy típus, ami numerikus egész értékeket tud tárolni. Természetesen van ennek egy határa is: -2,147,483,648 és 2,147,483,647 között tud tárolni.
Ha ennél nagyobb számok kellenek, akkor a Decimal/BigInteger típusok a barátaid - de egyelőre legyen elég az int, és inkább az alapokat vedd át. Ajánlom Reiter István jegyzetét!
A FormatException pedig pont az, amit keresel: akkor dobja, ha nem számot írtál be, pl betűt.
-
-
kkdesign
senior tag
válasz
kkdesign #4008 üzenetére
mégis lenne még gondom mert nem elég a dolog... kellene egy olyan kivételkezelés, hogy típusra, Egyet tettem overflowra, az addig jó, de kell egy ami nem minden hibát kap el, hanem akkor kapja el, ha nem szám, ergo ha nem int.
szerk: NotFiniteNumberException ezt találtam, ezzel jó lesz? mert el elkapja csak kérdés azért-e... -
Ezekiell
veterán
válasz
kkdesign #3991 üzenetére
Double.TryParse kell neked, vagy:
Nem kell kivételkezelés, egy sima if is megteszi:
if (Regex.IsMatch("124124125,1", @"^[1-9,]-*[0-9,\.]+$"))
{
// helyes szám
} else {
// nem helyes szám
}Ez a reguláris kifejezés C#-ban. Az alábbi oldalon tudod tesztelni a kifejezéseket: Rubular. A neked szükséges regexp a kódban van.
-
Jester01
veterán
válasz
kkdesign #3991 üzenetére
Ajánlom inkább a Double.TryParse metódust.
-
kkdesign
senior tag
Ú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!
- Autós topik
- Samsung Galaxy A55 - új év, régi stratégia
- Samsung Galaxy A56 - megbízható középszerűség
- sziku69: Fűzzük össze a szavakat :)
- Bestbuy játékok
- Milyen processzort vegyek?
- A lapkakészlet és az akku különbözteti meg a Motorola Edge 60 és Edge 60 Pro-t
- Motoros topic
- Macska topik
- Audi, Cupra, Seat, Skoda, Volkswagen topik
- További aktív témák...
- Szép Hp Pavilion 15-eg Kis Gamer Laptop 15,6" -45% Bivaly i7-1165G7 16/512G FHD IPS Iris Xe
- EJJ! Dell Latitude 7330 -65% "Kis Gamer" Üzleti Profi Ultrabook 13,3" i5-1245U 16/512 FHD IRIS Xe
- i5 10500/ RX6600XT/32GB DDR4/ 512GB m.2 alapú konfig/ garancia/ ingyen foxpost
- Szép Dell Latitude 7320 -60% "Kis Gamer" Üzleti Profi Ultrabook 13,3" i7-1185G7 32/512 FHD IRIS Xe
- LG NanoCell 50NANO759PR
- Bomba ár! Lenovo ThinkPad X260 - i5-6G I 8GB I 256GB SSD I 12,5" HD I HDMI I CAM I W10 I Gari!
- BESZÁMÍTÁS! ASUS B450 R7 2700X 16GB DDR4 512GB SSD RTX 2060 Super 8GB Zalman i3 FSP 600W
- BESZÁMÍTÁS! XFX MERC 310 RX 7900 XTX 24GB videokártya garanciával hibátlan működéssel
- Samsung Galaxy Watch Ultra
- ASUS TUF Gaming F16
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest
Cég: PC Trade Systems Kft.
Város: Szeged