C# - Problemi i rješenja izdvojena tema

poruka: 2.127
|
čitano: 490.230
|
moderatori: Lazarus Long, XXX-Man, vincimus
+/- sve poruke
ravni prikaz
starije poruke gore
8 godina
offline
C# - Problemi i rješenja

Možda bubam bezveze, ali možeš spojiti podatke iz liste B i C u drugu listu BC i onda raditi JOIN prema uvjetima po kojima su Id-ji iz A jednaki sa Id-jem iz spojene liste BC.

Poruka je uređivana zadnji put uto 21.1.2020 13:38 (Xyloto).
 
0 0 hvala 0
9 godina
offline
Re: C# - Problemi i rješenja

Dobra ideja!

Hvala.

9 godina
offline
C# - Problemi i rješenja

Opet ja i linq

Imam dvije liste, lista_a se sastoji se nekakvog id-a i imena

1, Petar
2, Marko
4, Stjepan
5, Ivan
6, Hrvoje

lista_b je slična, isto postoji id i ime, naziv ili kako god

1, Coca-Cola

1, Voda
2, Heineken
6, Corona
7, Staročeško


Rezultat bi trebao ovako izgledati

1, Petar        1, Coca-Cola

1, Petar        1, Voda
2, Marko       2, Heineken
4, Stjepan      
5, Ivan      
6, Hrvoje      6, Corona
                  7, Staročeško

 

Edit:

Liste su sortirane po id-jevima, dalo bi se ručno riješiti:

uzmi prvi id, provjeri da li ima takav u drugoj listi, ako ima upiši id, podatak iz a, opet id, podatak iz b

provjeri da li slijedeći red iz liste b ima isti id ili je drugačiji.........

Poruka je uređivana zadnji put sri 11.3.2020 22:30 (Badjo_5).
Moj PC  
0 0 hvala 0
13 godina
offline
Re: C# - Problemi i rješenja

Ovako nešto možda

 

public class GrupiranjeClass {     class Osoba    {         public string Ime { getset; }     }     class Pivo    {         public string NazivPiva { getset; }         public Osoba Osoba { getset; }     }     public void Grupiraj()     {         Osoba ivo = new Osoba { Ime = "Ivo" };         Osoba pero = new Osoba { Ime = "pero" };         Osoba marko = new Osoba { Ime = "marko" };         Pivo zuja = new Pivo { NazivPiva = "žuja", Osoba = ivo };         Pivo karlovacko = new Pivo { NazivPiva = "karlovacko", Osoba = ivo };         Pivo karlovacko1 = new Pivo { NazivPiva = "karlovacko", Osoba = pero };         Pivo lasko = new Pivo { NazivPiva = "laško", Osoba = marko };         List<Osobaosoba = new List<Osoba> { ivoperomarko };         List<Pivopivo = new List<Pivo> { zujakarlovackokarlovacko1lasko };         var query = from o in osoba                    join p in pivo on o equals p.Osoba into gj                     select new { Ime = o.Ime, Pivo = gj };         foreach (var q in query)         {             Console.WriteLine($"{q.Ime}:");             foreach (Pivo p in q.Pivo)             {                 Console.WriteLine($" {p.NazivPiva}");             }         }     } }

 

Guglaj malo više grouped joins.

Sry što ne radi ovo formatiranje kôda, kopiraj ga negdje u editor pa će biti bolje. Zašto je to tako, ne bi znao.

Dvije su stvari beskonačne - svemir i ljudska glupost. Za svemir nisam siguran - Einstein
9 godina
offline
Re: C# - Problemi i rješenja

Najljepša/najljepši ti dala/dao

 

Prilagodio sam, radi kao urica!!

Tvojih tri linije koda naspram mojih 5-6 puta više i koje rade na pola...

Poruka je uređivana zadnji put pet 13.3.2020 21:08 (Badjo_5).
5 godina
offline
C# - Problemi i rješenja

Greška

Poruka je uređivana zadnji put ned 22.3.2020 11:46 (Emixman1).
 
0 0 hvala 0
10 godina
offline
C# - Problemi i rješenja

Imam problema sa Task-ovima. Napisao sam mali programcic u kojem neznam tocno sto se dogodilo. 

 

public class Program

{

    public static void Main(string[] args)

    {

        Console.WriteLine("Start");

 

        Action printAction = async () => await PrintLine().ConfigureAwait(false);

        printAction.Invoke();

 

        Console.WriteLine("End");

    }

 

    public static async Task PrintLine()

    {

        Console.WriteLine("BeforeDelay");

        await Task.Delay(2000);

        Console.WriteLine("AfterDelay");

        return;

    }

}

Ovo ce rezultirati ispisom:

Start

BeforeDelay

End

Nije mi jasno zasto poziv printAction.Invoke() ne priceka izvodjenje PrintLine metode s obzirom da sam akciju definirao kao "... => await PrintLine()... " i na koji nacin ovo fixat?
Poruka je uređivana zadnji put sub 25.4.2020 11:07 (etnes).
Moj PC  
0 0 hvala 0
10 godina
offline
Re: C# - Problemi i rješenja

Ok, mislim da sam skuzio.

Action je metoda koja (prima argument ili void) i nema povratni tip (ja sam to zamislio kao cisti void) sto bi znacilo da se prilikom poiziva printAction.Invoke() krene izvrsavat PrinLine kao void metoda koja nece vratiti Task koji ce se sacekati sa await-om.

Nek me neko ispravit ako sam krivo protumacio

9 godina
offline
C# - Problemi i rješenja

Trebao bih složiti proceduru za prebrojavanje članova:

 

1
1 2
3 1 2
4 1
5 1 3

 

 

broj 1 se nalazi u 1, 2, 3, 4 i 5-om redu

broj 2 se nalazi u 2 i 3-ćem redu

broj 3 se nalazi u 3 i 5-om redu

broj 4 se nalazi u 4-om redu

broj 5 se nalazi u 5-om redu

 

Nisam na čisto odakle uopće krenuti, imam masu ifova, vrtim listu (array, svejedno) uduplo i sve se kotura koliko-toliko, ali uskoro će uletiti dvoznamenkasti članovi, pa će ulazni podatak izgledati ovako:

 

11
12 25
37 13 25
44 11
57 13 38

 

a to se neće nikako vrtiti...

 

Što trebam guglat?

 

Ili i ovdje uskače LINQ/RegEx?

Poruka je uređivana zadnji put čet 19.11.2020 21:52 (Badjo_5).
Moj PC  
0 0 hvala 0
9 godina
offline
C# - Problemi i rješenja

Ovako na prvu čitajući, da se smanji broj prolaza, koristio bi se Dictionary<int, List<int>> u kojem bi Key bio element koji se pojavljuje, a Value lista brojeva redova u kojem se pojavljuje (jedan prolaz kroz sve redove)

Zatim bi se u iteraciji redovima prolazilo elementima u tom redu (foreach pa foreach) te za svaki element pitalo:

  • - postoji li kao Key u Dictionaryu - ako da, dohvati njegovu listu i dodaj broj retka u nju, ako ne, dodaj zapis u rječnik za Key = element, Value = new List

Kada se prođu svi redovi, dohvati se lista ključeva u rječniku, može se i sortirati, i zatim za svaki ključ dohvati se i lista redova i prikladno ispiše.

 
0 0 hvala 0
9 godina
offline
Re: C# - Problemi i rješenja

Hvalim, za sad sam napravio prvu stvar prolaz po svim poljima (podaci nemaju razmaka, napisao sam ovako da se vidi kako su podaci složeni), znači prođem po svim poljima, sve pretvorim u dvoslovne/dvobrojne (trebao bih možda i slova, ne znam još), stavim u dictionary da dobijem popis svih iskorištenih brojeva(slova). Nakon toga foreach za svaki zapis u dictionary i prelazim po listi koju sam kreirao nn-nn-nn-nn i sa contains provjerimda li ima podatak npr. '11-' iz dictionary, pa slijedeći...

Na testnim podacima cca 200 redova i 20-ak brojeva za sekundu-dvije dobijem ispis parova prema dictionary.

Hm, ono u value lista redova i nije uopće loše, moram malo zgruntat kako iskoristit.

Poruka je uređivana zadnji put pet 20.11.2020 16:55 (Badjo_5).
12 godina
neaktivan
offline
C# - Problemi i rješenja

Pozdrav ekipa

 

Trenutno radim na aplikaciji koju bi trebalo koristiti par klijenata, ta app se veže na već postojeće baze koje ja nisam pravio, te svako klijentsko računalo ima instaliran sql management.

 

Dakle moj problem je što svako klijentsko računalo ima drukčiji nazivi sql servera tj. instance connection stringa, te se uvijek može desiti da klijent zamjeni računalo (te zbog toga bi mu se u budućnosti promjenio naziv sql servera), zbog toga trebam napraviti da korisnik pri paljenju aplikacije odabere sql server, te nakon toga da mu se izlistaju baze koje on ima, te odabere bazu.

 

problem 1. kada dohvatim:  var instances = SqlDataSourceEnumerator.Instance.GetDataSources(); , app tek dohvati instance nakon 3 minute , dakle presporo

 

Da li je najbolje riješenje:

 

