C# - Problemi i rješenja izdvojena tema

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

Kako u textboxu koji je multiline u zadnjem redu obrisati jedan znak?

 

Na gumb u svakom retku dodajem na kraju znak " \" (backspace), ali mi u zadnjem to nije potrebno.

Probao sam sa

lines[lines.Length-1] = rgx.Replace(lines[lines.Length-1], replacement);

 

Prije toga mi je ovako definirano:

string replacement= " ";

string pattern = "\b";

Regex rgx = new Regex(pattern)

 

Na kraju imam textbox.Lines = lines gdje mi u taj multiline stavi te znakove, ali ovo sa regex-om ne radi jer i dalje stavi backspace na kraju teksta u zadnji red.

Dvije su stvari beskonačne - svemir i ljudska glupost. Za svemir nisam siguran - Einstein ----- www.cigoff.eu -----
Moj PC  
0 0 hvala 0
12 godina
neaktivan
offline
Re: C# - Problemi i rješenja

Možda da pokušaš sa Substringom: 

 

string sub = input.Substring(0, input.Length - 1);

 

Samo primjeni na TextBox.

16 godina
neaktivan
offline
Re: C# - Problemi i rješenja
samoMalo657 kaže...

Pozdrav ekipa,

 

kolega i ja radimo preko visual studija u c#-u program autonomnog vozila, dakle trebale bi biti neke prepreke koje bi vozilo samo automatski izbjegavalo, te neki izlaz iz tog prostora gdje bi završavao program, mislim da smo uzeli prevelik zalogaj te nam je glavni problem autonomnost, odnosno da vozilo samo ide, napravili smo dobar dio, mogu vam stavit file-ove ili kod u topic, prepreke smo mislili napravit preko piksela, tako da stavimo određenu boju za prepreke, a za pozadinu neku drugu, pa da detektira prepreku na taj način i izbjegne ju. Trenutno možemo sami upravljati s vozilom, ali naravno to nam nije cilj. U biti je najveći problem oko autonomije vozila, našli smo funkcije koje bi trebale biti za prepreke, mislim da je to ovo: https://msdn.microsoft.com/en-us/library/windows/desktop/dd144909(v=vs.85).aspx

Eto pa ako netko može pomoći slobodno.

 Pošto je nedavno spomenut A star algoritam na forumu, palo mi na pamet da ćeš s njim riješiti učinkovitije ovaj problem, nego sa onim BFS što sam ga prije napisao. Ovaj algoritam ne luta oko prepreka, nego ih nakraćim putem zaobiđe i to mu je prednost pred BFS. Konkretno, ovaj put BFS ne bi izabrao, on bi išao do prepreke, što ne bi bio najkraći put. Uz to, imaš kombinacije da osim prepreka uzmeš u obzir i različit kvalitet cesta, i još puno toga se može napraviti.

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace A_star
{
    class Tocka
    {
        public int X;
        public int Y;
        public Tocka(int x, int y)
        {
            X = x;
            Y = y;
        }
    }
    class Kvadrat
    {
        public int X;
        public int Y;
        public int F;
        public int G;
        public int H;
        public Kvadrat Prethodni;
        public Kvadrat(Tocka T)
        {
            X = T.X;
            Y = T.Y;
        }

    }
    class Mapa
    {
        char[][] Linije = new char[25][];
        int[] xOs = { 0, 0, -1, 1 };
        int[] yOs = { 1, -1, 0, 0 };
        public void Nacrtaj(Tocka Start, Tocka Cilj)
        {
           
           
            for (int i = 0; i < 25; i++)
            {
                Linije[i] = new char[35];
                for (int j = 0; j < 35; j++)
                    Linije[i][j] = '.';
            }
            Linije[Start.X][Start.Y] = 'S';
            Linije[Cilj.X][Cilj.Y] = 'C';
           
            for(int i=0;i<Cilj.Y-Start.Y-9;i++)
            {
                Linije[Start.X - 8][Start.Y+4+i] = 'X';
                Linije[Start.X + 8][Start.Y+4+i] = 'X';
                Linije[Start.X-8+i][Cilj.Y-Start.Y-1] = 'X';
               
            }
                   
               
        }
        public List<Kvadrat> SusjedniKvadrati(Kvadrat trenutni)
        {
            List<Kvadrat> PopisSusjeda = new List<Kvadrat>();
            for(int i=0;i<4;i++)
            {
                int a = trenutni.X + xOs[i];
                int b = trenutni.Y + yOs[i];
                if(a<25 && b<35 && a>=0 && b>=0 && Linije[a][b] != 'X')
                {
                    Tocka novaTocka = new Tocka(a, b);
                    Kvadrat noviKvadrat = new Kvadrat(novaTocka);
                    PopisSusjeda.Add(noviKvadrat);
                }
            }
            return PopisSusjeda;
        }
        public int HeuristikaManhattan(Kvadrat kvadrat, Kvadrat Cilj)
        {
            int dX = Math.Abs(kvadrat.X - Cilj.X);
            int dY = Math.Abs(kvadrat.Y - Cilj.Y);
            return dX + dY;

        }
        public void Put(Kvadrat kvadrat, Kvadrat start, Kvadrat cilj)
        {
            List<Kvadrat> put = new List<Kvadrat>();
            while(kvadrat != null)
            {
                put.Add(kvadrat);
                kvadrat = kvadrat.Prethodni;
            }
            for(int i=put.Count-2; i>0; i--)
            {
                if (put[i].X == put[i - 1].X)
                    Linije[put[i].X][put[i].Y] = '-';
                else
                    Linije[put[i].X][put[i].Y] = '|';
            }
        }
        public void Prikazi()
        {
            for (int i = 0; i < 25; i++)
                Console.WriteLine(Linije[i]);  
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            Mapa mapa = new Mapa();
            Tocka Start = new Tocka(12, 4);
            Tocka Cilj = new Tocka(21, 30);
            mapa.Nacrtaj(Start, Cilj);
            List<Kvadrat> otvorenaLista = new List<Kvadrat>();
            List<Kvadrat> zatvorenaLista = new List<Kvadrat>();
            Kvadrat start = new Kvadrat(Start);
            Kvadrat cilj = new Kvadrat(Cilj);
            Kvadrat trenutni = null;
            int G = 0;
            otvorenaLista.Add(start);
            while(otvorenaLista.Count>0)
            {
                int najmanji = otvorenaLista.Min(k => k.F);
                trenutni = otvorenaLista.First(k => k.F == najmanji); // trazimo cvor sa najmanjim ukupnim troskom kretanja
                zatvorenaLista.Add(trenutni); // dodajemo ga u zatvorenu listu
                otvorenaLista.Remove(trenutni); // izbacujemo cvor iz otvorene liste
                if (zatvorenaLista.FirstOrDefault(k => k.X == cilj.X && k.Y == cilj.Y) != null) // dosli na cij
                    break;
                List<Kvadrat> susjedniKvadrati = mapa.SusjedniKvadrati(trenutni);
                G++; // povecanje troska kretanja za susjedne cvorove od cvora start, G je u konkretnom primjeru 1 i za sve cvorove isti
                foreach(Kvadrat kvadrat in susjedniKvadrati)
                {
                    if (zatvorenaLista.FirstOrDefault(k => k.X == kvadrat.X && k.Y == kvadrat.Y) != null) // cvor je vec u zatvorenoj listi
                        continue;
                    if(otvorenaLista.FirstOrDefault(k => k.X == kvadrat.X && k.Y == kvadrat.Y) == null) // posto cvor nije obradjen racunamo sve parametre i vezemo ga u graf
                    {
                        kvadrat.G = G;
                        kvadrat.H = mapa.HeuristikaManhattan(kvadrat, cilj);
                        kvadrat.F = kvadrat.G + kvadrat.H;
                        kvadrat.Prethodni = trenutni;
                        otvorenaLista.Insert(0, kvadrat);
                    }
                    else
                    {
                        if(kvadrat.H + G <  kvadrat.F) // cvor je obradjen, ako je ukupni trosak puta manji sa trenutnim troskom puta od starta idemo tim putem
                        {
                            kvadrat.G = G;
                            kvadrat.F = kvadrat.H + G;
                            kvadrat.Prethodni = trenutni;
                        }
                    }
                }

            }
            mapa.Put(trenutni, start, cilj);
            mapa.Prikazi();
          
        }
    }
}
 

 

