Koriscenje naredbi za kontrolu toka u obradi niza

1669723382767.png
 
tacno je, medjutim to ima i neka ogranicenja. Ako je data.txt na web serveru u 'default' folderu fetch ce jos i da ga dohvati.
Ali nisam sasvim siguran da ce to da radi u lokalu u browseru sa lokalnim HTML scriptom. Mislim da je to nekad mozda i radilo ali se dosta hakovalo pa browseri imaju sad razna obezbedjenja da ne mogu da cure informacije.

probao - udara u cors policy

Access to fetch at 'file:///home/lj/wrk/bible.txt' from origin 'null' has been blocked by CORS policy: Cross origin requests are only supported for protocol schemes: http, isolated-app, ipns, https, chrome-untrusted, ipfs, data, chrome-extension, chrome.
moras preko nekog proksija. Kod javescripta je nemoguce editovati i uredjivati fajl, ali ucitati je naravno moguce.
 
Samo da ti javim, da ovo radi. Probao na mom racunaru. Vrh, nisam znao da ovo moze.
Node moze fantasticno mnogo toga da uradi, eko sistem im je jedan od najbogatijih, takoreci da do sada nema za sta ne postoji neka biblioteka.

npm​

https://www.npmjs.com

The free npm Registry has become the center of JavaScript code sharing, and with more than one million packages, the largest software registry in the world.
 
Moze. Opet C#
Parsiranje teksta
Dat je sledeći string kojim se predstavljaju podaci tri osobe:

string text = 'John.Davidson/Belgrade Michael.Barton/Krakow Ivan.Perkinson/Moscow'.

Potrebno je napraviti logiku koja će iz ovog zapisa izvući pojedinačne podatke:

  • ime;
  • prezime;
  • mesto rođenja.
Drugim rečima, potrebno je obraditi prikazani string korišćenjem metoda klase String i izvući pojedinačne podatke svake osobe. Osnovna metoda koju je potrebno koristiti jeste ona za podelu stringova na više delova.

Dobijene pojedinačne delove (ime, prezime, grad), potrebno je iskoristiti za kreiranje objekata tipa Person. Stoga je u programu potrebno napraviti klasu Person, kao i adekvatna polja u okviru nje (ime, prezime, grad). Dakle, u klasi Person treba da postoje tri polja i konstruktor za inicijalizaciju njihovih vrednosti.

Sve objekte koji predstavljaju osobe potrebno je upakovati u jedan niz (niz treba da bude tipa Person[]). Kako biste se uverili da je sve obavljeno kako treba, na kraju je potrebno proći kroz niz objekata i ispisati podatke o osobama. Stoga je unutar klase Person potrebno da postoji i metoda za ispis podataka objekata, koja će da formira ispis u sledećem obliku:

John Davidson Belgrade
Michael Barton Krakow
Ivan Perkinson Moscow

Ukratko, tok programa treba da bude ovakav:

  • dati string delite na više delova kako biste dobili imena, prezimena i gradove
  • dobijene podatke koristite za kreiranje tri objekta tipa Person
  • dobijene objekte tipa Person smeštate unutar jednog Person[] niza
  • na kraju, prolazite kroz niz osoba i na izlazu prikazujete njihove podatke.
Moze li rešenje ovog zadatka 😁
 
Moze li rešenje ovog zadatka 😁

Sve se to ressva metodom String.Split().
Nisam pri kompu pa ne znam napamet sintaksu, ali jedan od parametara je char separator.
Evo ti logika:

Prvo, podelis string korisreci ' ' (blanko karakter) kao separator. Time si izvukao u niz stringova elemente (stringove) formata ime.prezime/grad.
Sada, iteriras taj niz, i ponovo String.Split() metoda za svaki clan niza, sa separatorom '//', i dobices niz od dva elementa: prvi sadrzi ime.prezime, a drugi grad.
Sad ponovo String.Split() metoda za prvi clan novog niza, sa separatorom '.' (tacka). I dobio si novi niz od dva elementa, gde je prvi element ime i prezime.
Sad imas sve sto ti treba, i samo printujes.
 
Možete li mi pomoći da uradim 3 zadatak nije mi jasno

Kod:
//Klasa i niz u kome ce biti objekti
let person = []; //U ovom nizu su ti objekti

class Person {
  constructor(ime, prezime, grad) {
    this.ime = ime;
    this.prezime = prezime;
    this.grad = grad;
    person.push(this);
  }
}

let text = "John.Davidson/Belgrade Michael.Barton/Krakow Ivan.Perkinson/Moscow";
let arr = []; //niz

//split metoda ti pretvara text u niz, a forEach ide kroz niz. Push ti dodaje svaki element u niz.
// replace ti menja . i / u prazan prostor
text.split(" ").forEach((person) => {
  arr.push(person.replace(/[./]/g, " ").split(" "));
});

/*
rezultat ovog dela koda je ovo :
[
  [ 'John', 'Davidson', 'Belgrade' ],
  [ 'Michael', 'Barton', 'Krakow' ],
  [ 'Ivan', 'Perkinson', 'Moscow' ]
]
Znaci niz koji se sastoji od jos tri niza.
*/

// Ovaj loop ti ide kroz nizove iznad koji su unutra niza arr
arr.forEach((el_niza) => {
  let [ime, prezime, grad] = el_niza; //destrukturiranje niza.
  new Person(ime, prezime, grad); //pozivanje konstruktora klase
});
/*
Nakon ovog koda output person niza izgleda ovako:
[
  Person { ime: 'John', prezime: 'Davidson', grad: 'Belgrade' },
  Person { ime: 'Michael', prezime: 'Barton', grad: 'Krakow' },
  Person { ime: 'Ivan', prezime: 'Perkinson', grad: 'Moscow' }
]
*/

