"Ez bevett dolog az iskolapadon kívül (bár remélem, legalább ilyen alap dolgokat tanítanak)" > Tekintve, hogy magamtol alltam neki tanulni/olvasni ezzel kapcsolatban igy nalam ez a lepes nincs/probalom magam potolni valamennyire...
[ Szerkesztve ]
"Ez bevett dolog az iskolapadon kívül (bár remélem, legalább ilyen alap dolgokat tanítanak)" > Tekintve, hogy magamtol alltam neki tanulni/olvasni ezzel kapcsolatban igy nalam ez a lepes nincs/probalom magam potolni valamennyire...
[ Szerkesztve ]
lol.
ennek meg mi baja lehet?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
namespace szervusz
{
class Program
{
static void Main(string[] args)
{
var a = "";
var b = "";
Console.WriteLine("Mondj egy szamot!");
Console.WriteLine(a);
Console.ReadKey();
Console.WriteLine("Mondj megegy szamot!");
Console.WriteLine(b);
Console.ReadKey();
Console.WriteLine("Osszeadtam oket");
Console.WriteLine(a + b);
Console.ReadLine();
}
}
}
Mindent megcsinal, csak nem irja ki a es b erteket vagyis nem latom. Hogy tudnam megakasztani?
Udv. core2
[ Szerkesztve ]
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.
[ Szerkesztve ]
Thank you to god for making me an atheist
Látom, hogy Windows Service esetében van valami webszervizes lehetőség...
Properies > Services > Enable Client Application Services
Van valakinek erről anyaga, esetleg megosztható tapasztalata?
De ahogy nézem ez akár egész más is lehet, mint amit én szeretnék. A lényeg, hogy kellene egy szervíz, ami RPC/XMLRPC vagy valami hasonló módon "távolról" (kliensből) vezérelhető. Az az igazság, hogy nincs kedvem egy egész TCP Listener osztályt legyártani, szívesebben használnék valami beépített lehetőséget, amit a C# / IDE alapból is támogat.
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]
"Előszöris szerintem nem kéne var-t használnod ezen a szinten és konkrétan erre a feladatra."
Miért ne? Mindenhol használható. Szerintem érdemes hamar megszokni - csak persze meg is kell érteni, ezért kell utánaolvasni.
A hiba pontosan az, amit írsz, hogy amikor kiírunk, akkor WriteLine, amikor beolvasunk, akkor ReadLine kell a ReadKey pedig szolgáljon csak a program megállítására, ne legyen más funkciója.
Értelme volna mórickázni, de mégsem, mert a példa nem alkalmas semmire. Az alapoktól kezdeni annyit tesz, hogy megérteni az osztályokat, interfészeket, a C# beépített dolgait, hívásait. Példának pedig olyat érdemes nézni, kitalálni, aminek haszna is van. Mondjuk egy számológép. Kicsi, könnyű, nagyon alap.
ArchElf:
Sajnos egyelőre passzolok, ilyeneket mostanában nem csináltam... de megnézem, hátha akad valami régebbről.
[ Szerkesztve ]
Azért ne használjon var-t (még), mert ennek a megfelelő, körültekintő használata, egyáltalán a megértése komolyabb tudást feltételez, mint ami a példából láthatólag megvan. Ha a végrehajtás sorrendje - szekvencia, vagy egy alap beolvasás, kiíratás, egyszerű típushasználat problémát okoz, "proc.", fgv. használatát keveri, akkor még ráér type inference-t használni.
Ezen a szinten konkrétan a példában azért sem szerencsés, mert kezdő számára nem biztos, hogy egyértelmű, hogy melyik változó vagy kifejezés itt milyen típusú lesz, string és numerikus érték, azok konverziója és egy rajtuk végzett művelet is van benne.
A tanulás megfelelő sorrendje is fontos szerintem, először legyen tisztában azzal, hogy hol, milyen típus várható, majd később ráér a compilerre bízni ezt.
Thank you to god for making me an atheist
Ez igaz, mondjuk. Amíg az int és a string keverése megy, addig inkább jobb kiírni a típust...
Remoting?
WCF?
Mind a kettő egyszerű, de sztem a WCF-fel érdemes.
WCF-re tudnál példát linkelni?
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]
Röviden összefoglalom:
Ez egy SOA framework, a lényege, hogy kommunikációs végpontokat (Endpoint) tudsz definiálni.
A végpontokat meghatározza: ABC
Address: A végpont címe (többféle URI van, a bindingtól függ, hogy milyet kell használni)
Binding: A végpontnál használt protokoll, ebből többféle gyári megvalósítás van: [link]
Contract: Ez végpont interface-e, ami meghatátozza, hogy milyen műveleteket lehet végrehajtani.
Itt egy nagyon egyszerű példa, ami szerintem a Te igényeidet is fogja fedni [link]
[ Szerkesztve ]
Üdv!
Bocs lehet off.
A Visual Studio 2010-nek mennyi helyre van szüksége a C meghajtón? Valamint a 2008-nak?
Köszi előre is!
tegnap raktam fel egy gépre a VS2010-et, mindent hagytam defaulton, telepítés előtti és utáni állapot között 5.5 GB volt a különbség
Üdv.!
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Gondoltam egy számra 1-100 között, Találd ki!");
int a, b;
bool logika = true;
Random rnd = new Random();
a = rnd.Next(100);
do
{
b = Convert.ToInt16(Console.ReadLine());
if (a < b)
{
Console.WriteLine("A szám kisebb");
}
if (a > b)
{
Console.WriteLine("A szám nagyobb");
}
if (a == b)
{
Console.WriteLine("Eltaláltad a számot");
logika = a == b;
}
} while (true);
Console.WriteLine("Miért nem lépsz ki?");
Console.ReadLine();
}
}
}
Van egy ilyen progim, de valamiért nem 100-as. A végén nem írja ki azt a szöveget "Miért nem lépsz ki?" és le is fagy. Ez az első hátultesztelős ciklusos progim, így nem nagyon értem a szintaktikáját, hogy ez miért nem tetszik neki.
A végén nem lép ki. 5let?
A do-while ciklus addig marad a ciklusban amíg a feltétel igaz (mint ahogy a sima while ciklus is). Neked ez konstans true, szóval sose fog kilépni.
Jester
És akkor hogy lenne a helyes megoldás? False-szal sem volt jó.
Talán:
while (a!=b);
http://www.redsign.hu
vagy elejen
logika = false;
aztan az a == b agnal:
logika = true;
es
while(!logika);
[ Szerkesztve ]
some men just wanna watch the world burn...
Köszi, így jó. De ez mit csinál, mit jelent?
j0k3r!: Köszi, bár ezt nem nagyon értem mit hogy hova. Elmagyaráznád?
elejen letrehozol egy bool tipusu valtozot, amit false kezdeti ertekkel latsz el:
bool logika = false;
a logika valtozo csak akkor valt igazra (true), ha a == b, tehat amikor a ket szam megegyezik.
eppen ezert a ciklusod addig megy
amig logika nem igaz -> while(logika != true) -> while(!logika)
amugy, asszem a
a = rnd.Next(100);
nem 1 es 100 kozotti szamot general, hanem 0-99 koze esot
random class
[ Szerkesztve ]
some men just wanna watch the world burn...
Köszi a segítséget!
Így már tiszta minden.
A az mind1, hogy 1 és 100 között vagy 0 és 99 között, a lényeg, hogy random legyen.
Annyit azért akkor írjál át a programban, hogy 0 és 99 között "gondol" a program, mert egy 0-ás randomszámnál sohasem találja ki a felhasználó... ...vagy adj hozzá 1-et...
A az mind1, hogy 1 és 100 között vagy 0 és 99 között, a lényeg, hogy random legyen.
Console.WriteLine("Gondoltam egy számra 1-100 között, Találd ki!");
http://www.redsign.hu
Hogyan tudom kiíratni az angol ABC nagybetűit?
Addig eljutottam, hogy ciklussal kell (vagynem) és elég a kisbetűket kikeresni, majd utólag To.Upper paranccsal nagybetűsíteni.
De maga az a parancs, hogy ABC betűit kiíratni az nem megy.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace abc
{
class Program
{
static void Main(string[] args)
{
string betu = "";
for (int i = 65; i <= 90; i++)
{
betu = ((char)i).ToString();
Console.WriteLine(betu+"\n");
}
}
}
}
a 65 meg 90 az ascii kodja az 'A' es 'Z' karakternek.
[ Szerkesztve ]
some men just wanna watch the world burn...
Köszi, így teljesen érthető minden.
Azért az egy elég csúnya példaprogram volt...
1. minek is bele annyi using?
2. minek beledrótozni az ascii kódot ha egyszer a fordító is tudja?
3. minek stringgé konvertálni, ha char-t is ki lehet írni?
4. minek a WriteLine hívásba még egy enter
5. ... és azt miért string összefűzéssel kell beletenni?
6. minek kell a betu változót inicializálni
7. ... és miért nem a ciklusmagban van?
8. miért nem lehet eleve char a ciklusváltozó?
Az egy dolog ha valami működik, de lehetőség szerint ne ilyeneket tanítsunk már...
using System;
namespace abc
{
class Program
{
static void Main(string[] args)
{
for (char c = 'A'; c <= 'Z'; c++)
{
Console.Write(c);
}
Console.WriteLine();
}
}
}
Jester
usingokat vs dobalta bele default console app letrehozasanal, azert nem ritkitottam, mivel nem az a program lenyege, gondolom nem copy-paste lesz az egesz, csak a main.
tobbire: ok
some men just wanna watch the world burn...
Kéne megint egy kis help.
Van ez a program:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Betűtalálgatós
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Gondoltam egy betűre az angol ABC-ből, találd ki!");
int a;
char b;
bool logika = false;
Random rnd = new Random();
a = rnd.Next(26);
a = a + 96;
do
{
b = (char)Console.Read();
int intASC2 = System.Convert.ToInt32(b);
if (a < intASC2)
{
Console.WriteLine("A betű előrébb van az ABC-ben");
}
if (a > intASC2)
{
Console.WriteLine("A betű hátrább van az ABC-ben");
}
if (a == intASC2)
{
Console.WriteLine("Talált!");
logika = a == intASC2;
}
} while (!logika);
Console.ReadLine();
}
}
}
Nah most ha ti is elindítjátok a programot látjátok, hogy nincs vele valami rendben. Kiír +2 sort teljesen feleslegesen. Miért? Egyszerűen nem jövök rá.
Ha a bool-t átírom true-ra akkor csak egyszer dobja ki, de egyből kis is lép. Mi a megoldás?
Van egy véletlen számokból tömböm amibe vannak számok,és azokat a számokat összeadtam hogy hány db van belőle.
És a kérdés hogy tudom azt megcsinálni hogy egy másik tömböt hozok létre mibe a számok db számát tárolom?
Mármint az azonos számokat számolod össze az első tömbből?
Az első "tömb": List<int> számok
A második tömb: Dictionary<int, int> számok_száma
List<int> számok = new List<int>();
Dictionary<int, int> számok_száma
/*
számok feltöltése jön ide
*/
foreach(int szám in számok)
{
if (számok_száma.ContainsKey(szám))
számok_száma[szám].Value += 1;
else
számok_száma.Add(szám, 1);
}
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]
Kicsit finomítva:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Betűtalálgatós
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Gondoltam egy betűre az angol ABC-ből, találd ki!");
char a;
char b;
Random rnd = new Random();
a = (char)(rnd.Next('z'-'a') + 'a');
do
{
b = Console.ReadKey(true).KeyChar;
if (a < b)
{
Console.WriteLine("A betű előrébb van az ABC-ben");
}
else if (a > b)
{
Console.WriteLine("A betű hátrább van az ABC-ben");
}
else //if (a == b)
{
Console.WriteLine("Talált!");
break;
}
}
Console.ReadLine();
}
}
}
Randomban char műveleteket használtam, hogy "látszon", mi történik.
Read helyett használj ReadChar-t, az vár egy lenyomásra, a Read-egész mást csinál (emiatt volt három "válaszod").
nem kell int-té alakítani, char is összehasonlítható
sima if-ek helyett, használj if - else if - else if - ... - else logikát.
logika helyett elég egy break.
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]
Először is köszönöm.
Másodszorra akármit is csinálok, nem akar működni. A zárójelekkel van valami de esküszöm, hogy nem értem mi.
do helyett while (true)
Sorry...
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]
Köszi, így már jó!
Nem semmi ahogy megcsináltad. Bár most nem írja ki a betűt se amit beírok és entert sem kér, durva.
Ha mindenképp látni akarod a betűt, akkor Console.ReadLine().
Csak akkor kicsit finomítani kell, hogy 0 hossznál ne csináljon semmit és 1-nél hosszabbnál csak az első betűt szeresse a feldolgozáskor.
string b_s;
b_s = Console.ReadLine();
if(b_s.Length > 0)
{
b = b_s[0];
if (a < b)
{
Console.WriteLine("A betű előrébb van az ABC-ben");
}
else if (a > b)
{
Console.WriteLine("A betű hátrább van az ABC-ben");
}
else //if (a == b)
{
Console.WriteLine("Talált!");
break;
}
}
[ Szerkesztve ]
Skynet is real. It's called Google.
(#1738) FehérHolló válasza FehérHolló (#1737) üzenetére
Úgy tűnik, hogy nem annyira okos, hogy magától tabuláljon.
A szerkesztőd majd tabulálja, ha bemásolod.
Egyébként az kimaradt, hogy ezt a while(true) cikluson belülre kell írni, de remélem, egyértelmű volt.
[ Szerkesztve ]
Skynet is real. It's called Google.
Console.ReadKey(false) is elég - mondjuk akkor nem árt utána egy Console.WriteLine(), hogy ne csússzon össze a szöveg a beírt betűvel.
Persze, ha enterrel szeretné bevinni a karaktert, akkor kell a ReadLine()
Amúgy befejezéshez is elég egy Console.ReadKey(true) - és akkor tényleg bármilyen gomb lenyomására vár, nem csak egy enterrel tud kilépni.
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]
sziasztok
Tényállas: idei szemeszterben Visual Studio 2010-el programozunk az egyetemen, de nem sikerült órákat felvennem, és az egyetlen gyakorlat ami nekem jó betelt. Namár most a tanár megengedte hogy laptoppal beüldögéljek, de laptopom az nincs és rohadtul nincs is szükségem rá ( otthon asztali, egyébként teló)... tehát valami olcsó megoldás után néztem.
Találtam is egy fapados eee pc-t ami arra jó lenne hogy ezt a félévet kihúzzam vele.
De a felbontása csak 800*600, az lenne a kérdés hogy ezen a felbontáson elindul a program? A többi összetevő nem lényeg.. nemgáz ha lassú lesz.. csak fusson és be tudjak járni.
előre is köszi az infót
Philips 65OLED803 || iPhone 15 Pro Max || Macbook Air M1 ||
köszöntem szépen a gyors választ
Philips 65OLED803 || iPhone 15 Pro Max || Macbook Air M1 ||
Nem lesz egy élmény a fejlesztés ilyen kis képernyőn (rendesen el kell rejteni minden felesleget), de azért használható. Mondjuk én laptopon az 1024*768-al is rendesen megszenvedek...
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]
Sziasztok!
Tudna valaki ötletet adni szoftverfejlesztés párhuzamos és elosztott környezetben téma alatt esszére?
Miről lehetne irni, forrást szerezni hozzá
[ Szerkesztve ]
1-es golf, 2-es golf, ... (Bëlga)
Több sikerrel járnál itt: [link]
Én sajnos nem tudok szabad felhasználású irodalmat adni.
Skynet is real. It's called Google.
Végső esetben, ha hálózat legalább van, akkor távelérés az otthoni gépre. Az biztos működik. Az se biztos, hogy nem elég figyelni (esetleg videózni) a gyakorlaton és otthon programozni.
Jester
Köszönöm, ott is próbálkozom.
1-es golf, 2-es golf, ... (Bëlga)
Sziasztok!
Olyan feladatot kaptam, hogy can buson keresztül programozzak fel egy mikrovezérlőt. A can bus kártyához van .net támogatottság. Amikor bejön egy üzenet akkor a kártya ezt jelzi és veszi majd tovább tudja adni másik osztálynak. Az lenne a kérdésem hogy to hogy oldanátok meg hogy minden üzenetet megkapjon egy másik osztály és ott feldolgozza sorba őket? Van olyan hogy egymás után bejön 5 üzenet és ezeket kellene sorba feldolgozni. Próbálkoztam delegattel meg autoreseteventtel de nem sok sikerrel. Túl sűrűn jönnek az üzenetek hogy a programban rendes feldolgozás menjen.
Szóval kb vázolom mit kell megvalósítani.
osztály 1 elküld egy üzenetet majd vár hogy jöjjön rá válasz. A kártyának is van egy kezelő osztálya ami veszi az üzenetet egy szálban folyamatosan ezt berakja egy bufferba majd egy jelzést küld hogy üzenet érkezett. Ezt a jelzést kellene érzékelni és az eseményeket sorba állítani.
class vector{
rxthread{
while(true){
wait for message{
message received,
message to buffer,
received message event set
}
}
}
}
class protocol{
function1{
send message
wait answer
answer received
message handle
wait for next message
}
}
Biztos van olyan eseménye az osztálynak, hogy OnReceive vagy valami hasonló és azt kell lekezelned... valahogy így:
kezelo.OnReceive += ... (tabbal beadja automatikusan, és létre is hozza a metódust)
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]
Gondolom, ez egyértelmű, de több szálon kell megoldanod.
A CAN-t figyelő thread töltsön egy puffert, ami az üzenetek leíróját tartalmazza. Miután megjött X darab (ne egyesével), szóljon a feldolgozó szálnak egy AutoResetEvent típusú példányon keresztül. A feldolgozó szál pedig pakolja ki a puffert, és az üzenet típusától függően dolgozza fel azokat.
Ehhez ami kell MSDN-ről ([link]):
- Linkedlist ([link])
- Szálkezelés ([link]) + tutorialok.
- AutoResetEvent: [link]
Konkrét megoldát nem akarok, és nem is tudok mondani, esetleg csak részleteket. Ha új vagy C#-ban és többszálas programozásban, ráadásul a CAN kártya is teljesen új számodra, akkor olyan 30-40 óra körülire saccolom a feladatot.
Ha esetleg a KB monogramra hallgató cégnek csinálod ezt, vagy egy Vector cég által gyártott CAN kártyával akadt dolgod, akkor kérlek vedd fel velem a kapcsolatot privátban!
ArchElf: OnReceive csak a WinFormson alapértelmezett tudtommal. Amilyen CAN wrapperekkel eddig találkoztam, mind ipari szemét volt a Microsoft elképzeléseihez képest.
[ Szerkesztve ]
Skynet is real. It's called Google.
● ha kódot szúrsz be, használd a PROGRAMKÓD formázási funkciót!