Hirdetés
- iPhone topik
- TCL 50 NxtPaper 5G - átgombolom magam monokrómiába
- Samsung Galaxy A54 - türelemjáték
- Elite szett, óriás telep és szuperfényes kijelző
- Samsung Galaxy Watch - időtálló
- Poco X3 Pro - hardverfrissítés
- Motorola Moto G54 5G Power Edition - nem merül le
- Vodafone mobilszolgáltatások
- Samsung Galaxy S24 - nos, Exynos
- Nothing Phone (2a) Plus - semmi lényegi plusz
Új hozzászólás Aktív témák
-
fatal`
titán
válasz Dr. Student #2700 üzenetére
Nem, ez elméletben mindenre. Ha osztályon belül írsz egy másik osztályt arra is igaz ez. Metódust osztályon kívülre nem is lehet írni szerintem (illetve structba lehet, de az csak annyiban tér el az osztálytól, hogy alapból minden public), bár ilyet még nem próbáltam.
-
kingabo
őstag
válasz Dr. Student #2700 üzenetére
Metódust nem tudsz osztályon kívül írni.
Attól függ, hogy mire akarod használni kell eldöntened, hogy hova teszed.
-
ArchElf
addikt
válasz WonderCSabo #2706 üzenetére
Mármint úgy értettem (mármint azon csodálkoztam), hogy lehet c#-ban osztályon kívüli függvényt csinálni?
AE
Csinálok egy adag popcornt, és leülök fórumozni --- Ízlések és pofonok - kinek miből jutott --- Az igazi beköpőlégy [http://is.gd/cJvlC2]
-
veterán
Metódust csak osztályon belül lehet deklarálni, jól mondjátok.
[ Szerkesztve ]
-
ArchElf
addikt
válasz kingabo #2710 üzenetére
Kerülő megoldásnak ott van a statikus osztály (nem kell inicializálni) és az extension methods (statikus osztályokban levő metódusok hozzáadhatók már meglevő osztályokhoz).
AE
Csinálok egy adag popcornt, és leülök fórumozni --- Ízlések és pofonok - kinek miből jutott --- Az igazi beköpőlégy [http://is.gd/cJvlC2]
-
veterán
Sziasztok!
Lesz most szerintem egy nagyon noob kérdésem:
Hogy tudok C#-ban intervallumból valós véletlen számot generálni?
int also = 10;
int felso = 50;
Random r = new Random();
double kiir = also + (also - felso) * r.NextDouble();
listBox1.Items.Add(kiir);Itt valamit nagyon elneztem szerintem, mert atmegy negativba is.
Koszi a segitseget!
MOD: ó, megvan!
Udv. core2
[ Szerkesztve ]
-
veterán
válasz Neil Watts #2716 üzenetére
"also + (also - felso)"
Nem fordítva akartad a kivonást?
[ Szerkesztve ]
-
veterán
-
veterán
Nakérem, haladtam a programmal:
Itt a teljes kód (már csak a karakterest kell megoldanom):
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace _1_vektor
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button_egesz_ki_Click(object sender, EventArgs e)
{
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]);
}
}
private void button_valos_ki_Click(object sender, EventArgs e)
{
double[] valos = new double[] { 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8 };
for (int i = 0; i < valos.Length; i++)
{
listBox_adat.Items.Add(valos[i]);
}
}
private void button_karakter_ki_Click(object sender, EventArgs e)
{
char[] karakter = new char[] { 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h' };
for (int i = 0; i < karakter.Length; i++)
{
listBox_adat.Items.Add(karakter[i]);
}
}
private void button_szovegek_ki_Click(object sender, EventArgs e)
{
string[] szoveg = new string[] { "egy", "kettő", "három", "négy", "öt", "hat", "hét", "nyolc" };
for (int i = 0; i < szoveg.Length; i++)
{
listBox_adat.Items.Add(szoveg[i]);
}
}
private void button_del_Click(object sender, EventArgs e)
{
listBox_adat.Items.Clear();
}
private void button_egesz_be_Click(object sender, EventArgs e)
{
if (textBox1_adatbe.Text != "")
{
int egesz_be = Convert.ToInt32(textBox1_adatbe.Text);
Random r = new Random();
int[] egesz = new int[egesz_be];
for (int i = 0; i < egesz.Length; i++)
{
egesz_be = r.Next(10, 100);
listBox_adat.Items.Add(egesz_be);
}
}
}
private void button_valos_be_Click(object sender, EventArgs e)
{
if (textBox1_adatbe.Text != "")
{
int egesz_be = Convert.ToInt32(textBox1_adatbe.Text);
int also = 10,
felso = 50;
Random r = new Random();
double[] valos = new double[egesz_be];
for (int i = 0; i < valos.Length; i++)
{
double valos_ki = also + (felso - also) * r.NextDouble();
listBox_adat.Items.Add(valos_ki);
}
}
}
private void button_karakter_be_Click(object sender, EventArgs e)
{
}
}
}Szóval: A gombokat megnyomva a létrehozott vektorokból (vagy külső adat alapján - elemszám) kinyeri az adatot, és kiírja.
Arra lennék kíváncsi, hogy az elgondolásom helyes-e?
MOD: Uhh, legközelebb pastebinre megy
Üdv. core2
[ Szerkesztve ]
-
martonx
veterán
válasz Neil Watts #2719 üzenetére
Azt csinálja, amit kell? Mert akkor biztos nem volt helytelen az elgondolásod
Én kérek elnézést!
-
veterán
-
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.
-
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.
-
Jester01
veterán
válasz Peter Kiss #2723 üzenetére
Használja mindenki a var kulcsszót, ahol csak lehet.
Ez szerintem rossz tanács. A var csak azt jelzi, hogy a programozónak fogalma sincs az adott kifejezés típusáról és/vagy "gépelésre optimalizál". Továbbá későbbi módosításoknál is bekavarhat.
Jester
-
Peter Kiss
őstag
válasz Jester01 #2724 üzenetére
Pont, hogy nem kavarhat be. Amikor teljesen egyértelmű az, hogy mi lesz a típus (pl. new Akarmi()), akkor miért írnám ki kétszer? Teljesen hülyeség.
Dictionary<NagyonHosszuNevuOsztalyDeKiirom, MegHosszabbNevuDeEztIsKiiromAkkorIs> d = new Dictionary<NagyonHosszuNevuOsztalyDeKiirom, MegHosszabbNevuDeEztIsKiiromAkkorIs>();
-
Jester01
veterán
válasz Peter Kiss #2725 üzenetére
A new esetén szerintem a microsoft rosszul találta ki. A változónak mindig kellene típust adni, ha gépelési könnyítést akarsz, akkor inkább a new után lehessen elhagyni. Pl. én ilyet engednék: Foo foo = new(arg1, arg2); Ha meg interface-t használsz (ami viszont tényleg ajánlott) akkor meg amúgy is ki kell írni: IDictionary<Foo, Bar> baz = new Dictionary<Foo, Bar>();
A változóknak mindig legyen pontos típusa. Ha utálsz gépelni, akkor használj IDE-t ami megteszi helyetted. A "később bekavarhat" részt úgy értettem, ha később módosítod a kódot a var lehet, hogy már más típust fog jelenteni, amitől rejtett módon megváltozhat a program (pl. más overload hívódik később egy metódusnál).
Jester
-
Peter Kiss
őstag
válasz Jester01 #2726 üzenetére
Ezt a new sorrendet nem lehet megvalósítani.
Csak egy gyenge példa rá:
IEnumerable<int> t = new[] { 12, 34};
Interface-t példányosítanék?IDictionary-t se írnám ki, hótzicher, mert minek. System.Collections.Generic.Dictionary implementálja az IDictionary-t, és még sok minden mást! Ha kiírom az IDictionary-t, akkor a többit (implementált interface-ek) ezzel el is veszítem.
Tahát, egy változtatás miatt lesz mondjuk int-ből double, de van rá overload-olt metódusom (ugyanaz a metódusnév), ami annyit tesz, hogy problem solved.
-
Jester01
veterán
válasz Peter Kiss #2727 üzenetére
Ezt a new sorrendet nem lehet megvalósítani
Értelemszerűen nem arra mondtam, hogy mindig, hanem abban az esetben ha véletlen egyezik a változó típusa a példányosítani kívánt osztállyal.
Ja ha szerinted az interface-k felesleges dolgok, akkor nem szóltam.
Jester
-
veterán
válasz Peter Kiss #2723 üzenetére
"Ez gyakorlatilag nincs használva:
int[] egesz = new int[egesz_be];"
De van: [link]
Az elgondolásom remélem jó...
-
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.
-
veterán
válasz Peter Kiss #2731 üzenetére
Az ok, ez így működik is, csak éppen a tömbös problémát kerüli meg...
Nekem a tömb nem kell másra, minthogy van egy textboxom (egyik kommentemben benne van a kép) abba beleírók egy X elemszámot (pl. 10) és kiírja a listboxba az X elemszámnyi véletlenszámot/karaktert.
Ez ezzel a kóddal működik is / tömb nélkül nem.
Karakterre sajnos nem megy.Üdv. core2
-
veterán
válasz Peter Kiss #2731 üzenetére
Az if szerintem nem a legjobb TryParse mellé. így nincs hibakezelés.
Egy lehetséges refaktorálás: linkKérdés, hogy kell-e üríteni a listát minden gombnyomáskor. Illetve én a randomnak egy saját metódust csinálnék, úgy még szebb.
core2:
Nem igazán értem ezt a karakteres dolgot. Mit kellene ott csinálni? De amúgy a program célját se értem. Mi a feladat?Másfelől 1-2 tanács:
- alulvonás helyett inkább egybe írd a neveket és CamelCasing-et használj.
- olyan nevet ne használj, hogy "textBox1_adatbe". Ha a kontrol nevét is bele akarod írni, akkor inkább inputText vagy bevitelTextBox vagy ilyenek.
- "namespace _1_vektor" - n ilyet biztosan ne használj. Nagyon csúnya. a Namespace legyen konkrét és globális - valami jól eltalált név.
- "int[] egesz = new int[] { 1, 2, 3, 4, 5, 6, 7, 8 };" - ez felesleges, az egész számokat a rendszer ismeri és a 10 az nem két karakter, hanem egy szám. hol a 9?
- ha már nagyon a tömbök felé mész, akkor az a sok tömb kipakolható a metódusból egy-egy field-be is:
private int[] _egesz = new int[] { 1, 2, 3, 4, 5, 6, 7, 8 };, de kár vesződni vele, mert ez úgy, ahogy van felesleges. Van egy mindig 9 elemű tömböd és annak veszed a hosszát...[ Szerkesztve ]
-
veterán
gyáá...
Szóval a program működése:
Van két groupboxom (Bevitel és kiír).
Bevitelben egy elemszám feliratú label, mellette egy textbox.alatta 3 gomb, rendre:
Egészek, Valósak, Karakterek
Mindegyik gomb randomol egyet attól függően, hogy mekkora az elemszám, annyit írat ki a listboxba.A kíír résznél van öt gomb:
Egészek, Valósak, Karakterek, Szövegek, Töröl
Ezek simán mennek, csak a másik nem. A kiír is működik, csak szerintem nem tömbből, de működik, csak ott a karakteres nem.
MOD: - "int[] egesz = new int[] { 1, 2, 3, 4, 5, 6, 7, 8 };" - ez felesleges, az egész számokat a rendszer ismeri és a 10 az nem két karakter, hanem egy szám. hol a 9?
Az előre meghatározott intervallumból dolgozik, azokkal töltöttem fel a tömböt!
Üdv. core2
[ Szerkesztve ]
-
veterán
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.
[ Szerkesztve ]
-
veterán
válasz Peter Kiss #2736 üzenetére
Szerintem jó helyen van. Előbb úgysem használom, ott meg úgyis elszáll, ha karaktert kap. De természetesen érdekel a véleményed, nincs kőbe vésve.
-
veterán
-
veterán
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?
-
veterán
Ez a kód hibás, mert túlindexelem a tömböt, még dolgozok rajta
A kód
if (textBox1_adatbe.Text != "")
{
int egesz_be = Convert.ToInt32(textBox1_adatbe.Text);
Random r = new Random();
char[] karakter = new char[egesz_be];
for (int i = 0; i < karakter.Length; i++)
{
char kiir = karakter[egesz_be];
listBox_adat.Items.Add(kiir);
} -
Peter Kiss
őstag
-
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. -
veterán
válasz Peter Kiss #2741 üzenetére
Valóban, bár nem olyan vészes. Én inkább tömöríteni szoktam, ha nem olyan műveletről van szó, ami sok erőforrást köt le. Optimálisabb a TryParse kint.
"TextBox - tb --> tbSomething"
Igen, csak akkor ismerni kell az alkalmazott szabályrendszert. Nem szeretem a hungarian notation-t.
[ Szerkesztve ]
-
veterán
válasz Peter Kiss #2742 üzenetére
ööö...
Létrehozok egy char[]-t, aminek az értéke lesz az egesz_be.
Tehát ha mondjuk azt mondom, hogy 10 elemet kérek, akkor az egesz_be = lesz 10-zel, tehát akkor ha azt írnám, hogychar[] karakter = new char[egesz_be];
vagy
char[] karakter = new char[10];
az tök mindegy, mivel a kettő egy és ugyanaz, nem?
Szóval most wtf. Rosszul töltöm fel a chart, most már arra is rájöttem, de most akkor hogy töltsem fel?
-
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 :-)
} -
MrSealRD
veterán
Üdv!
A segítségeteket szeretném kérni.
ASP.NET-ben(Entity Framwork használata) kéne egy oldalt összerakni. Nincs más célja az oldalnak, mint a bejelentkezett felhasználók számára lehetővé teszi, hogy szavazásokat indítsanak illetve szavazzanak. A szavazások opció tetszőleges számúak lehetnek.
Egy adott szavazásnál, egy tetszőlegesen megadott idő intervallumban leadott szavazatokat is meg lehet nézni.Nem kész kódokat várok, hanem:
Koncepciókat - Adatbázisra, felhasználókezelésre...stb
Linkeket vagy személéltető kódokat...Amúgy:
Sulis feladat, és nagyon belekavarodtam, ezért kérnék segítséget.Előre is kösz.
Mondja, Mr. Babbage, ha rossz adatokat ad meg a gépnek, akkor is jó válasz fog kijönni belőle?" Képtelen vagyok felfogni azt az értelmi zavart, ami valakit egy ilyen kérdés feltevésére késztethet. - by Charles Babbage
-
veterán
válasz MrSealRD #2746 üzenetére
Milyen ASP.NET? 2, 3, 4? MVC?
A felhasználókezelésre az ASP-ben van megoldás, azt nem muszáj megírni. Erre még elég.
Ha ilyen igen-nem szavazás, akkor adatbázisra meg egy tábla az aktuális szavazásról, amiben a felhasználó Id-ja és a szavazat áll. Egy bool? típus a kódban. Ha null, még nem szavazott, ha meg igen, akkor az érték. Más szerintem nem is kell. A felületen a legegyszerűbb százalékot mutatni.
Ha több opció van, akkor meg egy olyan entitás, amiben minden opció benne van és rádiógomb, ahogy a fórumokon szokott lenni.
[ Szerkesztve ]
-
MrSealRD
veterán
Na, ez kimaradt. Elvileg ASP.NET 2-ig elég lenne. (ugye szintaxis is aspx, nem razor...)(Próbálok a mentén haladni amit a tantárgy kerete ad)
MVC most nem kell.A felhasználó kezelést sikerült használni. Remek, és valóban elég is.
A szavazás tetszőleges, tehát Pl.
Add meg a szavazás kérdését: Milyen napod volt ma?
Ezután(vagy egy időben) Adj hozzá válaszlehetőségeket:
1.jó
2.rossz
...
x. nemtom
(Ennek a pontos módszerét még nem tudom...De úgy néz ki egy sima szövegmező gomb páros a hozzáadásra és lent egy grid view mutatja a hozzáadottakat.)Most az jelenti a gondot, hogy a megfelelő módon bővítsem az adatbázist. Össze kell kötnöm a user-en keresztül az én szavazásos tábláimmal.
Mondja, Mr. Babbage, ha rossz adatokat ad meg a gépnek, akkor is jó válasz fog kijönni belőle?" Képtelen vagyok felfogni azt az értelmi zavart, ami valakit egy ilyen kérdés feltevésére késztethet. - by Charles Babbage
-
veterán
válasz MrSealRD #2748 üzenetére
Ja, értem. Adatbázist nem érdemes bővíteni - legalábbis gondolom, nem akarsz sémákkal játszani.
Talán megfelelően egyszerű, ha létrehozol egy táblát, amiben a szavazások vannak (Id, név) és egy másikat, amiben pedig a kérdésekre adható válaszok (Id, szavazás Id, válasz). Így annyi választ tehetsz egy kérdéshez, amennyi csak kell. (Persze máshogy is megoldható)
Javaslom, hogy az id az Guid legyen, az intet nem szeretjük a való életben, csak a sulikban erőltetik.
-
MrSealRD
veterán
Javaslom, hogy az id az Guid legyen, az intet nem szeretjük a való életben, csak a sulikban erőltetik.
Na ezt jó, hogy említed. Valóban ezt erőltetik a suliban. DE mi a különbség a gyakorlatban? (azon kívül, hogy egy univerzális azonosító...)
[ Szerkesztve ]
Mondja, Mr. Babbage, ha rossz adatokat ad meg a gépnek, akkor is jó válasz fog kijönni belőle?" Képtelen vagyok felfogni azt az értelmi zavart, ami valakit egy ilyen kérdés feltevésére késztethet. - by Charles Babbage
Ú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!
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest