C# - Problemi i rješenja izdvojena tema

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

@četvrtko

 

Random NumberGenerator = New Random ();

 

Stvaraš konstruktor, koji ti treba za rad. Više o njemu, ovdje.

 

int ResponseIndex = NumberGenerator (1,4);

Spremaš u varijablu neki broj između 1 i 4, nasumično izabran(slučajno)

Prouči, članak na ovom blogu o slučajnim brojevima.

 

Znači buš dobio broj između 1 i 4, te ako je vrijednost varijable ResponseIndex jednaka 1 ili 2, dobivaš odgovarajući odgovor za taj ispunjen uvjet za 3 i 4, da ti možeš bolje od toga.

 

U slučaju negativnog odgovora, ovaj programčić sa Jubito linka nudi slučajnim odabriom različite odgovore.

 

 

 

 

Panzerkampfwagen.Dinamo Zagreb.Matija.Leaving or dead, always ahead...
16 godina
offline
Re: C# - Problemi i rješenja
PzKpfw kaže...

@četvrtko

 

Random NumberGenerator = New Random ();

 

Stvaraš konstruktor, koji ti treba za rad. Više o njemu, ovdje.

 Ne koristi li se new operator za instanciranje klase?

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

Mislim da ti ne znaš osnove OOP-a, trebao bi krenuti od tamo...

Rvat katolik!
 
0 0 hvala 1
8 godina
neaktivan
offline
Re: C# - Problemi i rješenja
PzKpfw kaže...

@četvrtko

 

Random NumberGenerator = New Random ();

 

Stvaraš konstruktor, koji ti treba za rad. Više o njemu, ovdje.

 

int ResponseIndex = NumberGenerator (1,4);

Spremaš u varijablu neki broj između 1 i 4, nasumično izabran(slučajno)

Prouči, članak na ovom blogu o slučajnim brojevima.

 

Znači buš dobio broj između 1 i 4, te ako je vrijednost varijable ResponseIndex jednaka 1 ili 2, dobivaš odgovarajući odgovor za taj ispunjen uvjet za 3 i 4, da ti možeš bolje od toga.

 

U slučaju negativnog odgovora, ovaj programčić sa Jubito linka nudi slučajnim odabriom različite odgovore.

 

 

 

 

 Iskreno, kada citam ta dva bloga kao da citam herioglife... 

Zboravio sam napomenuti da sam pocetnik, te da mi je ovo prvi programski jezik kojeg ucim, sto se tice

 

int ResponseIndex = NumberGenerator (1,4);

 

mislim da sam shvatio,  znaci ako stavim (1,4); to mi se odnosi na prvi switch, pa ako stavim (5,8); to se odnosi na drugi switch, itd... ?

Poruka je uređivana zadnji put pet 6.10.2017 11:26 (četvrtko).
16 godina
offline
Re: C# - Problemi i rješenja
tnakir kaže...

Mislim da ti ne znaš osnove OOP-a, trebao bi krenuti od tamo...

 Sry što pitam. Iz ovoga sam to izvadio. Citat odmah na početku

This class is then instantiated with the new operator.

 

Onda opet ovdje:

Constructors are special methods, used when instantiating a class.

 

Nešto sam valjda pomiješao, idem dalje gledati.

 

 

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

 Sry što pitam. Iz ovoga sam to izvadio. Citat odmah na početku

 

 

 

Ma ti si u pravu, nisam na tebe mislio. Mislio sam na ovog momka šta ne zna što je konstruktor, a programirao bi u C#. Klase, konstruktori, objekti, metode, propertiji i sl. su najosnovniji pojmovi OOP-a, ako nisi to usvojio, ne možeš dalje.

Rvat katolik!
8 godina
neaktivan
offline
Re: C# - Problemi i rješenja
tnakir kaže...
Pero Dinamit kaže...

 Sry što pitam. Iz ovoga sam to izvadio. Citat odmah na početku

 

 

 

Ma ti si u pravu, nisam na tebe mislio. Mislio sam na ovog momka šta ne zna što je konstruktor, a programirao bi u C#. Klase, konstruktori, objekti, metode, propertiji i sl. su najosnovniji pojmovi OOP-a, ako nisi to usvojio, ne možeš dalje.

Ima li kakva knjiga koja obuhvaća te pojmove što si naveo (+ još toga) ili nekakav poduži video gdije se sve to objašnjava?

15 godina
offline
Re: C# - Problemi i rješenja
C# for dummies?
Rvat katolik!
 
2 0 hvala 1
8 godina
neaktivan
offline
Re: C# - Problemi i rješenja

Zahvaljujem.

14 godina
offline
C# - Problemi i rješenja

Ima li netko ideju kako citati sa standardnog inputa liniju po liniju tako dugo dok unos nije gotov.

Moje rjesenje je:

do
{
line = System.Console.ReadLine();
lines.Add(line);
} while (!string.IsNullOrEmpty(line));

 

 

E, sad je problem kad dodem do inputa koji ima u sebi prazan red.

Naravno kraj inputa nije definiran posebnim znakom.

ima neki nacin da ukoliko nema inputa sekundu on radi break iz loopa i nastavlja dalje?

ili neko elegantnije rjesenje?

 

EDIT:

Znaci ovaj empty je problem u while, ali onda ako ga maknem nema izlaska, a if(nesto) pa break unutar ifa ne mogu posto nemam definiciju kraja...

Poruka je uređivana zadnji put čet 26.10.2017 0:31 (CroNk3r).
Moj PC  
0 0 hvala 0
16 godina
offline
C# - Problemi i rješenja

Malo sam oglupio pa bi molio pomoć.

 

Imam 2 modela - Question i Answer. Svako pitanje može imati više odgovora. To je one-to-many veza, zar ne? 

 

Modeli ovako izgledaju

 

1. Question

public int Id { get; set; }

public string Name { get; set; }

public ICollection<Answer> Answers { get; set; }

 

2. Answer

public int Id { getset; }

public string Link { getset; }

public Question Question { getset; }         

public int QuestionId { getset; }

 

Akcija u kontroleru mi izgleda ovako

   public ActionResult Test()         {             

        var result = from r in _context.Questions.Include(a => a.Answers) select r;             

        return View(result);      }

 

View izgleda ovako:

@model TestProjekt.Models.Question

@foreach(var m in Model) {     

<h3>@m.Name</h3>     

<h4>@m.Answer.Link</h4> }

 

Kako da mi sada View ispiše recimo ovo:

 

Test 1

  - odgovor 1

  - odgovor 2

  - odgovor 3 

Test 2

  - bla bla

  - bla bla bla

Test 3

  - www.google.com

 

S 2 foreacha jedan unutar drugog mi ne radi, isto kada sam probao staviti IEnumerable tog modela...

Dvije su stvari beskonačne - svemir i ljudska glupost. Za svemir nisam siguran - Einstein
Poruka je uređivana zadnji put pet 1.12.2017 8:59 (Pero Dinamit).
Moj PC  
0 0 hvala 0
16 godina
offline
Re: C# - Problemi i rješenja

Riješio sam.

 

U Akciji sam stavio ovako da mi sve stavi u listu

var result = _context.Questions.Include(a => a.Answers).ToList();

 

A unutar View-a imam dva foreach-a, s time da drugi ide bez Razor sintakse i to me je bunilo jedno vrijeme, nisam koristio do sada jednu petlju unutar druge unutar View-a.

@model IEnumerable<TestProjekt.Models.Question>

 

@foreach(var m in Model) {     

   <h3>@m.Name</h3>     

  foreach(var t in m.Answers)     {         

     <h4>@t.Link</h4>     

   }

 }

 

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

Pozdrav radim program za prijavu pomocu username i passworda treba mi login funkcija pomocu bool.Moze li mi netko pomoci zezam se sa time vec 2 dana

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

Ne ne korsti, try catch za grananje. Koristi ascii tablicu, tryparse ili char.IsDigit(), char.IsNumber() 

7 godina
neaktivan
offline
Re: C# - Problemi i rješenja

Svaki je jezik tražen ako si dobar u tome. I kao iskusan programer trebao bi znati da je jezik najmanje bitna stavka u životu profesionalnog programera.

12 godina
offline
C# - Problemi i rješenja

Iako je tema potpuno mrtva, postavljam pitanje u nadi da možda naleti neka dobra duša s nekom pametnom dosjetkom.

 

Naime, pravim aplikaciju za FIFA/PES turnire u C#-u, Visual Studio, Windows Forms. Zapeo sam na liga tip turniru, odnosno round robin tournament typeu.

Dakle, korisniku je ponuđeno da izabere između 4 i 12 igrača za ligu te ih unese u bazu podataka. Nakon toga, utvara se nova forma sa tablicom i poljima za odigravanje utakmica.

Problem je sljedeći: na button click event 'izvuci protivnike' trebao bih random izbaciti dva igrača koja će međusobno igrati - svakog u jedan textbox. I nakon što oni odigraju, isto tako sljedeći par koji će igrati. Pod uvjetom da se ne ponavljaju igrači koji su već bili spojeni i da odigra svatko sa svakim. Točan broj igrača nije poznat unaprijed, odnosno može biti od 4-12 igrača. Nisam uspio osmisliti ništa što bi mi radilo. 


Bilo bi zanimljivo, malo za promjenu i odmor od stackoverflowa, prodiskutirati i vidjeti ideje na domaćem forumu. 

Moj PC  
1 0 hvala 0
11 godina
neaktivan
offline
Re: C# - Problemi i rješenja

Jednostavan algoritam za round robin turnir imaš na Wikipediji.

12 godina
offline
Re: C# - Problemi i rješenja
Bobobo-bo Bo-bobo kaže...

Jednostavan algoritam za round robin turnir imaš na Wikipediji.

To je vjerojatno prva stvar koju sam otvorio kad sam se suočio s problemom. 

Bilo bi jednostavno da mi je poznat broj igrača i da samo za određen broj igrača moram napraviti algoritam. 
Problem je što je moguć broj igrača između 4 i 12 i korisnik bi trebao izabrati broj igrača ovisno o potrebama. 

Onda bi ovisno o tome trebalo izbaciti utakmice. 

11 godina
neaktivan
offline
Re: C# - Problemi i rješenja

Algoritam ne ovisi o broju timova. Timovi se podijele u dvije paralelne liste ("gornja" i "donja"). Prvi element gornje liste je fiksiran, a ostali se rotiraju nakon svakog kola dok se ne izradaju sve kombinacije.

 

Evo ti implementacija s komentarima u Pythonu 3 pa se pokušaj snaći:

 

# Broj timova mora biti paran pa je lakše unijeti broj parova
n = int(input('Unesi broj parova:'))

# Broj parova = n, broj timova je 2n, lista timova je [0, 1, 2, ... , 2n-1]
# Podijeli timove u 2 liste ("gornji" i "donji") s jednakim brojem timova:
gornji = list(range(n))  # timovi [0, 1, 2, ... n-1]
donji = list(range(n, n * 2))  # timovi [n, n+1, n+2, ... 2n-1]

for kolo in range(n * 2 - 1):

    # Ispiši parove kola
    print('Kolo', kolo)
    for prvi, drugi in zip(gornji, donji):
        print('{} - {}'.format(prvi, drugi))

    # Rotiraj timove

    # Premjesti zadnjeg iz gornje liste na kraj donje liste
    zadnji_gornji = gornji.pop()
    donji.append(zadnji_gornji)

    # Premjesti prvog iz donje liste iza prvog iz gornje liste
    prvi_donji = donji.pop(0)
    gornji.insert(1, prvi_donji)

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

Možemo i sa jednom listom, kod svakog pomicanja elemenata na listi vršimo insert zadnjeg na index 1 a zatim zadnjeg mičemo sa liste.

 

  class Program
    {
      
        static void Main(string[] args)
        {
            List<string> liga = new List<string>();
            liga.Add("Hajduk");
            liga.Add("Dinamo");
            liga.Add("Rijeka");
            liga.Add("Osijek");
            liga.Add("Slaven");
            liga.Add("Istra");

            for(int i = 0; i < liga.Count-1; i++)
            {
                for (int j = 0; j < liga.Count / 2; j++)
                    Console.WriteLine("{0} vs {1}", liga[j], liga[liga.Count - j - 1]);
                liga.Insert(1, liga[liga.Count - 1]);
                liga.RemoveAt(liga.Count - 1);
                Console.WriteLine();
            }

        }
      
    }

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

Hvala obojici. Moje rješenje je bilo nešto kao kod Floki

Moj PC  
0 0 hvala 0
12 godina
offline
Re: C# - Problemi i rješenja
Floki kaže...

Možemo i sa jednom listom, kod svakog pomicanja elemenata na listi vršimo insert zadnjeg na index 1 a zatim zadnjeg mičemo sa liste.

 

  class Program
    {
      
        static void Main(string[] args)
        {
            List<string> liga = new List<string>();
            liga.Add("Hajduk");
            liga.Add("Dinamo");
            liga.Add("Rijeka");
            liga.Add("Osijek");
            liga.Add("Slaven");
            liga.Add("Istra");

            for(int i = 0; i < liga.Count-1; i++)
            {
                for (int j = 0; j < liga.Count / 2; j++)
                    Console.WriteLine("{0} vs {1}", liga[j], liga[liga.Count - j - 1]);
                liga.Insert(1, liga[liga.Count - 1]);
                liga.RemoveAt(liga.Count - 1);
                Console.WriteLine();
            }

        }
      
    }

Samo da se osvrnem na ovo. Imaš (slučajnu?) grešku na označenoj liniji koda. Vjerujem da je na liga.Insert kao indeks trebalo ići 0, a ne 1, kako bi prebacio zadnjeg na prvo mjesto. 

Inače, ako nekom bude trebalo, za neparan broj ekipa vrijedi sve isto, samo se odigrava jedna runda više (dakle i<liga.count, ne i < liga.count-1) te je drugi broj utakmica po rundi (liga.count / (n-1/2) ).

 

EDIT: zapravo, moja greška. Ovo kako si napravio je ispravno. Jedino u slučaju neparnog broja ekipa ide zadnji na prvo mjesto (indeks 0), u slučaju parnih ovako kako si ti napisao.

Poruka je uređivana zadnji put sri 17.1.2018 22:58 (Cordas).
16 godina
neaktivan
offline
C# - Problemi i rješenja

Da bi dobio ispravnu rotaciju timova jedno mjesto uvijek moraš fiksirati, nebitno da li se radi o parnom ili neparnom broju timova a nebitno i koje mjesto fiksiraš.

U biti ti kažeš da si kod neparnog broja timova fiksirao prvo mjesto drugog dijela niza a da to fiksiranje postižeš ispisom a ne insertom.

Poruka je uređivana zadnji put čet 18.1.2018 11:50 (Floki).
 
0 0 hvala 0
12 godina
offline
Re: C# - Problemi i rješenja
Floki kaže...

Da bi dobio ispravnu rotaciju timova jedno mjesto uvijek moraš fiksirati, nebitno da li se radi o parnom ili neparnom broju timova a nebitno i koje mjesto fiksiraš.

U biti ti kažeš da si kod neparnog broja timova fiksirao prvo mjesto drugog dijela niza a da to fiksiranje postižeš ispisom a ne insertom.

Nismo se sporazumili baš najbolje. 

Fiksiranje prvog postižem insertom, ne ispisom. Samo sam htio dodati da mi ne funkcionira kada fiksiram prvo mjesto liste. Recimo paran broj igrača, 4 kluba - u trećoj rundi se ponovi jedan par iz prve runde. Što nije slučaj ako fiksiram drugo mjesto liste.

Kod neparnog broja je sve isto, samo jedna runda više se mora odigrati iz razloga jer je svako kolo jedan igrač slobodan. Dakle, samo u prvoj for petlji ide  i < liga.count,  ne  i<liga.count-1  kao u slučaju parnog broja ekipa. 

Možda sam malo spetljao s odgovorom u prošloj poruci jer sam se i sam malo spetljao, ali sve odlično radi, hvala puno na pomoći. 

11 godina
offline
C# - Problemi i rješenja

Pozdrav, trebam savjet oko rješavanja jednog problema. Imam datoteku iz koje trebam pročitati podatke i spremiti u objekte određene klase nakon što validiram podatke potrebno je iste spremiti u bazu.

Datoteka sadrži podatke, unutar datoteke znam poziciju na kojoj mi se nalazi svaki podatak početak i kraj podatka kojeg izvučem i spremim u objekt klase Data. Unutar datoteke nemam delimiter jer moguće je da neke vrijednosti budu odmah jedna iza druge.


Redni broj Autor Knjiga Cijena ŠifraKnjige DatumIzdavanja

 

Napravio sam sebi klasu Data, te svaki podatak iz linije koji čitam spremim u objekt klase Data, nakon što učitam jednu liniju iz datoteke potrebno je skupiti sve greške koje su pronađene za određeni podatak i pohraniti ih u listu lineError. Nisam htio ovdje dodavati implentaciju svih metoda jer mislim da je nepotrebno zanima me samo je li ovo dobar pristup ili postoji bolji?

Problem je kod ovoga što nakon što učitam jednu liniju potrebno je dohvatiti sve greške koje se nalaze u polju error klase Data, jer naknadno opet moram provjeriti da li se šifra knjige pronalazi u mojoj bazi. Tako da nakon što obradim sve podatke iz datoteke moram prikazati na kojoj liniji mi se nalazi greška i kojeg je tipa greška (da li je ispravna duljina podatka, da li je podatak prazan string, ...)

 

public class FileData

{

     string fileName = "";

     List<Line> lines = new List<Line>();

}

 

public class Line

{

     List<Data> lineData = new List<Data>();

     List<Error> lineError = new List<Error>();

}

 

public class Data
{

     string fieldName = "";

     int start = 0;

     int end = 0;

     object value = null;

     Error error = null;

}

 

Poruka je uređivana zadnji put ned 21.1.2018 12:46 (Xyloto).
 
0 0 hvala 0
9 godina
offline
C# - Problemi i rješenja

Pozdrav,

 

Koja je razlika između deklaracije eventa korištenjem ugrađenog delegata EventHandler<T> i pisanja svog delegata?

Primjer:

 

public delegate void NewClientDelegate(object sender, NewClientEventArgs e);

public event NewClientDelegate NewClientEvent;

 

ili

 

public event EventHandler<NewClientEventArgs> NewClientEvent;

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

U osnovi nema razlike, EventHandler<Args> je samo interni delegat od frameworka koji je isto deklariran putem delegate keyworda. Možeš njega u osnovi uzeti da nemoras deklarirati svoj delegat.

EventHandler<Args> ti je ovako napravljen:

public delegate void EventHandler<TEventArgs>(object sender, TEventArgs e);

8 godina
offline
C# - Problemi i rješenja

Dakle jedan (vjerojatno) jednostavan problem gdje ne kužim zašto ne radi kako želim.

public class AddressEntity : IAddressEntity
{
   public Guid? Id { get; set; }

   public String AddressLine1 { get; set; }

   public String AddressLine2 { get; set; }

   public String City { get; set; }

   public String State { get; set; }

   public Int32 Zip { get; set; }

  public string AddressDisplay {
    get
    {
      if(!String.IsNullOrEmpty(AddressLine2)
        return $"{this.AddressLine1}, {this.AddressLine2}, {this.City} {this.Zip}, {this.State}";
      else
        return $"{this.AddressLine1}, {this.City} {this.Zip}, {this.State}";
    }
   }
}

public interface IAddressEntity
{
   Guid? Id { get; set; }
   String AddressLine1 { get; set; }
   String AddressLine2 { get; set; }
   String City { get; set; }
   String State { get; set; }
   Int32 Zip { get; set; }
   String AddressDisplay { get; }
}

 

Property-ije popunim mapiranjem (Automapper) iz baze.

 

Dakle svi property-iji budu popunjeni ali AddressDisplay bude null. Jel netko zna zašto? 

Poruka je uređivana zadnji put sri 31.1.2018 20:29 (Repko).
 
0 0 hvala 0
8 godina
offline
Re: C# - Problemi i rješenja

Našao sam.

Problem je bio u Automapperu i mapiranju sa interface-a.

Treba naglasiti mapiranje na concrete type u ovom slučaju AddressEntity.

 

CreateMap<IAddressEntity, Address>().ReverseMap().As<AddressEntity>();

15 godina
offline
C# - Problemi i rješenja

Pozdrav,

Trebao bih pomoć oko (pretpostavljam) jednostavnog problema vezanog uz prikaz datuma iz RSS feeda.

Datum je u klasičnom PubDate obliku za RSS feed, a ja bih trebao dd/MM/yyyy oblik (slika dolje).

Pokušao sam par rješenja što sam pronašao na stackoverflowu, ali bez uspjeha.

 

Model:

namespace ReadRSSFeed.Models
{
 public class RSSFeed
 {
  public string Title { get; set; }
  public string Link { get; set; }
  public string Description { get; set; }
  public string PubDate { get; set; }
 }
}

 

View:

@{
 ViewBag.Title = "Index";
}
<br />
<h2>RSS Feed Bug.hr</h2>
<hr />
<br />
<table class="table table-hover">
 <thead>
  <tr>
  <th>Naslov</th>
  <th>Opis</th>
  <th>Datum</th>
  </tr>
 </thead>
 <tbody>
  @if (ViewBag.RSSFeed != null)
  {
  foreach (var item in ViewBag.RSSFeed)
  {
   <tr>
   <td><a href="@item.Link">@item.Title</a></td>
   <td>@item.Description</td>
   <td>@item.PubDate</td>
   </tr>
  }
  } 
 </tbody>
</table>

 

Controller:

namespace ReadRSSFeed.Controllers

{
 public class RSSFeedController : Controller
 {
  public IActionResult Index()
  {
  WebClient wclient = new WebClient();
  string RSSURL = "https://www.bug.hr/rss";
  string RSSData = wclient.DownloadString(RSSURL);


  XDocument xml = XDocument.Parse(RSSData);
  var RSSFeedData = (from x in xml.Descendants("item")
            select new RSSFeed
           {
            Title = ((string)x.Element("title")),
            Link = ((string)x.Element("link")),
            Description = ((string)x.Element("description")),
            PubDate = ((string)x.Element("pubDate"))
           });
  ViewBag.RSSFeed = RSSFeedData;
  ViewBag.URL = RSSURL;
  return View();
  }
 }
}

Poruka je uređivana zadnji put pon 5.2.2018 10:30 (s0me0ne).
Moj PC  
0 0 hvala 0
Nova poruka
E-mail:
Lozinka:
 
vrh stranice