// Ovaj loop ti je loop kroz objekte koji su unutar niza person
for (let i of person) {
  console.log("\n"); //dodaje prazno polje
  for (let [key, value] of Object.entries(i)) { //opet destrukturiranje objekta i
    console.log(`${key} : ${value}`); // lepsi ispis kljuc/vrednost
  }
}

/*
  Rezultat ovoga je sledece:

ime : John
prezime : Davidson
grad : Belgrade


ime : Michael
prezime : Barton
grad : Krakow


ime : Ivan
prezime : Perkinson
grad : Moscow

*/
 
Pazi to ti je u JavaScriptu, to jedino znam od programskih jezika. Kopiraj to u VS Code, maksimalno sam ti izkomentovao kod da bi razumeo samo principe sta teba da radis. Sintaksu za ovo moras da sam znas u C. Potrebne su ti metodi za stringove, nizove, objekte i objektno orjentisani koncepti konstruktora.

Problem ti i nije toliko tezak, ali je tako dizajniran da ti zakaci sve ono sto si do sada verovatno ucio i da ti proveri znanje. Velika ti je greska ako ovo ne vezbas.
Dzabe sto ce ti ovo neko uraditi, ovo ti je osnova programiranja. :\ Ja sam ovo iskodirao, a sebe smatram da sam pocetnik u kodiranju. Nista neces moci da radis bez znanja RegEx, string, array, object metoda. Ne moras da znas celu sintaksu, ali da barem znas sta ti treba da znas da izguglas sintaksu kako se kuca.

Srecno. :)
 
Evo resenja u C#:

Najpre, klasa person. Obrati paznju da svojstva nemaju seter, samo geter, posto se setuju iskljucivo konstruktorom.
Takodje, metoda ToString je overrajdovana, kako bi lepse ispisala rezultat.

C#:
    internal class Person
    {
        public string Ime { get; }
        public string Prezime { get; }
        public string MestoRodjenja { get; }

        public Person(string ime, string prezime, string mestoRodjenja)
        {
            Ime = ime;
            Prezime = prezime;
            MestoRodjenja = mestoRodjenja;
        }

        public override string ToString()
        {
            var stringBuilder = new StringBuilder();
            stringBuilder.AppendLine(this.Ime);
            stringBuilder.AppendLine(this.Prezime);
            stringBuilder.AppendLine(this.MestoRodjenja);

            return stringBuilder.ToString();
        }
    }

A evo i implementacije funkcije. Napomena - ovo je krnje, bez ikakve validacije i pocetnog teksta, i naknadnih tekstova.
C#:
           string text = "John.Davidson/Belgrade Michael.Barton/Krakow Ivan.Perkinson/Moscow";

            var source = text.Split(" ");
            var persons = new Person[source.Length];

            for(int i = 0; i< source.Length; i++)
            {
                var personData = source[i].Split("/");
                var imeIPrezime = personData[0].Split(".");
                persons[i] = new Person(imeIPrezime[0], imeIPrezime[1], personData[1]);
            }

            foreach (var person in persons)
                Console.WriteLine(person.ToString());
 
Pozdrav,moze li pomoc oko ovog zadatka?
Potrebno je upotrebom LINQ jezika obaviti prikaz zemalja sortiranih po broju stanovnika.Znači, od najvećeg do najmanjeg broja.
Evo kod: ovo sam probao ali nece da mi sortira nego samo ispise..

namespace CountryApp
{
class Country
{
public string Name { get; set; }
public int Population { get; set; }

public Country ( string name, int population )
{
this.Name = name;
this.Population = population;

}


}
class Program
{
public static void Main ()


{

Country[] countryCollection = { new Country("Afganistan", 34656032),
new Country("Austria", 8857960),
new Country("Brazil", 210147125),
new Country("Denmark", 5789957),
new Country("Russia", 144526636),
new Country("China", 1403500365),
new Country("Turkey", 8010525),
new Country("Serbia", 7001444),
new Country("Iraq", 37202572),
new Country("San Marino", 33344)
};

var countryInfo = from country in countryCollection
orderby country.Population descending, country.Name
select country;

Console.WriteLine("Countrys sorted by Population Number:");
foreach (Country country in countryCollection)


Console.WriteLine("Country : , Population : ");
Console.ReadKey();
 
Malo saveta za cistiji kod:
Kada god u nekoj klasi imas svojstva (properties) koja setujes kroz konstruktor, izbaci 'set', ostavi samo 'get'.
Koristeci Linq, sortiranje si mogao da obavis u jednoj liniji:

var sortedCountries = countryCcollection.OrderByDescending(item => item.Population);

A a za sam ispis, uvek preporucujem override-ovati ToString() metodu same klase, pa je posle pozivati da ti kreira string koji zelis printati.
 
Malo saveta za cistiji kod:
Kada god u nekoj klasi imas svojstva (properties) koja setujes kroz konstruktor, izbaci 'set', ostavi samo 'get'.
Koristeci Linq, sortiranje si mogao da obavis u jednoj liniji:

var sortedCountries = countryCcollection.OrderByDescending(item => item.Population);

A a za sam ispis, uvek preporucujem override-ovati ToString() metodu same klase, pa je posle pozivati da ti kreira string koji zelis printati.
Hvala druze ,nov sam u ovome tek poceo ,iskreno vise guglam nego sto sam pisem,tek mi je 4 mesec ove IT akademije..
 

Back
Top