Poruka je uređivana zadnji put pet 18.3.2016 22:37 (Floki).
13 godina
offline
C# - Problemi i rješenja

U školi smo učili programirati u C-u i sad sam počeo malo više istraživat i htio bih to nadograditi na C#.Probao sam pogledati par videa ali su svi za totalne početnike(konkretno microsoft virtual academy) pa me zanimaju glavne razlike između ta dva programska jezika jer mi nije zanimljivo slušati predavača pola sata o for petlji koju znam da bih naučio jednu ili dvije sintaksne razlike između jezika. 

Ono što možeš sutra,ne ostavljaj za danas.
Poruka je uređivana zadnji put sub 19.3.2016 19:37 (zelenbic).
Moj PC  
0 0 hvala 0
15 godina
odjavljen
offline
Re: C# - Problemi i rješenja

C# je objektni jezik, C je proceduralni. To je glavna razlika. Skoro sve je objekt. Možeš ti pisati proceduralno ali nema smisla kad imaš objekte na raspolaganju. Dosta stvari rješavaš preko LINQa (sortiranje i traženje po listama, npr). .Net (framework za C#) se bavi sa nekim stvarima koje si do sada ručno pazio (alociranje i dealociranje memorije).

 

Pročitaj ovo. I ovo.

 

Ako te zanima brzi razvoj poslovnih i sličnih aplikacija, drži se C#. Ako želiš biti bliže hardveru i raditi ručno dosta stvari ali imati i brži kod, onda imaš C++. C je za jako specifičnu uporabu (driveri i sl.) gdje je najvažnija brzina, direktni pristup hardveru i multiplatform rad. Sigurno nećeš pisati npr. POS kasu u C ili drivere u C#.

Ovaj forumaš je netolerantan prema osobama svih nacionalnosti, rasa i spolnog opredjeljenja te smatra da svaka osoba ima pravo biti ugnjetavana zbog svojih glupih mišljenja.
10 godina
neaktivan
offline
C# - Problemi i rješenja

Imam problem sa pristupom podacima u Frame-u:

<FRAMESET BORDER="0" ROWS="100,500,130"><FRAMESET BORDER="0" COLS="80%,20%"><FRAME SRC="http://aplinfo.apl.com/ext_html/hpttopnav.html" NAME="topframeOne" marginwidth=0 marginheight=0 SCROLLING="no" NORESIZE><FRAME SRC="/gentrack/blank.html" NAME="topframeTwo" marginwidth=0 marginheight=0 SCROLLING="no" NORESIZE></FRAMESET><FRAMESET BORDER="0" COLS="16%,*,1%"><FRAME SRC="http://aplinfo.apl.com/cgi-bin/menutracking.pl?trackInput01=TEMU6460061&trackInput02=null&trackInput03=null&trackInput04=null&trackInput05=null&trackInput06=null&trackInput07=null&trackInput08=null" NAME="leftframe" NORESIZE><FRAME SRC="/gentrack/containerTrackingFrame.do" NAME="bodyframe" NORESIZE><FRAME SRC="/gentrack/blank.html" NAME="bottomframeTwo" marginwidth=0 marginheight=0 NORESIZE></FRAMESET><FRAMESET BORDER="0" COLS="80%,*"><FRAME SRC="http://aplinfo.apl.com/ssi/ssifooterw.html" NAME="bottomframeOne" marginwidth=0 marginheight=0 NORESIZE><FRAME SRC="/gentrack/blank.html" NAME="bottomframeTwo" marginwidth=0 marginheight=0 NORESIZE></FRAMESET>

 

Web Stranica

 

 

Pokušao sam: 

html = webBrowser1.Document.Body.InnerHtml;

html = webBrowser1.Document.Body.OuterHtml;

 

Bezuspješno! Nije mi važno da li se radi o Web Browseru bitno mi je samo da dođem do podataka iz FRAME-a kroz C#.

 

Pronašao sam alternativno rješenje da kopiram sadržaj webBrowsera u klipboard i poslije obrađujem te podatke:

webBrowser1.Document.ExecCommand("SelectAll", true, null);
webBrowser1.Document.ExecCommand("Copy", true, null);

 

IDataObject iData = Clipboard.GetDataObject();
string x = (String)iData.GetData(DataFormats.Text);
richTextBox1.AppendText(x);

 

Međutim potrebno mi je stvarno riješenje sa pristupom FRAME-u. Zaboravio sam napisat da sam pokušao kroz Source Framea (http://homeport.apl.com/gentrack/containerTrackingFrame.do)  međutim dobijam grešku Error 500: javax.servlet.ServletException: java.util.EmptyStackException

 

Neki prijedlog? 

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

A što ne bi bilo bolje ovako

 

        string frame = "http://homeport.apl.com/gentrack/containerTrackingFrame.do";
        string main = "http://homeport.apl.com/gentrack/trackingMain.do?trackInput01=TEMU6460061";

        public Form1()
        {
            InitializeComponent();

            HttpWebRequest rq = (HttpWebRequest)WebRequest.Create(frame);
            rq.Host = "homeport.apl.com";
            rq.UserAgent = "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:45.0) Gecko/20100101 Firefox/45.0";
            rq.Referer = main;

            HttpWebResponse resp = (HttpWebResponse)rq.GetResponse();
            Stream resStream = resp.GetResponseStream();
            StreamReader reader = new StreamReader(resStream);
            textBox1.Text = reader.ReadToEnd();

            HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
            doc.LoadHtml(textBox1.Text);
            ...........
        }

 

I onda to proparsiraš lijepo...

 

edit - sad vidim da tu nešto ne štima, ali moram ići na teren, ne mogu ti pomoć trenutno

Ovaj forumaš je netolerantan prema osobama svih nacionalnosti, rasa i spolnog opredjeljenja te smatra da svaka osoba ima pravo biti ugnjetavana zbog svojih glupih mišljenja.
Poruka je uređivana zadnji put čet 31.3.2016 20:46 (Sum_of_all_fears).
10 godina
neaktivan
offline
C# - Problemi i rješenja

Svejedno Hvala. Iz nekog razloga vraća HTML bez informacija.

 
0 0 hvala 0
10 godina
neaktivan
offline
C# - Problemi i rješenja

Napravio sam dugme Load, koji treba sluziti kao gumb za ucitavanje text file... Sada bi trebao taj text file ispisati u listbox-u... Kako bi to trebao napraviti?

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

Napravio sam dugme Load, koji treba sluziti kao gumb za ucitavanje text file... Sada bi trebao taj text file ispisati u listbox-u... Kako bi to trebao napraviti?

List<string> lines = new List<string>();
using (StreamReader r = new StreamReader(f))
{
string line;
while ((line = r.ReadLine()) != null)
{
lines.Add(line);
}
}

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

Pogledaj ovo:

 

https://msdn.microsoft.com/en-us/library/s2tte0y1%28v=vs.110%29.aspx

 

 

 

I odustao sam od koda, editor javlja nešto ne dozvoljeno.......

10 godina
neaktivan
offline
Re: C# - Problemi i rješenja
Dema kaže...
tireN1337 kaže...

Napravio sam dugme Load, koji treba sluziti kao gumb za ucitavanje text file... Sada bi trebao taj text file ispisati u listbox-u... Kako bi to trebao napraviti?

List<string> lines = new List<string>();
using (StreamReader r = new StreamReader(f))
{
string line;
while ((line = r.ReadLine()) != null)
{
lines.Add(line);
}
}

 Dobivam error sada za Streamreader 

 

http://prntscr.com/aozeor

 

EDIT:

 

Dodao sam using system.io ali mi opet pokazuje gresku za ovaj (f))

