SilverStar
Poznat
- Poruka
- 7.051
Moraju da se prave pametni... 😁samo MS ima ideju da od Liste pravi baznu
klasu, za sve zivo ispod![]()
Moraju da se prave pametni... 😁samo MS ima ideju da od Liste pravi baznu
klasu, za sve zivo ispod![]()
Evo, jedino nisam hteo da se smaram sa formatiranjem outputa, jer mislim da je besmislenoMoze. 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:
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.
- ime;
- prezime;
- mesto rođenja.
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.
text = "John.Davidson/Belgrade Michael.Barton/Krakow Ivan.Perkinson/Moscow"
data Person = Person String String String
deriving Show
parse_text t = pt (words t) []
where
pt [] d = d
pt (x:xs) d = split x : pt xs d
split xs = split' xs []
split' (x:xs) c = if x == '/' then split'' (c,xs) [] [] else split' xs (x:c)
split'' (x:xs,y) c d = if x == '.' then Person (reverse xs) c y:d else split'' (xs,y) (x:c) d
main = print $ parse_text text
~/.../examples/haskell >>> ./parse_fnlnc
[[Person "John" "Davidson" "Belgrade"],[Person "Michael" "Barton" "Krakow"],[Person "Ivan" "Perkinson" "Moscow"]]
A sto haskel?Evo, jedino nisam hteo da se smaram sa formatiranjem outputa, jer mislim da je besmisleno
(Haskell)
a ovako izgleda output:Kod:text = "John.Davidson/Belgrade Michael.Barton/Krakow Ivan.Perkinson/Moscow" data Person = Person String String String deriving Show parse_text t = pt (words t) [] where pt [] d = d pt (x:xs) d = split x : pt xs d split xs = split' xs [] split' (x:xs) c = if x == '/' then split'' (c,xs) [] [] else split' xs (x:c) split'' (x:xs,y) c d = if x == '.' then Person (reverse xs) c y:d else split'' (xs,y) (x:c) d main = print $ parse_text text
Kod:~/.../examples/haskell >>> ./parse_fnlnc [[Person "John" "Davidson" "Belgrade"],[Person "Michael" "Barton" "Krakow"],[Person "Ivan" "Perkinson" "Moscow"]]
Zato sto mi je interesantniji i elegantnijiA sto haskel?
Da, zanimljiv je.Zato sto mi je interesantniji i elegantniji![]()
Да, али најпре једном проћи for петљом да увтрдиш колико имаш позитивних, па на основу тог броја формираш низ фиксне дужине, па тек онда радиш то.Da. "For petljom treba da prođete kroz niz array i da IF uslovom proverite pozitivne i negativne brojeve, pa u zavisnosti od toga da ih upišete u odgovarajuće nizove (niz za pozitivne i niz za negativne)." Kaze profesor.
using System;
using System.Collections.Generic;
public class Program
{
public static void Main()
{
List<Person> persons = new List<Person>();
string str = "John.Davidson/Belgrade Michael.Barton/Krakow Ivan.Perkinson/Moscow";
string[] strlist = str.Split(' ');
foreach (String s in strlist)
{
string[] strlist2 = s.Split('/');
Person person = new Person();
person.city = strlist2[1];
string[] strlist3 = strlist2[0].Split('.');
person.name = strlist3[0];
person.surname = strlist3[1];
persons.Add(person);
}
for (int i = 0; i < persons.Count; i++)
{
persons[i].writeMe();
}
}
}
public class Person
{
public string name;
public string surname;
public string city;
public void writeMe()
{
Console.WriteLine(this.name + " " + this.surname + " " + this.city);
}
}
Hvala😊Да, али најпре једном проћи for петљом да увтрдиш колико имаш позитивних, па на основу тог броја формираш низ фиксне дужине, па тек онда радиш то.
Ево ти ово друго. Недостају get и set методе у класи, да би било како он хоће. То можеш и сама.
C#:using System; using System.Collections.Generic; public class Program { public static void Main() { List<Person> persons = new List<Person>(); string str = "John.Davidson/Belgrade Michael.Barton/Krakow Ivan.Perkinson/Moscow"; string[] strlist = str.Split(' '); foreach (String s in strlist) { string[] strlist2 = s.Split('/'); Person person = new Person(); person.city = strlist2[1]; string[] strlist3 = strlist2[0].Split('.'); person.name = strlist3[0]; person.surname = strlist3[1]; persons.Add(person); } for (int i = 0; i < persons.Count; i++) { persons[i].writeMe(); } } } public class Person { public string name; public string surname; public string city; public void writeMe() { Console.WriteLine(this.name + " " + this.surname + " " + this.city); } }
kog je tipa array?C# ima Linq biblioteku, i pomoću nje moze da se to resi u dve linije koda.
Kucam sa mobilnog, pa oprostite na gresci u sintaksi, ali odprilike bi islo ovako:
var positiveArray = array.Where(x => x >0);
var negativeArray = array.Where(x=> x<0);
Printujes ih kako zelis i to je to.
filt' xs = (filter (\x -> x > 0) xs,filter (\x -> x < 0) xs)
цOba su interpreteri, i oba mogu da koriste JIT, tj run time compiler, sto je jos od Jave postalo popularno![]()
Mislio sam da govoris o JS i C#
kog je tipa array?
u Haskellu isto to bez biblioteke:
Kod:filt' xs = (filter (\x -> x > 0) xs,filter (\x -> x < 0) xs)
Da li je klasican staticki niz IENumerable, tj da li mozes da dodas to na obican niz? To je fora iz funkcionalnih jezika, a svi moderniarray je naziv promenljive tipa int[], a podrazumeva se da je u njega smesten ulazni niz.
array moze biti i List<int>, isto cr da radi, posto biblioteka System.Linq ima ekstenzije i za nizove i za liste.
Jos preciznije: bazna klasa za liste je IEnumerable<T>, tako da bi ovo radilo i da je ulazni niz smesten i u promenljivu generickog tipa IEnumerable<int>.
Linq je mnogo mocna biblioteka, i nema dana da je ne koristim![]()
Da li je klasican staticki niz IENumerable, tj da li mozes da dodas to na obican niz? To je fora iz funkcionalnih jezika, a svi moderni
su preuzeli... Rust recimo to koristi maks, a mislim da su uveli i u C++, mada C++ to mozes i bez specifikacije
jer su takvi templatei.
pa?Mislio sam da govoris o JS i C#
Pa i JS i C# su interpreteri...
objasni kako je c# interpreterPa i JS i C# su interpreteri...
Kompajira se kao Java u bytecode koji izvrsava interpreter/virtualna masina. C# ne kompajilra u native binary.objasni kako je c# interpreter
Kompajira se kao Java u bytecode koji izvrsava interpreter/virtualna masina. C# ne kompajilra u native binary.
JS takodje moze u bytecode da se kompajlira, sto da ne?
C# se ne kompajlira u native CPU code, ali se ni ne kompajlira ni u byte code - nema nikakve veze sa time kako Java to radi.Kompajira se kao Java u bytecode koji izvrsava interpreter/virtualna masina. C# ne kompajilra u native binary.
JS takodje moze u bytecode da se kompajlira, sto da ne?
Nego u sta se kompajlira nego u bytecode?C# se ne kompajlira u native CPU code, ali se ni ne kompajlira ni u byte code
Koristila sam tvoj kod, dobio si pohvale😁. Medjutim, treba napisati u niz string, ne list string. Pokusala sam izmeniti kod, ali mi ne ide. Mozes li mi reci gdje grijesim?Да, али најпре једном проћи for петљом да увтрдиш колико имаш позитивних, па на основу тог броја формираш низ фиксне дужине, па тек онда радиш то.
Ево ти ово друго. Недостају get и set методе у класи, да би било како он хоће. То можеш и сама.
C#:using System; using System.Collections.Generic; public class Program { public static void Main() { List<Person> persons = new List<Person>(); string str = "John.Davidson/Belgrade Michael.Barton/Krakow Ivan.Perkinson/Moscow"; string[] strlist = str.Split(' '); foreach (String s in strlist) { string[] strlist2 = s.Split('/'); Person person = new Person(); person.city = strlist2[1]; string[] strlist3 = strlist2[0].Split('.'); person.name = strlist3[0]; person.surname = strlist3[1]; persons.Add(person); } for (int i = 0; i < persons.Count; i++) { persons[i].writeMe(); } } } public class Person { public string name; public string surname; public string city; public void writeMe() { Console.WriteLine(this.name + " " + this.surname + " " + this.city); } }