string nazivPc = Environment.MachineName

sConn = @"Data Source=nazivPc\SQLEXPRESS";

 

Te kada se spoji na sql server , da preko storane procedure izlistam sve baze u combobox  select * sys.databases  

 

Ili je najbolje riješenje napraviti tablicu sa nazivom klijenta, nazivom sql servera (gdje bi provjeravao nazive sql servera na klijentskim računalima te ubacio u bazu), te nazivom baze

 

Unaprijed hvala

 

 

Poruka je uređivana zadnji put pon 23.11.2020 15:26 (Arsenalboy).
 
0 0 hvala 0
6 godina
online
Re: C# - Problemi i rješenja

Moralo bi raditi i bez imena hosta tj samo ime instance (sqlexpress ili neka druga named instanca) ili cak samo "localhost" ako je samo jedna instanca.

12 godina
neaktivan
offline
C# - Problemi i rješenja

Kod sebe na računalu imam dvije instance: localDb\MSSQLLocalDB i mojPc\express

SQLBrowser service pokrenut

Kada dohvaćam preko:DataTable dtSqlServers= SmoApplication.EnumAvailableSqlServers(true); ili SqlDataSourceEnumerator instance = SqlDataSourceEnumerator.Instance;

Doslovno treba minut da dohvati, te samo dohvati express instancu. 

 

Dok preko registrya dohvati odmah instancu, al također samo express, dakle nikad mi ne prikaze localDb .

 

Na jednom računalu sam koristio 4.7.2 .net , dok sam na drugom koristio 4.5 . net, te je identična situacija bila

Poruka je uređivana zadnji put čet 26.11.2020 9:45 (Arsenalboy).
 
0 0 hvala 0
6 godina
online
Re: C# - Problemi i rješenja

LocalDB i SQL Express nije isto, LocalDB nije pokrenut sve dok ga app ne aktivira preko conn stringa, zato ga ne nalazi. SQL Express se uvijek vrti.

Poruka je uređivana zadnji put čet 26.11.2020 9:46 (Nuclear_Phoenix).
12 godina
neaktivan
offline
C# - Problemi i rješenja
Hvala na savjetima

Imam sada jedan zanimljiv matematički problemčić, koji se može uraditi (vjerujem) na dosta načina, ali je bitna efikasnost

Dakle potrebno je inicijalizirati niz brojeva duljine npr 5 i korisnik treba unijeti neku vrijednost npr 50 . I sada me zanima na koji način mogu dodati programibilno random brojeve u niz, a da je zbroj tih brojeva u nizu jednako unesenoj vrijednosti tj ravno 50

Ne bih želio da su svi brojevi u nizu[10,10,10,10,10] , već razne varijante






 
0 0 hvala 0
13 godina
offline
Re: C# - Problemi i rješenja
Neki random s rasponom koji je unesen. Npr random(0,50).
I onda u while petlji proci taj raspon s brojem polja sve dok suma ne bude jednaka tom nekom broju.

Ovo pucam iz glave, nesto tako sam zamislio.
Dvije su stvari beskonačne - svemir i ljudska glupost. Za svemir nisam siguran - Einstein
10 godina
offline
C# - Problemi i rješenja

Pozdrav!

 

Imam jednu nejasnoću koju bi htio razjasniti.

Koristim signalR na asp.net core 3.1 i pravim aplikaciju u kojoj će se igrati nekakvi turniri. 

Igrači se mogu registrirati na turnir i isto tako deregistrirati. Za to koristim listu objekata u turnirskom objektu.

Mene zanima da li trebam implementirati nekakav oblik locka na listi prilikom dodavanja illi brisanja objekata igrača. 

Dali je to onda syncroot iz ICollection? https://docs.microsoft.com/en-us/dotnet/api/system.collections.icollection.syncroot?view=netcore-3.1

 
0 0 hvala 0
13 godina
offline
Re: C# - Problemi i rješenja

Ako ne planiraš imati mnogo usera koji će istovremeno raditi nešto po bazi, nema potrebe za time. 

Dvije su stvari beskonačne - svemir i ljudska glupost. Za svemir nisam siguran - Einstein
13 godina
online
Re: C# - Problemi i rješenja
Pero Dinamit kaže...

Ako ne planiraš imati mnogo usera koji će istovremeno raditi nešto po bazi, nema potrebe za time. 

 

Zasto po bazi? Baza bi trebala imati svoj locking out of the box

Freak Show Inc.
10 godina
offline
Re: C# - Problemi i rješenja

Na stackoverflowu mi kaže neki lik da treba koristiti ili threadsafe collection ili lock

https://stackoverflow.com/questions/67626037/do-i-need-a-lock-on-a-list-where-i-add-or-remove-object-from-list-on-invocation/67626633#67626633

 

iz same igre useri ne koriste bazu, barem ne za sad

13 godina
offline
Re: C# - Problemi i rješenja
Friday kaže...

 

Zasto po bazi? Baza bi trebala imati svoj locking out of the box

 Mislio sam na spremanje podataka u bazu, krivo sam se izrazio.

Dvije su stvari beskonačne - svemir i ljudska glupost. Za svemir nisam siguran - Einstein
13 godina
online
Re: C# - Problemi i rješenja
Pero Dinamit kaže...
Friday kaže...

 

Zasto po bazi? Baza bi trebala imati svoj locking out of the box

 Mislio sam na spremanje podataka u bazu, krivo sam se izrazio.

 

Ma OK ali svejedno ne razumijem - zasto bi ikakav locking trebao postojati sa klijentske strane radi toga?

Freak Show Inc.
13 godina
offline
Re: C# - Problemi i rješenja
Ne znam ni ja. Po meni nepotrebna zajebancija.
Dvije su stvari beskonačne - svemir i ljudska glupost. Za svemir nisam siguran - Einstein
8 godina
online
Re: C# - Problemi i rješenja
bresha kaže...

Pozdrav!

 

Imam jednu nejasnoću koju bi htio razjasniti.

Koristim signalR na asp.net core 3.1 i pravim aplikaciju u kojoj će se igrati nekakvi turniri. 

Igrači se mogu registrirati na turnir i isto tako deregistrirati. Za to koristim listu objekata u turnirskom objektu.

Mene zanima da li trebam implementirati nekakav oblik locka na listi prilikom dodavanja illi brisanja objekata igrača. 

Dali je to onda syncroot iz ICollection? https://docs.microsoft.com/en-us/dotnet/api/system.collections.icollection.syncroot?view=netcore-3.1

 

Trebaš, jer thredovi paralelno pristupaju podacima te liste.

 

Ovdje je tutorial sa sličnom arhitekturom (klijenti pristupaju podacima iz singletonea), podaci su u thread-safe ConcurrentDictionaryju.

12 mjeseci
offline
C# - Problemi i rješenja

Pozdrav, pocetnik sam u programiranju i zapeo sam na ovom zadatku pa ako bi me mogao netko uputiti kako rjesiti zadatak i sto napraviti bio bi mu zahvalan. Mozda ako imate neki slican zadatak sa rjesenjem isto bi mi pomoglo. Gledao sam po internetu imali sto slicno ali nisam nasao nista sto bi mi pomoglo rjesiti problem. Skuzio sam da bi vrijednosti mogao ucitati preko streamreadera ali ne znam kako da ucitam samo brojke to jest kako da napravim da mi ucita samo x i y vrijednosti.

 

Razmatramo zemljopisnu mapu na kojoj je prikazano n gradova. Tekstovna
datoteka gradovi.txt u prvom retku sadrži informaciju o broju gradova te
potom za svaki grad u zasebnom retku sadrži informaciju o njegovom
položaju na mapi, u obliku (x,y) gdje su x i y koordinate točke. Sadržaj
čitave datoteke prikazan je u nastavku.
Pretpostavite da se korisnik prilikom putovanja između dva grada kreće
najkraćim mogućim putem (po pravcu koji spaja te razmatrane gradove).

a) Napišite program koji će učitati podatke iz datoteke gradovi.txt te
odrediti i na zaslon ispisati ukupnu duljinu puta koju će korisnik proći
ako gradove posjećuje točno redoslijedom kojim su zadani u datoteci (i
staje kad posjeti zadnji grad).
b) Pretpostavite sada da korisnik razmatrajući gradove istim redoslijedom
kao u prethodnoj točki može odlučiti da točno jedan grad neće posjetiti.
Doradite program tako da nakon što ispiše podatke tražene pod (a) utvrdi
koji je grad potrebno preskočiti kako bi se maksimalno smanjila duljina
pređenog puta. Program treba ispisati redni broj grada i potom duljinu tog
puta.

Datoteka gradovi.txt
10
(100,30)
(50,210)
(25,330)
(77,250)
(250,500)
(300,700)
(300,900)
(250,800)
(80,400)
(10,20)

 
0 0 hvala 0
12 godina
offline
Re: C# - Problemi i rješenja

Broj gradova imaš, tako da jedini "problem" je na neki način razdijeliti te stringove u kojima su zapisane koordinate. Googlaj "string.split method" pa pokušaj doći do rješenja. 

Poruka je uređivana zadnji put uto 13.7.2021 14:28 (steve90).
Nova poruka
E-mail:
Lozinka:
 
vrh stranice