Poruka je uređivana zadnji put sri 6.4.2016 21:28 (tireN1337).
15 godina
offline
Re: C# - Problemi i rješenja

Pa hooveraj preko errora i VS će ti reći što ne valja. Ako imaš 2015 možeš (mislim) pokušati sa ALT + ENTER i ponuditi će ti fixeve.

 

Uglavnom, kod tebe f nije definiran. Ili mu definiraj varijablu f tipa string u koji ćeš zapisati put do file koji želiš pročitati ili unutar samog konstruktora ubaci umjesto f put do filea.

You can patch technical vulnerabilities as they evolve, but there is no patch for stupidity, or rather gullibility. - Kevin Mitnick
12 godina
offline
Re: C# - Problemi i rješenja

using System.IO;

 

Inače kod bilo kojeg errora klikni na podcrtano i pojavi ti se mala podvlaka. Kad dođeš mišem na nju otvori ti se što možeš dalje napraviti.

 

A pogledaj si i error list, imaš ga pod View (slika 2)

slika 1 slika 1
slika 2 slika 2
Poruka je uređivana zadnji put sri 6.4.2016 23:22 (Badjo_5).
10 godina
offline
C# - Problemi i rješenja

Dakle učim C# i spremam se za MTA. Mislim da sam dosta spreman, al sam zapeo na 2 stvari.

 

Npr imam zadatak napraviti jednostavni kalkulator i to napravim preko SWITCH. Kako napraviti da kad se operacija završi program traži mogučnost ponovnog unosa a ne da se ugasi? Dakle da mogu stalno korisitit kalkulator bez da ga ponovno pokrećem.

 

Druga stvar, jel mi može netko objasniti "return" u metodama? Napravim metode koje vrše izračun al rade i bez return pa mi nije jasno.

 

Odgovor može i na PM ako smatrate da mu nije mijesto tu.

 

HVALA!

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

Za kalkulator unutar jedne metode (npr. void Option) imaš Switch gdje je npr. opcija 1 za računanje, a 2 za kraj.

Unutar te prve opcije pozivaš drugu metodu (npr. case 1: Calculate()) gdje je to stvarno računanje sa unosom brojeva, a na drugu staviš recimo poruku za kraj programa.

Na kraju te prve metode preko if-a pitaš koji je bio case i ako je opcija 1 opet pozivaš tu istu prvu metodu Option (rekurzivna funkcija mislim da se to zove kada poziva samu sebe ).

 

Može to i sa do-while petljom isto i jednostavnije sada kad bolje pogledam bolje vidim 

 

A kod metoda i tipova, prouči ovo

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

Upravo sam na nekom forumu naišao na dosta čudan problem, čovjek tvrdi da ima tek kreiran Windows Form projekat u Visual Studiu, sa jednim Button-om na koji nije dodan nikakav kod, kada pokrene program nod32 (licencirana verzija) ga blokira, izbaci mu nešto kao da ima virus (nije navedena tačna poruka), kada skenira cijelo računalo nod32 ne pronađe ništa, isti slučaj i kada pokuša ponovno kreirati potpuno prazan projekat i pokrenuti.

Zanima me šta vi mislite o tome? Ja prvi put čitam ovakvo nešto.

 
0 0 hvala 0
16 godina
offline
Re: C# - Problemi i rješenja
NOD je inace smeće od AV-a iz mog iskustva, a to što ti izbaciva se može iskljuciti iz opcija, nesto za traženje još neotkrivenih virusa, ne znam tačno kako piše. Meni je npr. označavao potencijalnom prijetnjom exe koji dodaje sebe u startup.
16 godina
offline
C# - Problemi i rješenja

Jel iko koristi VS2015 ili drugu verziju na 4K ekranu sa WinForms aplikacijom? Zadnjih par dana pokusavam doci do rjesenja, ali bezuspjesno. Koristim 2 kompjutera dok programiram, zavisno od mjesta, jedan je 4K drugi je stari LCD sa rezom 1280x1024. Koji god form prepravim ili kreiram na 4K ekranu, i poslije ga otvorim na starom LCD-u, obicno form se smanji ili se na neki drugi nacin layout poremeti. Ako kreiram na LCD-u form, obicno ga otvori prvi put kako treba na 4K monitoru, ali to je sve. Pokusao sam mjenjati AutoScaleMode, i dodavati app.manifest kao sto govore po internetu, ali koliko vidim jednostavno dizajniranje na 4K ekranu je nedoradjena funkcija VS-a. Ako neko ima neko rjesenje ili je vise istrazivao i testirao, volio bih znati.

 

PS. Izvinjavam se ako je pitanje van teme.

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

Gledam malo ovaj tutorijal

 

http://www.bug.hr/forum/topic/programiranje/c-delegati/67373.aspx

 

I imam pitanje, zašto se delegat deklarira prije main funkcije?

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

U .Netu je svejedno gdje si definirao, prije ili poslije. Možeš i na kraju, iza svih funkcija. Običaj je da se takve "globalne" varijable definiraju na vrhu, da bi ih bilo lakše pronaći kasnije, a ne da se neka stvori u sredini, poslije 20 funkcija. Klase pri dnu, da ne smetaju (isto preglednosti radi), pogotovo ako su neke koje su potrebne samo za klase/funkcije u toj klasi. Enume isto stavljaš na vrh, kao i razne delegate, konstruktore i sl. Što se tiče samog .neta, njemu je svejedno gdje su.

Ovaj forumaš je netolerantan prema osobama svih nacionalnosti, rasa i spolnog opredjeljenja te smatra da svaka osoba ima pravo biti ugnjetavana zbog svojih glupih mišljenja.
13 godina
neaktivan
offline
C# - Problemi i rješenja

Nisam dobro postavio pitanje 

Zašto se delegat ne može deklarirati unutar main funkcije?

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

Zato jer se ne može

 

Delegat je u osnovi klasa koja nasljeđuje System.MulticastDelegate (koliko se sjećam) i kao takav, ne može se deklarirati unutar metode, isto kako ne možeš definirati niti jednu drugu klasu unutar metode (funkcije). Zbog toga se deklarira van maina tj. van bilo koje funkcije.

Ovaj forumaš je netolerantan prema osobama svih nacionalnosti, rasa i spolnog opredjeljenja te smatra da svaka osoba ima pravo biti ugnjetavana zbog svojih glupih mišljenja.
13 godina
neaktivan
offline
Re: C# - Problemi i rješenja

Tnx!!! 

10 godina
offline
C# - Problemi i rješenja

Kako mogu naći max vrijednost u 2D array u svakom redu?

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

Kako mogu naći max vrijednost u 2D array u svakom redu?

 

static void Main(string[] args)

{

 

double[,] scoreY = { { 2.82, 1.87, 2.92, 2.91, 1.27 }, { 2.12, 1.40, 2.38, 1.94, 1.30 }, { 3.53, 1.80, 1.19, 1.94, 0.85 } };

double[] result = new double[5];

double max = scoreY[0, 0];

for (int x = 0; x < scoreY.GetLength(0); x++)

{

 

max = 0.0;

for (int y = 0; y < scoreY.GetLength(1); y++)

{

if (scoreY[x, y] > max)

{

switch (x)

{

case 0:

 

max = scoreY[x, y];

break;

 

case 1:

max = scoreY[x, y];

break;

case 2:

max = scoreY[x, y];

break;

 

 

}

result[x] = max;

}

}

}

}

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

Dema kod koji si postavio nema nikakvog smisla. Zašto bi pravio polje za rezultat od 5 elemenata? Zašto bi najprije postavio max na prvi element matrice, a kasnije svaki put postavljao na 0.0 unutar petlje? Što da su elementi isključivo negativni brojevi? Zašto bi ubacivao switch u cijelu priču?

 

Autor, prije nego pogledaš kod, pogledaj prijedlog rješenja i pokušaj sam.

