Hirdetés
- Bemutatkozott az Oppo kamerás csúcsmodellje
- Google Pixel 10 Pro XL – tíz kicsi Pixel
- VoLTE/VoWiFi
- iPhone topik
- Xiaomi 15T Pro - a téma nincs lezárva
- Egy picit megpihen az iPhone a 200 megapixeles váltás előtt
- Xiaomi 17 Ultra - jó az optikája
- Xiaomi 14T - nem baj, hogy nem Pro
- Samsung Galaxy A52s 5G - jó S-tehetség
- Nothing Phone 2a - semmi nem drága
Ú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.
-
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!
- The Division 2 (PC, XO, PS4)
- Apple MacBook
- Bemutatkozott az Oppo kamerás csúcsmodellje
- LCD, plazma és projektoros TV-k hibái
- f(x)=exp(x): A laposföld elmebaj: Vissza a jövőbe!
- Google Pixel 10 Pro XL – tíz kicsi Pixel
- Mikrotik routerek
- Vicces képek
- VoLTE/VoWiFi
- Milyen asztali (teljes vagy fél-) gépet vegyek?
- További aktív témák...
- CoreI5,13600KF,14/20/GIGABYTE,B760M-DS3H,KINGSTON DDR4 32GB, RTX5060TI, 16GB/, 2TB T.hely/ GARI/Win!
- Web automatizálás és automatizált tesztelés - spórolj napi több órát
- Bérelhető csúcskategóriás PC RTX 5090-vel - Ryzen 7/9, DDR5 ram
- ASRock Radeon RX 9060 XT Challenger OC 16GB - INGYEN FOXPOST
- Picit hibás - iPhone 12 PRO MAX 256GB - Grafit - Új 100% akkuval
- BESZÁMÍTÁS! Asus TUF Gaming OC RTX 4080 16GB videokártya garanciával hibátlan működéssel
- BESZÁMÍTÁS! GIGABYTE B760M i5 13600K 32GB DDR4 1TB SSD RTX 4070 Super 12GB Lian Li Vector V100R 650W
- AKCIÓ! BESZÁMÍTÁS! Részletfizetés 0% THM ÚJ RTX 5090 több típusban 3 év garanciával 27% áfával
- Thrustmaster TMX Force Feedback Kormány szett 3 hónap Garancia Beszámítás Házhozszállítás
- LG SMART 32SR50F-W IPS Monitor! 1920x1080 / 8ms / 60hz
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest


