Hirdetés
- AMD K6-III, és minden ami RETRO - Oldschool tuning
- AMD Navi Radeon™ RX 9xxx sorozat
- Projektor topic
- Régóta ott van a fiókban az Intel válasza az AMD-féle 3D V-Cache-re
- Kormányok / autós szimulátorok topikja
- Pánik a memóriapiacon
- Fejhallgató erősítő és DAC topik
- Milyen videókártyát?
- Milyen notebookot vegyek?
- Vezetékes FEJhallgatók
Ú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
● ha kódot szúrsz be, használd a PROGRAMKÓD formázási funkciót!
- AMD K6-III, és minden ami RETRO - Oldschool tuning
- AMD Navi Radeon™ RX 9xxx sorozat
- Projektor topic
- Régóta ott van a fiókban az Intel válasza az AMD-féle 3D V-Cache-re
- Kormányok / autós szimulátorok topikja
- Formula-1
- Pánik a memóriapiacon
- Kiadta Sam Altman a parancsot: bajban a ChatGPT!
- Fejhallgató erősítő és DAC topik
- PlayStation 5
- További aktív témák...
- Google Pixel 10 Pro XL Moonstone Super Actua 120 Hz, Pro kamera 5 zoom 256 GB Használt,Gari
- OnePlus Nord 2T 128GB, Kártyafüggetlen, 1 Év Garanciával
- BESZÁMÍTÁS! Asus B150-Pro i5 6500 8GB DDR4 250GB SSD 1TB HDD GTX 1050Ti 4GB Rampage SHIVA 450W
- Gamer PC-Számítógép! Csere-Beszámítás! I3 14100F / RTX 3060Ti / 16GB DDR5 / 1TB SSD
- GYÖNYÖRŰ iPhone 13 128GB Pink -1 ÉV GARANCIA - Kártyafüggetlen, MS3431, 100% Akkumulátor
Állásajánlatok
Cég: BroadBit Hungary Kft.
Város: Budakeszi
Cég: ATW Internet Kft.
Város: Budapest