Pronađi broj redaka i stupaca u matrici

  • Kreiraj polje koje će držati rezultat one veličine koliko ima redaka
  • Napiši for koji će ići po retcima
  • Deklariraj u tom prvom foru pomoćnu varijablu i inicijaliziraj ju na nulti element u danom retku (može i bez ovoga, ali s obzirom da je zad. trivijalan, onda što više pješke to bolje)
  • Napiši unutarnji for koji će ići po stupcima
  • U unutarnjem foru napravi provjeru je li trenutni element veći od vrijednosti pomoćne varijable, ako je pohrani njegovu vrijednost u pomoćnu varijablu
  • Nakon unutarnjeg fora u polje s rezultatima pohrani pronađeni maksimalni element (pohranjen je u pomoćnoj varijabli)

 

I na kraju:

            double[,] SomeArray = {
                { 2.82, 1.87, 2.92, 2.91, 1.27 },
                { 2.12, 1.40, 2.38, 1.94, 1.30 },
                { 3.53, 1.80, 1.19, 1.94, 0.85 }
            };

            int RowCount = SomeArray.GetLength(0);
            int ColCount = SomeArray.GetLength(1);
            double[] MaxPerRow = new double[RowCount];

            for (int i = 0; i < RowCount; i++)
            {
                double Max = SomeArray[i, 0]; // Max mi ni ne treba, moze i direkt u polje s rezultatima na i-tu lokaciju
                for (int j = 0; j < ColCount; j++)
                {
                    if (SomeArray[i, j] > Max)
                    {
                        Max = SomeArray[i, j];
                    }
                }
                MaxPerRow[i] = Max;
            }

Poruka je uređivana zadnji put sri 20.4.2016 18:12 (Arto).
15 godina
offline
Re: C# - Problemi i rješenja

Komplicirate sa C++ -like kodom u .NET jeziku.

 

 

var firstDimensions = Enumerable.Range(0, someArray.GetLength(0));
var secondDimensionLength = someArray.GetLength(1);
foreach (var firstDimensionIndex in firstDimensions)
{
   var toSkipe = secondDimensionLength * firstDimensionIndex;
   var highest = someArray.Cast<double>()
     .Skip(toSkipe)
     .Take(secondDimensionLength)
     .Max();
   Console.WriteLine(highest);
}

You can patch technical vulnerabilities as they evolve, but there is no patch for stupidity, or rather gullibility. - Kevin Mitnick
16 godina
neaktivan
offline
C# - Problemi i rješenja

Može to sa jednom foreach petljom i samo sa jednim max iz linq, kad imamo niz čiji elementi su nizovi, svaka iteracija foreach petlje daje niz, a na niz možemo primjeniti max iz linq, foreach petlja lista pojedine elemente niza, a to su ovdje nizovi.

 

 

using System;
using System.Text.RegularExpressions;
using System.Collections.Generic;
using System.Numerics;
using System.Linq;

namespace ConsoleApp
{
    class Program
    {
      
        static void Main()
        {
            double[][] niz = new[]
            {
                new[] {1.5, 3.2, 4.1},
                new[] {5.4, 3.8, 4.2},
                new[] {2.1, 5.8, 3.1}
            };
            int broj = niz.GetLength(0);
            double[] maxNiz = new double[broj];
            int index = 0;
            foreach (var item in niz )
            {
                double max = item.Max();
                maxNiz[index++] = max;
            }
        }
    }
}

Poruka je uređivana zadnji put sri 20.4.2016 23:03 (Floki).
 
2 0 hvala 0
11 godina
neaktivan
offline
Re: C# - Problemi i rješenja

S tako definiranim arrayom može i kraće:

using System;
using System.Linq;

class Program
{
    static void Main()
    {
        double[][] SomeArray = new[]
        {
            new[] {1.5, 3.2, 4.1},
            new[] {5.4, 3.8, 4.2},
            new[] {2.1, 5.8, 3.1}
        };
        var maxNiz = from row in SomeArray select row.Max();
        foreach (var item in maxNiz)
        {
            Console.WriteLine(item);
        }
    }
}

Nova poruka
E-mail:
Lozinka:
 
vrh stranice