- iPhone topik
- Profi EKG-s óra lett a Watch Fitből
- Mobil flották
- Apple iPhone 16 Pro - rutinvizsga
- Motorola Edge 50 Neo - az egyensúly gyengesége
- Samsung Galaxy S24 FE - később
- Samsung Galaxy S24 Ultra - ha működik, ne változtass!
- Samsung Galaxy S21 FE 5G - utóirat
- Honor Magic6 Pro - kör közepén számok
- Íme az új Android Auto!
Új hozzászólás Aktív témák
-
válasz
Neil Watts #6849 üzenetére
[link] ezt még tanulmányozd.
-
Froclee
őstag
válasz
Neil Watts #6853 üzenetére
vagy mikor belerakod a listába, csekkolod, hogy létezik-e már kettővel kisebb elem. ha igen, akkor belerakod egy másik listába.
-
Andraszz
újonc
válasz
Neil Watts #6853 üzenetére
De hogy?
Nagyon kezdő vagyok programozás terén -
fatal`
titán
válasz
Neil Watts #6845 üzenetére
Szia!
Én így csináltam:
public static string RemoveAccents(this string sourceString)
{
var normalizedString = sourceString.Normalize(NormalizationForm.FormD);
var stringBuilder = new StringBuilder(normalizedString);
for (var i = 0; i < stringBuilder.Length; i++)
{
if (CharUnicodeInfo.GetUnicodeCategory(stringBuilder[i]) == UnicodeCategory.NonSpacingMark)
{
stringBuilder.Remove(i, 1);
}
}
return Regex.Replace(stringBuilder.ToString(), "[^A-Za-z0-9_.]", "");
}Mondjuk ez csak betűket, számokat, aláhúzás jelet és pontot enged a szövegbe, de innen már könnyen átírod, ha jól rémlik elég ha kiveszed a regex replacet a végéről.
Fájlnévhez használtam (még van előtte egy szóköz törlés is, csak azt kitöröltem, de csak most vettem észre, hogy neked nem tökéletes.
-
Keem1
veterán
válasz
Neil Watts #6845 üzenetére
Látom, kaptál tippeket, de azért bemásolom az én verziómat.
function convertString(phrase)
{
var returnString = phrase.toLowerCase(); // Ez nem biztos, hogy kell neked
returnString = returnString.replace(/á/g, 'a');
returnString = returnString.replace(/é/g, 'e');
returnString = returnString.replace(/í/g, 'i');
returnString = returnString.replace(/ö/g, 'o');
returnString = returnString.replace(/ő/g, 'o');
returnString = returnString.replace(/ü/g, 'u');
returnString = returnString.replace(/ű/g, 'u');
returnString = returnString.replace(/ú/g, 'u');
returnString = returnString.replace(/ó/g, 'o');
return returnString;
}PHP-ban csináltam, ott egy lépésben, tömb segítségével regex megoldotta. Persze a listát lehet bővíteni tetszés szerint.
-
Karma
félisten
válasz
Neil Watts #6845 üzenetére
Az ISO-8859-8-at nem ismerem, de az biztos, hogy ha nem is a legrövidebb, ez a helyes megoldása a feladatnak. Nem csak magyar karakterek léteznek a világban.
Javaban annyival könnyebb a helyzet, hogy regexszel ki lehet szűrni a non-spacing markokat, így nem kell karakterenként bejárni.
-
rgeorge
addikt
válasz
Neil Watts #6845 üzenetére
Valahogy így:
string EkezetNelkul(string sz)
{
byte[] b = Encoding.GetEncoding("ISO-8859-8").GetBytes(sz);
return Encoding.UTF8.GetString(b);
} -
yksz
aktív tag
válasz
Neil Watts #4414 üzenetére
Hát több fura dolog is van a kódba. Pl ha egyszer beállítasz egy datasource-t utána nem adhatsz hozzá semmit az itemhez, csak a datasourzhoz. A gond pedig ott van, hogy az adatokat nem törlöd és mindig az összeset hozzáadod. Vagyis első gombnyomásra az adatokba beírod a beolvasott értéket, majd az adatok tartalmát (1 elem) hozzáadod a listboxhoz). Második gombnyomásra az adatokhoz HOZZÁADOD az újabb adatot így már két elem lesz benne, majd ismételten az összeset vagyis mindkét elemet HOZZÁADOD a listboxhoz, vagyis ott lesz a régi is és az új is. Erre megoldás ha törtlöd a listbox itemeket, vagy itt is datasourceként adod meg azt. Ami fura a kódban még, hogy
if (bemeno_adat_Sz > 0 && bemeno_adat_Hossz <= WHD.Length)
Biztos hogy egyszer SZ másodszor pedig Hossz-t akarsz vizsgálni? Nem tudom a logikát lehet hogy így jó csak fura. Illetve a breakes whileok is furák, helyette csak egy if-et használnék. -
j0k3r!
őstag
válasz
Neil Watts #4042 üzenetére
osszedobtam egy ilyet, remelem ez alapjan mar menni fog. amire viszont figyelj oda:
- hasznalj valami modelt, ami reprezentalja az osszetartozo adatokat
- 1 db taroloban tarold el a beolvasott dolgokat (ahogy az en peldamban is), felhasznalva a modelled
- a file beolvasasnal hasznald a using blokkot nyugodtan, mivel a StreamReader IDisposablemod: a kod reszben Athlon64+ kollega muve
[ Módosította: philoxenia ]
-
j0k3r!
őstag
válasz
Neil Watts #4040 üzenetére
megint csak azt tudom mondani, hogy mutass kodot. mi az a nap? hogy jon letre? peldaadatokkal mutasd meg, hogy mit szeretnel vele csinalni. egyebkent az ilyen __OrDefault() metodusoknal erdemes null-t ellenorizni hasznalat elott.
-
j0k3r!
őstag
válasz
Neil Watts #4036 üzenetére
Athlon64+ peldaja alapjan:
var utolso = from m in list where m.A == 7 select m;
-
vlevi
nagyúr
válasz
Neil Watts #4033 üzenetére
"ha a lista első számhármasának harmadik tagját szeretném elérni "
Kicsit átcsavartam, és az orderby helyett írtam belőle linq-t, ami után már elő lehet szedni a harmadik elemet. Természetesen, ha van harmadik elem. Mert ha nincs, abból exception lesz...A változás:
var sorrend = (from x in listam orderby x.ertek1 select x);Aztán már egyszerű:
var harmadik= sorrend.ElementAt<Sor>(3);
Console.WriteLine("{0} {1} {2}", harmadik.ertek1, harmadik.ertek2, harmadik.ertek3);u.i.: Igazat megvallva, arra nincs szükség, hogy a "var sorrend = listam.OrderBy(x => x.ertek1);" helyett linq kifejezést használjunk, mert a listam.orderby extension is ugyanazt az IEnumerable-t adja vissza, mint amit a linq-val kapot, és ugyanúgy mehet rajta az ElementAt. Kipróbáltam működik mindkét verzióban.
-
Peter Kiss
őstag
válasz
Neil Watts #4026 üzenetére
Miért olvasnád be külön-külön az adatokat, mikor egy sor egy valamit jelent? (Ugyanez vonatkozik a Tuple alkalmazására: átmeneti tároló olyan alkalmazásban, ahol van már model azokra az adatokra, akkor WTF?)
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
namespace ConsoleApplication1
{
internal class Model
{
public int A { get; set; }
public int B { get; set; }
public int C { get; set; }
}
class Program
{
static void Main(string[] args)
{
var list = new List<Model>();
using (var sr = new StreamReader("tavok.txt"))
{
while (!sr.EndOfStream)
{
var line = sr.ReadLine();
if (string.IsNullOrWhiteSpace(line))
{
throw new Exception("Empty line");
}
var parts = line.Split(' ');
list.Add(new Model
{
A = int.Parse(parts[0]),
B = int.Parse(parts[1]),
C = int.Parse(parts[2])
});
}
}
list = list.OrderBy(x => x.A).ToList();
}
}
} -
j0k3r!
őstag
válasz
Neil Watts #4024 üzenetére
mutasd mar meg a kodot, onnantol kezdve, hogy elkezdodik a file-bol olvasas. ahhoz, hogy tobbet tudjunk segiteni, jo lenne latni, hogy milyen strukturat hasznalsz az adatok tarolasara.
amit most mutattal peldat, arra gyakorlatilag eleg egy OrderBy is, viszont, ha van mondjuk 2 db 1-el kezdodo adatod, akkor nem fogja a masodik elem szerint novekvo sorrendbe rendezni, hanem csak egymas utan pakolja oket, ahogy a txt file-ban vannak.
mod: ha teljes kodot mutatsz, az se lenne baj
-
j0k3r!
őstag
válasz
Neil Watts #4018 üzenetére
valami ilyesmire gondoltam. itt most A szerint csoportositva, es B szerint rendezve vannak az elemek.
-
ferensz
senior tag
válasz
Neil Watts #4016 üzenetére
Esetleg meg a beolvasott ertekparokat pakolhatnad tuple-okbe is, amik meg mehetnek egy darab listaba, es utana a tuple elso item-je alapjan rendezhetsz, igy a hozza tartozo ertekparok is arrebb vandorolnak a rendezesednek megfeleloen.
-
Ezekiell
veterán
válasz
Neil Watts #4018 üzenetére
Ha összetartozó értékek, akkor tárold őket egy Dictionary-ben, ahol mondjuk az a integer a key, b és c pedig a value, pl így:
Dictionary<int, ValuePair> dictionary = new Dictionary<int, ValuePair>();
ahol a ValuePair egy struct:
struct ValuePair
{
public int Value1;
public int Value2;
}Ezek után már LINQ-val, az OrderBy-al tudod rendezni a Dictionary-t:
var items = from pair in dictionary
orderby pair.Key ascending
select pair;az items ugye egy KeyValuePair<int, ValuePair> struktúra lesz.
-
j0k3r!
őstag
válasz
Neil Watts #4016 üzenetére
-
vlevi
nagyúr
válasz
Neil Watts #3964 üzenetére
Hát, igen, ilyenekre van a Linq, hogy az ember ne az ilyen kereső, sorrendező, satöbbi kódokra pazarolja az energiát.
De ha ez egy suli feladat, akkor gondolom a tanár nem venné jó néven az ilyenfajta megoldástusing System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Termekkereso
{
class Termek
{
internal double Ertek;
internal double Suly;
internal string Nev;
}
class Program
{
static void Main(string[] args)
{
Termek[] Termekek =
{
new Termek { Ertek = 10, Suly = 5, Nev = "lila" },
new Termek { Ertek = 15, Suly = 22, Nev = "lila" },
new Termek { Ertek = 20, Suly = 4, Nev = "lila" },
new Termek { Ertek = 22, Suly = 15, Nev = "Joli" },
new Termek { Ertek = 27, Suly = 7, Nev = "Joli" },
new Termek { Ertek = 30, Suly = 59, Nev = "Joli" },
new Termek { Ertek = 40, Suly = 9, Nev = "karton" },
new Termek { Ertek = 45, Suly = 1, Nev = "karton" }
};
double keres = 22;
Termek talalat = (from x in Termekek where x.Ertek == keres select x).First();
if (talalat == null)
{
Console.WriteLine("Nincs találat");
}
else {
Console.WriteLine("Találat {0} {1} ", talalat.Nev,talalat.Suly);
}
Console.ReadLine();
}
}
} -
Peter Kiss
őstag
válasz
Neil Watts #3954 üzenetére
Ilyet hol a viharba' csinálnak?
StreamReader sr = new StreamReader(@"termek.txt");
Itt marad az idők végezetéig, vagy mi?
Plusz a rendezésekhez, keresésekhez miért nem lehet használni az IEnumerable<T> extension-öket? Még a végén olvasható lesz, mit is akarsz csinálni? Mert a kézi legózás nem lesz gyorsabb ennél ebben a formájában az biztos.
-
Jester01
veterán
válasz
Neil Watts #3960 üzenetére
Ott az a foreach amit mutattál, tegyél bele egy if-et hogy a nullásat/üreset ne tegye bele.
-
Jester01
veterán
válasz
Neil Watts #3958 üzenetére
Igen, ez az egész tömböt rendezi. Esetedben a legegyszerűbb ha a listbox-ba pakoláskor ezeket kiszűröd.
Alternatív lehetőség másik Array.Sort overload használata vagy LINQ Take+OrderBy.
Persze az is kérdés, hogy miért van tömböd List helyett. -
Jester01
veterán
válasz
Neil Watts #3956 üzenetére
Ez valóban struct tömb, de a függvényed int tömböt vár. A ref-et pedig a hívásból és a függvényből is ki kell szedni. Itt pedig egy példa Array.Sort használatával.
-
Jester01
veterán
válasz
Neil Watts #3954 üzenetére
Mivel magát tömböt nem módosítod csak az elemeket, így nem kell a ref.
Ha nincs kikötés a kézi rendezésre akkor persze ott vannak a beépített függvények mint például az Array.Sort.Viszont amit írtál az nem struct-ból van, csak szólok
-
fatal`
titán
válasz
Neil Watts #3916 üzenetére
"Megnéztem a kódodat most, s vannak benne érdekességek. tömböt forral az életben nem fogsz tudni feltölteni."
Hogy micsoda? Miért is?
-
Zedz
addikt
válasz
Neil Watts #3916 üzenetére
Nem akkor kell for amikor előre tudjuk, hogy mennyi lépésszámra van szükség? Legalábbis nekem így tantják, hogy a while csak akkor kell ha nem tudjuk meddig fog futni a ciklus.
-
Karma
félisten
válasz
Neil Watts #3916 üzenetére
"Megnéztem a kódodat most, s vannak benne érdekességek. tömböt forral az életben nem fogsz tudni feltölteni. While, s int elemszam bevezetése ajánlott véleményem szerint. "
Ezt kifejthetnéd kicsit, mert innnen nézve eléggé a valóságtól elrugaszkodott kijelentés és tanács.
-
Peter Kiss
őstag
válasz
Neil Watts #3598 üzenetére
meresek[i + 2]
Itt indexeled túl (nem tömb, hanem a benne lévő adatok szempontjából), de egyébként ilyesmi lenne:var ujMeres = new List<string> {"ide berakod", "amit akarsz"};
ujMeres.AddRange(meresek.Select(x => x.ToString(CultureInfo.InvariantCulture))); //esetleg kell egy ToList() -
Peter Kiss
őstag
válasz
Neil Watts #3596 üzenetére
Az eltolást hogyan szeretnéd kivitelezni, ahol eddig a 0. volt, ott lesz a 2. és az utolsó előtti lesz a 0.? Meg mintha túlindexelnéd a meresek tömbödet.
A hónapok nevét tudja a .NET is CultureInfo-ból.
Nem lenne jobb tömbök helyett List<T>-t használni?
A felmegnyitásod rossz, közvetlenül az olvasásnál hívd meg pl. using operátorral (vagy manuálisan try-catch-finally).Feleslegesen nem kell növelni a kódodat:
buttonOK.Enabled = textBoxHonapBe.Text == honap[0]; -
Szabesz
őstag
válasz
Neil Watts #3589 üzenetére
De a kód nem éppen ezt tükrözi. Gondold át még egyszer az egészet, aztán írd meg az elejétől.
for (int i = 0; i < meret; i++)
{
listBoxKi.Items.Add(homerseklet[i]);
for (int j = 0; j < meret; j++)
{
ujhomerseklet[0] = honapok[0];
ujhomerseklet[j + 1] = Convert.ToString(homerseklet[i]);
for (int k = 0; k < ujhomerseklet.Length; k++)
{
fki.WriteLine(ujhomerseklet[k]);
}
}
}Ami most történik:
-kezdődik a legkülső ciklus, i=0, listBoxKi-be belekerül homerseklet[0], majd megindul a belső ciklus j=0, ahol ujhomerseklet[1]-től ujhomerseklet[meret]-ig beállítódik homerseklet[ i ]-vel. Ugyanakkor összesen 1240-szer írsz fki-be többnyire null-okat.
-Majd i=1 és így tovább...
....
-Végül nem zárod be fki-t, ezért nem is nagyon fogod látni a tartalmát.Ez ugye elég értelmetlen.
-
Szabesz
őstag
válasz
Neil Watts #3587 üzenetére
Nem jött át mit is szeretnél csinálni.
A kódban viszont vannak érdekes dolgok, Form1_Load-ban beállítod a selectedindexet, majd ráifelsz, hogy mi az értéke.
Meg ott van a hármas for ciklus, ahol
ujhomerseklet[0] = honapok[0];
meret*meret-szer állítódik be fölöslegesen, afor (int k = 0; k < ujhomerseklet.Length; k++)
{
fki.WriteLine(ujhomerseklet[k]);
}
rész is igen egzotikus dolgokat művelhet (meret*meret-szer lefut ez is), főleg, hogy fki nem lett bezárva (tipp: használj using blokkot) -
Szabesz
őstag
válasz
Neil Watts #3584 üzenetére
Ezt írtam le... hogy a rendszered a vesszőt veszi alapból elválasztónak, nem a pontot.
Ha te definiálod neki, hogy mit értelmezzen tizedes elválasztónak, akkor működni fog, ahogy a fenti mintakód is működik. Próbáld ki. -
Szabesz
őstag
válasz
Neil Watts #3581 üzenetére
double.parse vagy double.tryparse-vel próbálkoznék inkább.
szerk: több mint valószínű, hogy a fentiek is elhasalnak majd nálad, mert a tizedes elválasztó az esetedben a pont lesz és nem a vessző. [link] definiálsz egy megfelelő providert, és menni fog.
-
válasz
Neil Watts #3191 üzenetére
Megoldva ez is... További jó napot!
MOD: Elnézést, a túl sok egymásutáni hszért.
-
bpx
őstag
válasz
Neil Watts #3188 üzenetére
legyen a kitalálandó szám a Form tagváltozója, a Loadban adsz neki értéket random.next-tel
a Form egy másik változója legyen a próbák száma 0 kezdőértékkel
gombnyomásnál vizsgálsz + növeled a próbák számát, semmilyen for ciklus nem kell
ha a próbák száma elérte a 7 és nem találta ki, game over -
bpx
őstag
válasz
Neil Watts #3185 üzenetére
1. rakd oda, ami nem hívódik meg minden gombnyomásnál
2. a kívánt működést megvalósítja ránézésre, de gondolkodj rajta kicsit, és rájössz, hogy nem kell háromszor (kilencszer!) megírni ugyanazt
egy eseménykezelőt lehet több gombhoz is rendelni, nézd meg a Form1 generált részét (Form1.Designer.cs)
továbbá a szövegnek sincs semmi jelentősége a vizsgálatnál (főleg hogy ki sem írod a játékosnak, hogy a gép mit választott) -
válasz
Neil Watts #3185 üzenetére
2. Mégsincs sajnos, még így sem.
-
Peter Kiss
őstag
válasz
Neil Watts #3175 üzenetére
Amikor centire ugyanazt a kódot írjuk le újra meg újra, akkor kérdezzük meg magunkról: nem tudnám ezt úgy megcsinálni, hogy ne sokszorozzam a kódom mennyiségét?
-
bpx
őstag
válasz
Neil Watts #3175 üzenetére
1.
minden gombnyomásnál új számot generál
és amúgy meg minek ide for ciklus ami 7-szer végigmegy az egészen?2.
JatekosValaszt = "papir";a papír hosszú í
-
kingabo
őstag
válasz
Neil Watts #3027 üzenetére
A ciklus után a maxKezdoertek és a minKezdoertek fogja tartalmazni az adott tömbindexeket. Rosszul nevezted el a változókat, ezért vagy gondban, sokkal jobb lenne pl a minErtekIndex, MaxErtekIndex, a tárolt értéknek meg minErtek, maxErtek (beszédesebb).
-
WonderCSabo
félisten
válasz
Neil Watts #3020 üzenetére
Miért ez így miért nem jó? Attól eltekintve, hogy a max/min keresés ciklusában n-szer kiirod a még be nem fejezett max/min keresés eredményét...
-
martonx
veterán
válasz
Neil Watts #3000 üzenetére
konkatenálod a stringeket mondjuk így:
Listbox1.Add = nevek[valami] + " " + pontok[valami] + " pont";
-
kingabo
őstag
válasz
Neil Watts #2997 üzenetére
Nem teljesen
"Majd 0-tól indulva elmegyek kettesével elemszámig.
Ezt beleíratom a Nevek vektorba.Aztán egy másik for-ral - ami 1-től indul - elmegyek ugyancsak elemszámig, kettesével, ezzel rakom bele a pontokat a Pontok vektorba."
Ugyanis a második cilkus benne van az elsőben. Emiatt írodik ki a nevek rengetegszer a összes lehetséges pont-tal.szerk: most nézem a PasteBin-es kódod. Sokkal szebb lenne, ha az Ossztomb-öt a méret ismeretében (ezt nem tudom hol kapértéket) a beolvasás előtt, a Nevek és a Pontok tömböt a beolvasás után foglalnád le. Így nem pazaréloknál el rengeteg memóriát feleslegesen.
-
bpx
őstag
válasz
Neil Watts #2994 üzenetére
semmi, +2 sor
for (int i = 0; i < elemszam; i+=2)
{
Nevek[i] = Ossztomb[i];
Pontok[i+1] = Ossztomb[i+1];
listBoxFeltolt.Items.Add(Ossztomb[i] + " , " + Ossztomb[i+1]);
}(csak hogy az eredeti elképzeléssel legyen egyenértékű)
-
kingabo
őstag
válasz
Neil Watts #2986 üzenetére
Te, le tudnád írni saját szavaiddal, hogy mit csinál a beidézett kódod? Minek ehhez 2 ciklus? A 4. sorban minek a '{' ?
Ha jól értem neked ennyi kéne:
for (int i = 0; i < elemszam; i+=2)
{
Nevek[i] = Ossztomb[i];
Pontok[i] = Ossztomb[i + 1];
}Ill érdekelne hogy hogyan debuggolsz. Ha lépésenként futtatod a progid észre kellene venned, hogy valami nagyon nem kerek...
ui: nem sértésből írtam amit, csak sokadjára jönnek elő olyanok, amik minimális debuggal meg lehet találni.
-
bpx
őstag
válasz
Neil Watts #2991 üzenetére
-
martonx
veterán
válasz
Neil Watts #2988 üzenetére
miért két tömbben tárolod az egybe tartozó adatokat?
Másrészt a 20X-ozódás azért van, mert a a nevek tömb index-ét nem növeled. Az ott nem Nevek[j] akarna lenni Nevek helyett?
Ne mondd, hogy ezt a debugolás nem mutatta meg kapásból? -
bpx
őstag
válasz
Neil Watts #2986 üzenetére
pedig ez ránézésre működik, csak eléggé távol van az optimálistól
no meg az értelmét sem látom, mert egy ilyen bemenetből:A
.
B
..ilyen lesz a két tömb:
nevek: "A", null, "B", null
pontok: null, ".", null, ".."egyébként meg mi az hogy a for nem kap értéket? a ciklusváltozó kap értéket (i=0)
végtelen ciklus sincs, csak egymásba ágyazott, aminek semmi értelme nincs, és csak a feladat egyszerűsége miatt működik -
ArchElf
addikt
válasz
Neil Watts #2954 üzenetére
Be van csatolva a metódus (btnLetoltes_Click) a Click eseményre?
Debugban belelép - ha nem lép bele, akkor valamit elcsesztél az esemény létrehozásásnál (btw itt nem elég létrehozni a "megfelelő" nevű metódust, mint régen a VB-ben, itt össze kell linkelni az eseményeket és az eljárásokat - többek között ezt is az InitializeComponent() eljárásban teszi meg a program, ha jól kattintgattad össze).AE
-
drkbl
őstag
válasz
Neil Watts #2898 üzenetére
1) Felveszel egy boolean mezőt az osztályba, amit igazra állítasz az első lefutás előtt, majd az eseménykezelőben nézed, hogy hamis-e még, csak akkor fut le a ciklus
bool Feltoltve = false; // [L:http://msdn.microsoft.com/en-us/library/83fhsxwc(v=VS.80).aspx]a default false[/L], de így talán érthetőbb a kód
private void buttonBeolvas_Click-be az új kódod az alábbi, régi szerint:
if (!Feltoltve) {
for (int i = 0; i < elemszam; i++) {
Nevek[elemszam] = Benevek[i];
Azon[elemszam] = BeAzon[i];
elemszam++;
}
Feltoltve=true;
}vagy
2) buttonLista.Enabled = true; után buttonBeolvas.Enabled=false; így rá sem tud kattintani még1x
-
drkbl
őstag
válasz
Neil Watts #2895 üzenetére
Hasonló esetben használd a debugger töréspontját, ha az elemszam++; sorra tettél volna egy töréspontot, láttad volna, hogy nem lép be a ciklusba
-
Chipi333
csendes tag
válasz
Neil Watts #2893 üzenetére
Amikor indítod a ciklust akkor i és elemszam is 0, szóval nem lépsz be a ciklusba(egyenlőek => i<elemszam = false). Ráadásul utána minden iterációban mind2t növelnéd, ez így sehogy se jó.
for (int i = 0; i < BeNevek.Length; i++) - szerintem itt inkább ezt akarod csinálni. -
drkbl
őstag
válasz
Neil Watts #2890 üzenetére
Gondolom a Beolvas gombra kattintasz elsőre. elemszam=0, az i ciklus addig tart, amíg i kisebb, mint elemszam, nulláról indulva. Ez sosem teljesül, elemszam marad 0.
-
válasz
Neil Watts #2890 üzenetére
ja még annyi hogy a Benevek és a BeAzon tömbben még 25 név van.
-
G3kko
tag
válasz
Neil Watts #2868 üzenetére
Köszönöm, most már lesz elég induló anyag!
Majd még könyvesboltokban is szétnézek. -
ArchElf
addikt
válasz
Neil Watts #2836 üzenetére
Nem félreérthető volt, hanem rossz.
A te megoldásodban minden páros számra kiírta a textboxba (felülirva az előző szöveget), hogy az adott szám páros.1. private void buttonOKrb_Click(object sender, EventArgs e)
2. {
3. if (radioButtonParatlan.Checked)
4. {
5. for (int i = 0; i < veletlentar.Length; i++)
6. {
7. if (veletlentar[i] % 2 == 0)
8. {
9. labelParatlParos.Text = veletlentar[i] + " db páratlan számot sorsolt ki a program";
10. }
11. }
12. }
13. listBox_eredmenyKi.Items.Clear();
14. }Ha kellene egy kis manuális debug:
3. radioButtonParatlan.Checked -> feltételezhetjük, hogy páratlan számokíat keresel
7. if (veletlentar % 2 == 0) -> itt viszont a párosakra ugrik be az if ágra (kettövel osztva nincs eredmény az páros. Ami neked kellett volna az a != 0.
9.c labelParatlParos.Text = veletlentar(i) + " db páratlan számot sorsolt ki a program"; -> itt az aktuális elemé értékét írja ki - még csak nem is a sorszámát, vagy a számosságot (ezt javította Athlon64+).+1 nem értem a fixációt a tömbökkel; rendes gyűjteményekkel (Collection), sokkal könnyebben/értelmesebben lehet dolgozni, mert flexibilisek és egy csomó már előre elkészített funkciót is biztosít.
AE
-
Peter Kiss
őstag
válasz
Neil Watts #2833 üzenetére
Most páros kell vagy páratlan?
private void buttonOKrb_Click(object sender, EventArgs e)
{
if (radioButtonParatlan.Checked)
{
int q = 0;
for (int i = 0; i < veletlentar.Length; i++)
{
if (veletlentar[i] % 2 == 0) //páratlan vagy páros kell?
{
q++;
}
}
labelParatlParos.Text =q + " db páratlan számot sorsolt ki a program";
}
listBox_eredmenyKi.Items.Clear();
} -
martonx
veterán
válasz
Neil Watts #2833 üzenetére
debug?
-
martonx
veterán
válasz
Neil Watts #2778 üzenetére
ha esetleg nem a működő kódot másolod be, hanem a nem működőt (külön jelölve azt a sort ahol a hibát kapod), talán többet látunk. Másrészt, kérem nézd meg a debug-os videót, majd e új tudásod alapján köved figyelemmel futásidőben a változóid értékét, és 90% hogy látni fogod a hibát.
Ha mégsem, akkor természetesen segítünk. -
ArchElf
addikt
válasz
Neil Watts #2778 üzenetére
A for ciklusba ne a tömb hosszáig iterálj, hanem csak a db-ig. Utána nincs semmi a tömbben, azért kapod a hibaüzenetet. Amúgy tényleg tilos List<string>-et használi (vagy sima List-et, ami még a .NET 1.0-ban is volt)???
AE
-
amargo
addikt
válasz
Neil Watts #2767 üzenetére
Az egész blokk érdekes, de most tekintsünk el, mert egy része így még működő képes lehet. De hozzáteszem, hemzseg az egész kód a hibáktól!
char KezdoVektor = Convert.ToChar(textBoxKezdoBetuBeVektor.Text);
if (textBoxKezdoBetuBeVektor.Text != "")
{
for (int i = 0; i < nevBe.Length; i++)
{
if (KezdoVektor == nevBe[db][0])
{
listBoxKezdobetuListazKi.Items.Add(nevBe[db]);
}
}
}
}Ellenben azért, amit ArchElf írt, azrt értelmezted is? Mert minek oda ciklus, ha mindig csak az aktuális db ellenőrződ? Semmi értelme 50x ugyanazt leellenőrizned. De a kutya is itt van elásva!
Nézd meg a felette lévő kódodat:
textBoxNevBeVektor.Clear();
if (textBoxNevBeVektor.Text != "")
{
nevBe[db] = textBoxNevBeVektor.Text;
db++;
}Tehát egyből törlöd a mező tartamát, majd nem adsz semmit semmihez.
Ezek után nézd meg az első általam írt kódodat:
nevBe.Length //Ez helyes, 50 elemű.
if (KezdoVektor == nevBe[db][0]) //Itt pedig 0. elemre hivatkozol, majd annak szeretnéd elkérni az első karakterét. De ez nem fog menni, mert az Null -> meg is kapod helyesen az üzeneted.Nem hiába írtam az elején és ne támadásnak vedd, de egyszerűen az egész kód hemzseg a hibáktól és hiányosságoktól. Ez tényleg csak figyelmetlenség, de mivel szemmel nem tudok olyan jól összehasonlítani - számomra a változónevek is feleslegesen hosszúak - így csak azon akadt meg a szemem, hogy ott minek akarsz törölni?
-
martonx
veterán
válasz
Neil Watts #2767 üzenetére
Sima debuggal seperc alatt ki tudnád vizsgálni, hogy mi is a baj. Hagy ne mi debugoljunk már fejben helyetted. Másrészt, ha már tanácsért fordultál ide, miért sima array-el szivatod magad? Hahó 2012 van. Javaslom valami fejlettebb collection használatát, amellyel a sorbarendezés egy szimpla parancs.
-
ArchElf
addikt
válasz
Neil Watts #2765 üzenetére
if (KezdoVektor == nevBe[db][0])
helyett
if (KezdoVektor == nevBe[i][0])
nem?AE
-
Peter Kiss
őstag
válasz
Neil Watts #2744 üzenetére
Nem az értéke lesz egesz_be, hanem a hossza, nagy különbség.
int egesz_be;
if (int.TryParse(textBox1_adatbe.Text, out egesz_be))
{
var r = new Random();
for (int i = 0; i < egesz_be; i++)
{
listBox_adat.Items.Add((char)r.next(65, 90));
}
}
else
{
//hibakezelés :-)
} -
Peter Kiss
őstag
válasz
Neil Watts #2740 üzenetére
Létrehozol egy ÜRES char[]-t.
Amit bejársz a ciklusoddal.
Elemet akarsz kivenni belőle, pedig ÜRES.
Ráadásul kivételnél fix indexet használsz, ami nem más, mint a tömb hossza, ami pontosan eggyel magasabb indexet jelent, mint a tömb utolsó elemének indexe. -
válasz
Neil Watts #2738 üzenetére
Ja, értem, akkor a feladat hülyesége. Ok. szóval a karakterekkel végül is mi a gond?
-
válasz
Neil Watts #2734 üzenetére
A randomot még értem, de miért akarod a 10-et karakterként bevinni?
Az egészeknél feleslegesen megírtál egy műveletet fonákul, ami egyébként teljesen egyértelmű
"int[] egesz = new int[] { 1, 2, 3, 4, 5, 6, 7, 8 };
for (int i = 0; i < egesz.Length; i++)
{
listBox_adat.Items.Add(egesz(i));
}"helyett
for (int i = 1; i < 9; i++)
{
listBox_adat.Items.Add(i);
}bár a te számításodból a 9 továbbra is kimarad. Miért?
Amit feljebb linkeltem kód, pont azt csinálja, hogy randomol annyi számot, amennyit a taxtBoxba írtál. Ugyanez átültethető karakterre is.
-
Peter Kiss
őstag
válasz
Neil Watts #2730 üzenetére
Az egesz tömböt csak a hosszának a lekérésére használod, semmi másra, ezért hülyeség létrehozni is.
-
Peter Kiss
őstag
válasz
Neil Watts #2719 üzenetére
Kicsi észrevétel:
int[] egesz = new int[] { 1, 2, 3, 4, 5, 6, 7, 8 };
for (int i = 0; i < egesz.Length; i++)
{
listBox_adat.Items.Add(egesz[i]);
}Helyett:
listBox_adat.Items.AddRange(new object[] { 1, 2, 3, 4, 5, 6, 7, 8 });
Stringekkel egyszerűbb:
listBox_adat.Items.AddRange(new [] { "egy", "kettő", "három", "négy", "öt", "hat", "hét", "nyolc" });
);---------------------------
if (textBox1_adatbe.Text != "")
{ /* ... */ }Helyett:
int egesz_be;
if (!string.IsNullOrEmpty(textBox1_adatbe.Text) && int.TryParse(textBox1_adatbe.Text, out egesz_be))
{ /* ... */ }-----------------------
Ez gyakorlatilag nincs használva:
int[] egesz = new int[egesz_be];
----------------------
Használja mindenki a var kulcsszót, ahol csak lehet.
-
Jhonny06
veterán
válasz
Neil Watts #2721 üzenetére
ASCII kódtáblát ajánlom figyelmedbe, char típusú változóval lehet trükközni, mondjuk számként reprezentálni egy betűt.
Pl.: char c = (char) 100;
Ugyanúgy használhatod a Next függvényt az intervallum megadására, csak konvertálni kell a típusok között.
-
martonx
veterán
válasz
Neil Watts #2719 üzenetére
Azt csinálja, amit kell? Mert akkor biztos nem volt helytelen az elgondolásod
-
válasz
Neil Watts #2716 üzenetére
"also + (also - felso)"
Nem fordítva akartad a kivonást?
-
Lortech
addikt
válasz
Neil Watts #1702 üzenetére
Előszöris szerintem nem kéne var-t használnod ezen a szinten és konkrétan erre a feladatra.
Console.WriteLine(a);
-a változó értéke üres string, nincs mit kiírnia (egy sorvégén kívül - WriteLine).Console.ReadKey();
-[link]
Lásd a metódus dokumentációját. Ez nem azt csinálja, amit szerintem te szeretnél elérni, de amúgysem jól használod.
Ennek hatására annyit csinál a program, hogy vár 1 db leütésre. Nem kerül be "a" változóba a beírt szöveg/szám, meg semmi hasonló.
Írj a = Console.ReadLine(); -t helyette. És beolvasás után kéne kiiratni a tartalmát, hacsak nem a beolvasás előtti tartalmát akarod kiírni a változónak.Console.WriteLine(a + b);
- ez konkatenálni fogja a stringet ebben az esetben, mivel string típusok esetén a + operátor ezt jelenti, tehát ha a = "1", b = "2", akkor a + b == "12", nem pedig 3.
A stringet át kell alakítani a fent már említett módon pl. egy int vagy valamelyik szám típussá, és úgy összeadni őket.Olvass sokat az alapokról mielőtt kódot írsz szerintem, vagy nézegess meg egyszerű, működő példákat, ennek én így sok értelmét nem látom.
-
RedSign
tag
válasz
Neil Watts #1694 üzenetére
Pedig eléggé egyszerű
, ehelyett:
int s = "";
Convert.ToInt32(s);talán így:
String s = "";
Convert.ToInt32(s); -
j0k3r!
őstag
válasz
Neil Watts #1687 üzenetére
hello!
nemtudom eddig miket talaltal, de en ezeket olvasgattam/tom:
reiter fele c# konyv
.NET 3.5 indulokeszlet
linq indulokeszlet(#1694) core2: az ilyen konverziokat erdemes try - catch blokkokban hasznalni + TryParse metodust hasznalni.
-
ArchElf
addikt
válasz
Neil Watts #1694 üzenetére
A C# erosen tipusos nyelv, igy a kozvetlen konverzio nem mukodik. Amennyiben a valtozo tartalma konvertalhato, ugy azt konverter segitsegevel (idegen tipusok, pl. String es int kozott), vagy kozvetlenul int->float/double eseten.
AE
-
válasz
Neil Watts #1693 üzenetére
Na meg egy erdekes dolog, aztan befejeztem mara.
Ha volt egy valtozom string-kent, de azt megvaltoztatom int-re akkor ezt kapom hibakent:Cannot implicitly convert type 'string' to 'int'
Erre kisutottem egy kis Googlezas utan egy ilyet:
int s = "";
Convert.ToInt32(s);Mit cseszhetek el?
Valami nagyon apro dolog (bar lehet, hogy joval nagyobb), gondolom. (amit persze nem veszek eszre).Udv. core2
-
válasz
Neil Watts #1690 üzenetére
Igen, az irány már megvan, csupán pár apróság:
string s = "";
Ez esetben nem feltétlenül kell rögtön értéket is adni a változónak, elég, ha csak létrehozod. Majd később adsz neki értéket úgyis.Console.ReadLine("");
Ez nem nagyon szokás. Helyette inkább
Console.ReadKey(); -
válasz
Neil Watts #1690 üzenetére
lol.
ugy nez ki, erre is kezdek rajonni -
válasz
Neil Watts #1688 üzenetére
Épp akartam írni, de látom, Google barátunk már válaszolt.
Kezdj neki, tanulgass, írj mórickákat és ha elakadsz, szívesen segítünk.
-
válasz
Neil Watts #1687 üzenetére
MOD:
Kozben turom a Googlet/MSDN/Technetet, ejj de jokat talalok!
Hat ilyen osszeszedett dokumentaciot/peldafeledatokat nem nagyon talaltam mas nyelveknel
Ú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!
- Eladó konfig! Ryzen 7 7800X3D 2TB SSD 64GB DDR5 RX9070XT 16GB!
- Új, makulátlan állapotú Samsung Galaxy Buds FE, fehér, fél év garancia
- Új, makulátlan állapotú Samsung Galaxy Watch7 44mm ezüst, 2 év garancia
- Új, makulátlan állapotú Samsung Z Fold 6 256GB Tengerészkék, független, 2 év garancia
- Használt TP-Link Deco M4 - AC1200 Router (Mesh-ként is használható)
- Samsung Galaxy A52s 5G 128GB, Kártyafüggetlen, 1 Év Garanciával
- AKCIÓ! Gigabyte H510M i5 10400F 16GB DDR4 512GB SSD GTX 1080Ti 11GB Rampage SHIVA Zalman 600W
- Telefon felvásárlás!! iPhone 11/iPhone 11 Pro/iPhone 11 Pro Max
- iKing.Hu - Honor Magic 7 Pro - Black - Használt, karcmentes
- BESZÁMÍTÁS! Lenovo ThinkPad T14 Gen 4 üzleti notebook - i7 1360P 24GB DDR5 RAM 512GB SSD Iris Xe W11
Állásajánlatok
Cég: PC Trade Systems Kft.
Város: Szeged
Cég: PC Trade Systems Kft.
Város: Szeged