Hirdetés
Hirdetés
-
Spyra: nagynyomású, akkus, automata vízipuska
lo Type-C port, egy töltéssel 2200 lövés, több, mint 2 kg-os súly, automata víz felszívás... Start the epic! :)
-
Akciófigyelő 2024: PlayStation - Bolygónyi kedvezmények
gp Számos játék szerezhető be az eredeti áránál olcsóbban, érdemes lehet a teljes listát átböngészni.
-
A szomszédban nyitott mérnöki központot az AMD
it Rögtön két helyen, Belgrádban és Nišben bővíti balkáni kirendeltségét a cég.
Új hozzászólás Aktív témák
-
-
ArchElf
addikt
válasz csadrienn #752 üzenetére
Segítek, ha azt mondom, hogy sorba kell őket rendezni, és kiszámítani az átlagukat?
1) Array.Sort(..)
2) foreach(...)AE
[ Szerkesztve ]
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]
-
ArchElf
addikt
Én saját tesztelő alkalmazást készítettem (mivel minden komponenst nekem kellett csinálni azokat amúgy is kellett tesztelni). Amúgy tesztelni illik:
- szintaktikailag (gondolom a programos lefordul)
- szemantikailag (olyan tesztadatokkal tölteni fel, aminek tudod az eredményét, és összehasonlítani a programeredményeivel)
- streszteszt (mi történik, ha a feldolgozási sebességnél nagyobb terheléssel tömöd programodat)
Amúgy a CodeProject-en olvastam (link) mostanában egy cikket a program-tesztelésről, nézz utána, ha még érdekes. Gondolom, nem gond, hogy angol.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]
-
ArchElf
addikt
Direkt írtam a sort-ot, mert három elemnél még nem szignifikáns a sebesség-különbség, amúgy meg kevesebb kód, mint egy foreach - minimum, maximum. Meg ugye alapban kevesebb változó is kell hozzá (persze meg lehet oldani egyetlen plusz változóval is).
Amúgy ha valaki nem születik bele a "sima" for-ba, a foreach általában könnyebben megérthető/használható... Tisztán támogatja azt a kezdeményezést, hogy buta (GUI) programozó minél kevesebb kódot írjon.
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]
-
ArchElf
addikt
TabControl.TabPages (TabPageCollection) property-n keresztül el tudod érni az összes tab-ot, ha erre voltál kiváncsi. Sajna a TabPage elemeket nem lehet "hagyományosan" eltüntetni (ui nincs Visible tulajdonsága). Ezeket csak úgy tudod fel-lerakni, ha elveszed-hozzáadod a tabodhoz. Legyegyszerűbb egy előre elkészített ás láthatatlan tabcontrol-ról fel-le pakolni a tabokat a látható de alapból üres tabcontrol-ra.
TabControl.SelectedTab property az aktív tab.
AE
[ Szerkesztve ]
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]
-
ArchElf
addikt
Ebben igazad van: persze, hogy gányolás, amit írtam.
Amúgy én azon mosolyogtam ezerrel az egyetemen (levelező), hogy míg a "leggyorsabb" könyv címe is úgy szól, hogyan tanuljunk meg xyz-ben programozni 24 óra alatt, addig az egyetemen félévenként "megtanultuk" a C-t, C++-t, Java-t és PHP-t 20-20 óra alatt. Nem semmi teljesítmény.
AE[ Szerkesztve ]
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]
-
ArchElf
addikt
Ha mind a panel, mind a tabcontrol eltakarja az egész formot (vagy egy formon levő panelen vannak - Dock - Fill-el kitöltve), akkor a ZOrderrel is lehet játszani (BringToFront()).
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]
-
ArchElf
addikt
Főleg akkor látod a hasznát, amikor egy viszonylag kiterjedt objektum öröklési fád van, és egy-egy függvénynek a fában levő osztályok (mármint a példányosított osztályok) közül csak bizonyos tulajdonságokkal rendelkezőket kell feldolgozniuk.
Mivel egy osztály több interfészt is örökölhet, így az interfészek kifejezetten alkalmasak az osztály alapvető feladatain kivül álló működés definiálására.
Huhh... átolvasva nem tűnik túl érthetőnek, de remélem átmegy belőle valami...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]
-
ArchElf
addikt
Másrészt kifejezetten jók az interfészek Reflection típusú példányosításra:
Első értelmes Google találatAE
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]
-
ArchElf
addikt
Egy példa a lentire(kicsit meg lett vágva). Az példa egy dinamikusan betölthető adatszolgáltató interfésze + betöltő osztálya. Természetesen az adatszolgáltatókat külön meg kell(ett) írni hozzá
using System;
using System.Collections.Generic;
using System.Reflection;
using System.Text;
namespace MonitorUser.Connector
{
public static class ConnectorLoader
{
/// <summary>
/// Collection of all loaded IConnector objects
/// </summary>
public static List<IConnector> Connectors = new List<IConnector>();
/// <summary>
/// Initialize a new IConnector instance and start it
/// </summary>
/// <param name="location">IConnector dll location</param>
/// <param name="name">IConnector full class name</param>
/// <param name="connectionString">Connection string for starting the connector</param>
/// <param name="initData">Additional initialization data</param>
/// <returns>Initialized and started IConnector instance</returns>
public static IConnector Load(string location, string name, string connectionString, ConnectorInitData initData)
{
try
{
IConnector ic = null;
Assembly asm = Assembly.LoadFrom(location);
Type tp = asm.GetType(name);
object p = Activator.CreateInstance(tp);
ic = (IConnector)p;
ic.Connect(connectionString, initData);
Connectors.Add(ic);
return ic;
}
catch
{
throw;
}
}
}
public interface IConnector
{
event EventHandler NewItem;
bool Connect(string connectionString, ConnectorInitData initData);
bool Disconnect();
bool Check();
bool Check(params string[] indexer);
ConnectorData GetNextItem();
bool SetItem(ConnectorData item);
bool SetItem(string referrer);
}
public struct ConnectorInitData
{
public long Position;
public DateTime StartTime;
public string QueryString;
public ConnectorInitData(long Position, DateTime StartTime, string QueryString)
{
this.Position = Position;
this.StartTime = StartTime;
this.QueryString = QueryString;
}
}
public struct ConnectorData
{
public long Identifier;
public List<string> Headers;
public List<Type> Types;
public List<object> Values;
public ConnectorData(long id, List<string> headers, List<Type> types, List<object> values)
{
this.Identifier = id;
this.Headers = headers;
this.Types = types;
this.Values = values;
}
}
}[ Szerkesztve ]
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]
-
ArchElf
addikt
Kicsit magyarabbul
A meghívó osztály:class Gyümölcsszedő
{
static void Main(string[] args)
{
Console.WriteLine(Leszed("Alma.dll"));
Console.WriteLine(Leszed("Körte.dll"));
Console.WriteLine(Leszed("Cseresznye.dll"));
Console.WriteLine(Leszed("Dió.dll"));
}
static string Leszed(string GyümölcsFa)
{
try
{
Assembly asm = Assembly.LoadFrom(GyümölcsFa);
IGyümölcs gyümölcs = (IGyümölcs)asm.CreateInstance(asm.GetTypes()[0].FullName);
return gyümölcs.Megkóstol();
}
catch
{
return string.Format("A [{0}] nem létező gyümölcsfa!", GyümölcsFa);
}
}Az Interfész:
public interface IGyümölcs
{
string Megkóstol();
}A dinamikusan linkelt dll-ek:
Alma.dllpublic class Cseresznye : IGyümölcs
{
public string Megkóstol()
{
return "A Cseresznye kukacos volt... :(";
}
}Körte.dll
public class Körte : IGyümölcs
{
public string Megkóstol()
{
return "A Körte éretlen volt... :(";
}
}Cseresznye.dll
public class Cseresznye : IGyümölcs
{
public string Megkóstol()
{
return "A Cseresznye kukacos volt... :(";
}
}A kimenet:
C:\temp\Developer\Gyümölcsszedő\Gyümölcsszedő\bin\Release>Példaprogram.exe
Az Alma finom érett volt! :)
A Körte éretlen volt... :(
A Cseresznye kukacos volt... :(
A [Dió.dll] nem létező gyümölcsfa!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]
-
ArchElf
addikt
Elkészíted az interfészt és bárki gyárthat beépülő modult a programodhoz. Például.
Az interfészek, az öröklődés, az objektumorientált programozás alapvetően nem egyszemélyi fejlesztésre lettek kitalálva. Ezek főleg az egyszerű és hatékony kollaboráció eszközei.
AE
[ Szerkesztve ]
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]
-
ArchElf
addikt
Negatívum:
- dotNet
- dagályos kód (a legyártott)
- könnyű nehezen észrevehető (logikai) hibákat gyártani bennePozitívum:
- dotNet
- feljett fejlesztőkörnyezet (még valami wswyg szerű szerkesztője is van)
- moduláris felépítésEgy egyszerűbb oldalra talán jobb a php, de egy portált azért nem programoznék le notepad++ -ban.
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]
-
ArchElf
addikt
-
ArchElf
addikt
VS.NET 2008-at nem ismerem, de 2005-ben a DataGridView vezérlőt kell használni.
Ehhez kell még egy DataSet komponens is (de a használt varázsló legyártja majd neked). Ha felrakod a formra a DataGridView-t onnan varázslók segítségével már beállítható a megjelenítendő tábla:
DataGridView Tasks -> Choose Data source -> Add Data Source -> Database
Innen már szerintem elég egyértelmű. Kiválasztod az adatbázis szervert és az adatbázist (vagy megírod a connection string-et), kiválasztod a táblát és a megjelenítendő vezérlőket.
A DataGridView-n beállítod, hogy látszódjanak a mezők a fejlécek, az átrendezhetőség, a dokkolás a tartalmazó konténeren, stb.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]
-
ArchElf
addikt
Amúgy a leggyorsabb egy előre leszámolt int 32 prím-sorral lenne (de mondjuk még egy int16 prímsor is tudna gyorsítani a dolgon).
Computed values rulzAE
:mod: marhára unatkozhatsz
[ Szerkesztve ]
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]
-
ArchElf
addikt
A teljes Int32 prím-tábla belefér 512MB memóriába (sallangok nélkül persze)...
Már számolja is a gép, bár nem tudom mikorra leszek kész vele...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]
-
ArchElf
addikt
Amennyiben egy Int64-nek nincs Int32-es gyöke, úgy prímszám...
Ez a megoldás az Int64-es kérdésre
Kicsit részletesebben: a gyökkeresést elég elkezdeni a szám négyzetgyökétől lefelé, mivel bár lehetnek afeletti gyökei is, de ahhoz tartoznak négyzetgyök alattiak. Amennyiben azok megvannak, úgy megkapjuk a négyzetgyök felettieket is. Amennyiben nincs négyzetgyök alatti gyöke, biztos nincs afeletti sem.
Az Int64 pedig ugyebár Int32*Int32...AE
[ Szerkesztve ]
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]
-
ArchElf
addikt
Amikor debug módban futtattam az első prímszámítás (7-es sor) 23 órát akart futni.
De release módban végigszámolja az összes 7-el osztható számot az int32 tartományon. Látom ám már hogy egy idő után az IO nagyobb korlát lesz, mint a számolás.
Ehh, memory steram-en, kellene számoltatni...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]
-
ArchElf
addikt
Szupergyors lett... Egészben becsatolni sajna nem tudom (képfájlként esélyem sincs).
Ha érdekel átküldöm esteAE
:mod: túl nagy lett, egy postba nem fér el
[ Szerkesztve ]
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]
-
ArchElf
addikt
using System;
using System.Collections.Generic;
using System.IO;
namespace TestCon
{
class Program
{
static string PBIN = "prime.bin";
static long PLEN = 1024 * 1024 * 512;
static MemoryStream MPSTREAM;
static FileStream PSTREAM;
static byte[] B235DATA = new byte[] {
0x82, 0x28, 0x8a, 0xa0, 0x20,
0x8a, 0x22, 0x28, 0x88, 0xa2,
0x08, 0x0a, 0xa2, 0x28, 0x82 };
static string PBMD5 = "75b7c17fa77f8d12017cf69fca36c626";
static int B235LENGTH = 15;
static void Main(string[] args)
{
try
{
PSTREAM = File.Open(PBIN, FileMode.OpenOrCreate, FileAccess.ReadWrite);
if (!checkmd5())
{
build();
loadbase();
build2();
}
else
loadbase();
PSTREAM.Close();
startApp();
}
catch (FormatException)
{
Console.WriteLine("\n\nPozitiv egesz szamokat lehet csak megadni.");
endApp();
}
catch (Exception)
{
Console.WriteLine("\n\nHiba tortent.");
endApp();
}
}
private static bool checkmd5()
{
System.Security.Cryptography.MD5CryptoServiceProvider md5 = new System.Security.Cryptography.MD5CryptoServiceProvider();
md5.Initialize();
PSTREAM.Position = 0;
byte[] bmd5 = md5.ComputeHash(PSTREAM);
PSTREAM.Position = 0;
string st = "";
foreach (byte b in bmd5)
st += b.ToString("x2");
return (st == PBMD5);
}
private static void build()
{
long flength = PLEN / B235LENGTH;
for (long ix = 0; ix < flength; ix++)
PSTREAM.Write(B235DATA, 0, B235LENGTH);
PSTREAM.Write(B235DATA, 0, ((int)PLEN % B235LENGTH));
}
private static void loadbase()
{
MPSTREAM = new MemoryStream();
MPSTREAM.Capacity = 512 * 1024 * 1024;
byte[] bl = new byte[1024];
PSTREAM.Position = 0;
MPSTREAM.Position = 0;
for (int ix = 0; ix < 512 * 1024; ix++)
{
PSTREAM.Read(bl, 0, 1024);
MPSTREAM.Write(bl, 0, 1024);
}
MPSTREAM.Position = 0;
}
private static void build2()
{
// first byte mark
// 10101100 : 0xac
MPSTREAM.Seek(0, SeekOrigin.Begin);
MPSTREAM.WriteByte((byte)0xac);
int pbx, pby;
for (int ix = 7; ix < UInt16.MaxValue; ix++)
{
if ((pbx = GetPBit(ix)) == 1)
{
for (long iy = ix; iy < UInt32.MaxValue; iy++)
{
if ((pby=GetPBit(iy))==1)
{
long ip = (((long)ix) * iy);
if (ip <= ((long)UInt32.MaxValue))
ClearPBit(ip);
else
break;
}
else if (pby == -1)
iy = (((iy >> 3) + 1) << 3) - 1;
}
}
else if (pbx == -1)
ix = (((ix >> 1) + 1) << 1) - 1;
}
PSTREAM.Position = 0;
MPSTREAM.WriteTo(PSTREAM);
}
private static int GetPBit(long ix)
{
if (ix > UInt32.MaxValue) return -2;
int px = (int)(ix >> 3);
int pp = (int)(ix & 0x07);
MPSTREAM.Seek(px, SeekOrigin.Begin);
byte pb = (byte)MPSTREAM.ReadByte();
MPSTREAM.Seek(-1, SeekOrigin.Current);
if (pb == 0) return -1;
return ((pb >> pp) & 0x01);
}
private static void ClearPBit(long ix)
{
int px = (int)(ix >> 3);
int pp = (int)(ix & 0x07);
MPSTREAM.Seek(px, SeekOrigin.Begin);
byte pb = (byte)MPSTREAM.ReadByte();
MPSTREAM.Seek(-1, SeekOrigin.Current);
byte pm = (byte)((0x01 << pp) ^ 0xff);
pb = (byte)(pb & pm);
MPSTREAM.WriteByte(pb);
}
private static void endApp()
{
Console.WriteLine("\n\nA kilepeshez nyomjon le egy billentyut!");
Console.ReadKey();
}
private static void startApp()
{
Int64 szam;
Console.Write("Primszamvizsgalat. Kerem a vizsgalando szamot: ");
szam = Int64.Parse(Console.ReadLine());
if (szam > 1)
{
Console.WriteLine("\nPrimszamitas (új) folyamatban...\n");
if (isPrimeWithCountNew(szam))
Console.WriteLine("Primszam.");
else
Console.WriteLine("Nem primszam.");
}
else
{
Console.WriteLine("\n\nA vizsgalatot csak egynel nagyobb pozitiv egesz szamokra lehet elvegezni!");
}
endApp();
}
private static bool isPrimeWithCountNew(Int64 szam)
{
Console.WriteLine("Osztoi:");
List<long> osztok = new List<long>();
int result_x;
if ((result_x=GetPBit(szam)) != 1)
{
long bc = szam;
Int64 ix = 2;
while (true)
{
if (GetPBit(bc) == 1)
{
osztok.Add(bc);
break;
}
long sq = (long)Math.Floor(Math.Sqrt(bc));
if ((sq * sq == bc) && (GetPBit(sq) == 1))
{
osztok.Add(sq);
osztok.Add(sq);
break;
}
bool mul = false;
while (ix <= sq)
{
int result;
if ((result = GetPBit(ix)) == 1)
{
if (bc % ix == 0)
{
bc /= ix;
mul = true;
osztok.Add(ix);
break;
}
}
if (result == -1)
ix = (((ix >> 3) + 1) << 3);
else
ix++;
}
if (!mul)
{
if (bc != szam)
osztok.Add(bc);
break;
}
}
}
if (osztok.Count == 0)
{
Console.WriteLine("nincsenek");
return true;
}
else
{
Console.WriteLine("{0} prímtényezőre osztható, melyek a következők:", osztok.Count);
foreach (long l in osztok)
Console.Write("{0} ", l);
Console.WriteLine();
return false;
}
}
}
}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]
-
ArchElf
addikt
Kicsit karcsúsítottam, így belefért egy hozzászólásba. Sajnos így kimaradt egy csomó státusz jelentés - Console.WriteLine("Éppen ezt, vagy csinálom"); - a legenerálás alatt, így csak az üres képernyőt látja az ember egy jó ideig.
Az első futásnál legenerálja az 512MB-os fájlt - ez kb 10 perc egy 2GHz-es gépen -, utána már gyorsan - kb 8-10 mp alatt - indul.
Kicsit dagályos néhol még a kód, nem nagyon törődtem a rövidséggel.AE
[ Szerkesztve ]
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]
-
ArchElf
addikt
Az 1 p az nem a számítás, hanem a program indítása.
Mindenesetre ez most sem mérvadó, mert most látom, hogy 11 óra óta fut a mailbox-jaim és a home folderem indexelése, és az elég sok IO-t eszik. Szóval lehet hogy emiatt indul lassan a program. A prímtényezőkre bontást megcsinálja már 2-3mp alatt. Ha nem csak egyszer kellene számolni, akkor szupergyorsnak lehetne minősíteni.
Amúgy szóban itt is tudom kommentelni.
build() + build2()
A PBIN fájl feladata: Minden BIT egy egy számot jelent a számsorban az 0-UInt32 tartományban. A fájl generálásnál az alapötlet az volt, hogy végig feltöltöm 0xff értékkel és aztán 2-től az összes prímszámra az összes szorzóra kinullázom a biteket. A prímszám úgy jön ki, hogy ha kinullázom az 2 összes szorzatát (kivéve saját magát), akkor a sorban következő szám a 3 lesz. Kinullázom az összes 3-ast (kivéve a 3-at), így a 4 már ki lesz nullázva, a következő szám az 5. Az 5-ösöket is kinullázom, a 6 már nulla, jön a 7, utána a 8-9-10 már kész, jön a 11... és így tovább. Másrészt a szorzókat is úgy választom meg, hogy csak az eddig ki nem nullázott számokkal szorzok. Pl 11 nál az első szorzó a 11 lesz (hiszen ezalatt már mindent leszoroztunk), 12-vel nem kell szorozni (hiszen az 2*2*3), a következő a 13 lesz... így elég "gyorsan" legenerálja az UInt32-es sort. Náhány perc alatt.
Mivel azonban gyorsítani szeretném a számolást tudom hogy a 2-3-5 szorzatai (bájtokban) egy 15 bájtból álló sorozatot alkotnak, elég ha ezzel inicialzálom az 512MB-os tömböt és a számolást a 7-esnél kezdem (a 2-3-5-7 kezdősorozat már 105 bájt hosszú, és nem volt kedvem ezt mind bepötyögni és leellenőrizni).
A hash függvény arra kellett, hogy a jól (!) legenerált PBIN fájlt leellenőrizzem, hiszen ez tartalmazza az összes prímet 2-UInt32 -ig.
folyt...AE
[ Szerkesztve ]
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]
-
ArchElf
addikt
folyt.
A program működése közben az egész fájl MemoryStream-ben van (loadbase()) és az összes keresési művelete abból hajtja végre. Ez nagyságrenekkel nagyobb, mint a file IO. Mondjuk látszik is a teljesítményen (az első megvalósításom File IO alapú volt, ott a 7-es sort 1.5-2 óra körül akarta megcsinálni MemorySteram-ből megvolt 1:34 perc alatt).A programot folytatandó: A bit-kódolás az eredeti byte kódolás alapján történik, pl az első 3 byte:
a c| 2 8| 8 a|...
--------+--------+--------+...
10101100|00101000|10001010|...
--------+--------+--------+...
|111111 |22221111|...
76543210|54321098|32109876|...Kicsit fejére fordítottnak tűnik, de ezt a bitkódolás miatt van (számolni egyszerűbb így, mintha bitsorrendben lenne - amúgy meg ha little-endian rendszerben néznénk, jól rakná ki a sort).
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]
-
ArchElf
addikt
folyt.
prímszámítás kommentezve:private static bool isPrimeWithCountNew(Int64 szam)
{
Console.WriteLine("Osztoi:");
// Lista az osztók tárolására
List<long> osztok = new List<long>();
int result_x;
// Ha nem nyilvántartott prímszám akkor elkezdjük keresni
if ((result_x=GetPBit(szam)) != 1)
{
// keresési érték = kezdőérték
// elsőször egyenlő a számmal
long bc = szam;
// prím keresés első lépésének inicializálása
Int64 ix = 2;
// Addig iterálunk, míg minden gyököt meg nem találunk,
// vagy a sor végére nem érünk
while (true)
{
// amennyiben a keresési érték prímszám eltároljuk és kilépünk a ciklusból
// ez nem lehet az eredetileg keresett szám,
// mert akkor az előző feltételnél nem jutottunk volna be ide
if (GetPBit(bc) == 1)
{
osztok.Add(bc);
break;
}
// a négyzetgyökének veszzük a keresési kezdőértéknek
// kezdeti eseben az első iteráció a kezdeti szám négyzetéig keres
// ha eddig nincs találat a szám prímszám és > UInt32
long sq = (long)Math.Floor(Math.Sqrt(bc));
// ha a keresési kezdőérték prím és a négyzete kiadja a
// a keresett keresési kezdőértéket
// kétszer berakjuk a listába és kilépünk a ciklusból
if ((sq * sq == bc) && (GetPBit(sq) == 1))
{
osztok.Add(sq);
osztok.Add(sq);
break;
}
// osztási sort elkezdjük, addig megyünk,
// amíg a négyzetgyököt el nem érjük
bool mul = false;
while (ix <= sq)
{
int result;
// amennyiben az ix (keresési lépés) prímszám,
// megpróbálunk osztani vele
if ((result = GetPBit(ix)) == 1)
{
// ha sikerül az osztás maradék nélkül,
// a keresési kezdőértéket elosztjuk a
// keresési lépéssel és újrakezdjük külső ciklust
// a találta osztót a listához adjuk
// megjelöljük, hogy volt sikeres osztás
if (bc % ix == 0)
{
bc /= ix;
mul = true;
osztok.Add(ix);
break;
}
}
// amennyiben az keresőszámhoz tartozó tartományban (8 szám - 1 byte)
// nincs prím, úgy előre lépünk 8-at
if (result == -1)
ix = (((ix >> 3) + 1) << 3);
// minden más esetben növeljük a keresőszámot 1-el
else
ix++;
}
// ha nem találtunk osztót
if (!mul)
{
// ha a keresőszám != a keresett számmal,
// akkor a keresőszám > UInt32 és prím
// hozzáadjuk a listához
if (bc != szam)
osztok.Add(bc);
// kilépünk a külső ciklusból
break;
}
}
}
if (osztok.Count == 0)
{
Console.WriteLine("nincsenek");
return true;
}
else
{
Console.WriteLine("{0} prímtényezőre osztható, melyek a következők:", osztok.Count);
foreach (long l in osztok)
Console.Write("{0} ", l);
Console.WriteLine();
return false;
}
}
}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]
-
ArchElf
addikt
Ehh
Megoldottam az egészet, gyorsabban 512 MB memória nélkül is...
Egyszerű matek. Úgy tűnik a sok memória és a sok számítás meg feltétel lasabbá teszi az egészet, mint az egyszerű számítgatás.private static bool isPrimeWithCountNewSingular(Int64 szam)
{
Console.WriteLine("Osztoi:");
// Lista az osztók tárolására
List<long> osztok = new List<long>();
long bc = szam;
Int64 ix = 2;
bool search = true;
while (search)
{
long lr;
long sq = (long)Math.Floor(Math.Sqrt(bc));
if ((lr = GetPrimes(szam, ref bc, ref ix, ref search, sq)) != 0)
osztok.Add(lr);
}
if (osztok.Count == 0)
{
Console.WriteLine("nincsenek");
return true;
}
else
{
Console.WriteLine("{0} prímtényezőre osztható, melyek a következők:", osztok.Count);
foreach (long l in osztok)
Console.Write("{0} ", l);
Console.WriteLine();
return false;
}
}
private static long GetPrimes(long szam, ref long bc, ref Int64 ix, ref bool search, long sq)
{
long oszto = 0;
bool mul = false;
while (ix <= sq)
{
if (bc % ix == 0)
{
bc /= ix;
mul = true;
oszto = ix;
break;
}
ix++;
}
if (!mul)
{
if (bc != szam)
oszto = bc;
search = false;
}
return oszto;
}FCK... mást nem akarok mondani.
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]
-
ArchElf
addikt
Találtam egy példát, ahol gyorsabb az előre leszámolt
Primszamvizsgalat. Kerem a vizsgalando szamot: 998877665544332111
Primszamitas (új) folyamatban...
Osztoi:
nincsenek
Primszam.
Számítás időtartama: 27917 ms
Primszamitas (math) folyamatban...
Osztoi:
nincsenek
Primszam.
Számítás időtartama: 71188 ms
A kilepeshez nyomjon le egy billentyut!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]
-
ArchElf
addikt
Túl kevés ebben a számítás (és nem elég nagy a számtartomány), hogy gazdaságosan párhuzamosítható legyen.
Ja és mind a két módszer párhuzamosítható, így mind a kettő gyorsabb lesz
AE[ Szerkesztve ]
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]
-
ArchElf
addikt
válasz Jester01 #900 üzenetére
Prímek száma: 217 846 311 (5%)
A deltában az nem jó, hogy csak szekvenciálisan kereshető, de biztos lehetne valami köztes megoldást találni. Sima uint[] ben tárolva 831 MB lenne a szükséges tárterület (+fejlécek).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]
-
ArchElf
addikt
Ahhoz képest hogy a bit-arány (0:1 -> 19:1) elég kiegyenlítetlen a fájlban, a tömörítés hatásfoka (1/3.6) nem túl nagy.
AE
[ Szerkesztve ]
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]
-
ArchElf
addikt
Gondolom a form+menü+picturebox összekattogtatásával nincs gond.
form: Form1
picturebox: pictureBox1
menü:
-mShape
--mCircle
--mBox
-mColor
--mRed (Checked = true)
--mOrange
--mGreen
Rajozás a System.Drawing csoport alatt levő függvényekkel lehet:
Kell hozzá először egy Graphics objektum, erre lehet rajzolni a saját metódusaival:
(Paint esemény alá a legegyszerűbb)private void pictureBox1_Paint(object sender, PaintEventArgs e)
{
//Graphics objektum "felkapása"
Graphics g = e.Graphics;
//felület törlése (gomb színnel)
g.Clear(SystemColors.ButtonFace);
//szín kiválasztása a bejelölt nyomógomb alapján
Color c = SystemColors.ButtonFace;
if (mRed.Checked)
c = Color.Red;
else if (mOrange.Checked)
c = Color.Orange;
else if (mGreen.Checked)
c = Color.Green;
//forma rajzolása a bejelölt nyomógomb alapján
if (mCircle.Checked)
{
g.FillEllipse(new SolidBrush(c), new Rectangle(10, 10, 100, 100));
}
else if (mBox.Checked)
{
g.FillRectangle(new SolidBrush(c), new Rectangle(10, 10, 100, 100));
}
}
//nyomógombok bejelölésének eseményei
private void mCircle_Click(object sender, EventArgs e)
{
mCircle.Checked = true;
mBox.Checked = false;
pictureBox1.Refresh();
}
private void mBox_Click(object sender, EventArgs e)
{
mBox.Checked = true;
mCircle.Checked = false;
pictureBox1.Refresh();
}
private void mOrange_Click(object sender, EventArgs e)
{
mOrange.Checked = true;
mRed.Checked = false;
mGreen.Checked = false;
pictureBox1.Refresh();
}
private void mGreen_Click(object sender, EventArgs e)
{
mGreen.Checked = true;
mOrange.Checked = false;
mRed.Checked = false;
pictureBox1.Refresh();
}
private void mRed_Click(object sender, EventArgs e)
{
mRed.Checked = true;
mGreen.Checked = false;
mOrange.Checked = false;
pictureBox1.Refresh();
}AE
[ Szerkesztve ]
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]
-
ArchElf
addikt
Szövegbevitel TextBox-ból. Szöveg konvertálása számmá pl int.Parse(), Convert.ToInt32() függvényekkel.
Doboz keret+kitöltés:Rectangle r = new Rectangle(10, 10, 100, 100);
Color c1 = Color.Red;
Color c2 = Color.Orange;
g.DrawRectangle(new Pen(new SolidBrush(c1)), r);
g.FillRectangle(new SolidBrush(c2), r);AE
[ Szerkesztve ]
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]
-
ArchElf
addikt
A menünél a "-" -ak mentü felépítését jelentik (- menü, -- almenü), a név a menü objektum neve (át kell írni a Properties ablakban). Az OnClick-t a rákattintással automatikusan legenerálja, a Paint eseményt pedig a Properties ablak (jobb lent) Events (villám ikon) fülén találod.
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]
-
ArchElf
addikt
válasz ..Trinity #928 üzenetére
Anagramma:
string, mint char[] kezelése (két for ciklust egymásba kell tenni, és eltárolni (mondjuk egy bool[] tömbbe, hogy a megalkotáshoz melyik karaktert használtuk már fel). A legyártott változatokat legegyszerűbb belerakni egy List<string> listába.Akasztófa játék:
Karakter ellenőrzés string-ben (IndexOf függvényel, plusz for cilkus, hogy az összes egyező karaktert megtaláljuk). Ezen kívül kell egy számláló, hogy mennyi rontott próbálkozás volt (nincs egyezés a szöveg és a beadott karakter között).Lottószám generálás:
int[5] tömb a számoknak, System.Random a véletlenszámnak, ellenőrzés, hogy a számot kihúztuk-e már egyszer.
Ha megvannak a számok, legenerálni egy Bitmap-ot (amibe majd rajzolunk). A Graphics.FromImage statikus metódussal kinyerjük a rajzoló felületet, DrawString metódussal kiírjuk a számot rá, majd az Bitmap Save metódusával el lehet menteni (akár JPEG-be is): bitmap1.Save("kep1.jpg", System.Drawing.Imaging.ImageFormat.Jpeg);Táblázatkezelő:
Az fogalmam sincs ez a feledat mit jelent, de a táblázatot lehet "rajzolni" a ListView (Detail mód) illetve a DataGridView-val.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]
-
ArchElf
addikt
Sajnos töbszöri hozzáfogás után sem tudtam nekiállni a VSTO-nak - főként időhiány miatt -, pedig a cél adott volna: egy relációs Outlook DataStore (pokolba kívánom szinte minden nap a Personal Foldereket)
Nem tudom, hogy találsz-e fórumon olyat, akinek volt már szerencséje a VSTO-hoz (de ha igen, nekem is továbbpasszolhatnád az elérhetőségét, hátha az Outlook-os kérdéseimben is tudna majd segítő jobbot nyújtani).
Ja és sorry, hogy beszóltam, de segíteni ezért nem tudokAE
[ Szerkesztve ]
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]
-
ArchElf
addikt
válasz imbahayabusa #961 üzenetére
Pontosan mit is szeretnél, mire kell a két form?
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]
-
ArchElf
addikt
válasz Rodrighez #967 üzenetére
Gyors válasz az MSDN-ről:
Note
The Cursor class does not support animated cursors (.ani files) or cursors with colors other than black and white.
Ez azt hiszem megválaszolja a felmerült kérdést (sajnálatos módon nem pozitívan), de találtam neked egy ilyet:
http://www.codeproject.com/KB/cs/ExtCursors.aspxAE
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]
Ú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!
- Új, bontatlan Honor 200
- Használt - WALKMAN fülhallgató Sony NW-WS413
- Kedvező ár! Dell Vostro laptop (15,6FHD/I5-G3/6GB/500GB/Dedikált)
- Kedvező ár! Lenovo T430 laptop (14HD+/I5-G3/8GB/320GB/Magyar) - 1 év garancia
- Nitro V15 ANV15-51 15.6" FHD IPS i5-13420H RTX 4050 32GB 512GB NVMe magyar vbill ujjolv gar
Állásajánlatok
Cég: Ozeki Kft
Város: Debrecen
Cég: Ozeki Kft
Város: Debrecen