Koriscenje naredbi za kontrolu toka u obradi niza

ina123

Početnik
Poruka
20
Pozdrav svima
Moze li mi neko pomoci u vezi zadatka iz C#
#Koriscenje naredbi za kontrolu toka u obradi niza

Dat je sledeći niz:

int[] array = {12, 23, -22, -765, 43, 545, -4, -55, 43, 12, 351, -999, -87}

Korišćenjem datog niza kao početne tačke, potrebno je napraviti dva nova niza celih brojeva:

unutar prvog je potrebno da se nađu svi pozitivni brojevi iz datog niza;
unutar drugog niza je potrebno da se nađu svi negativni brojevi iz datog niza.

Drugim rečima, iz niza array je potrebno izvući sve pozitivne elemente i smestiti ih u zaseban niz i izvući sve negativne elemente i smestiti ih u zaseban niz. Na kraju je na izlazu potrebno ispisati vrednosti svih članova dva dobijena niza.

Zadatak je najbolje rešiti korišćenjem neke petlje, kojom bi se obavio prolazak kroz dati niz. U svakoj iteraciji petlje bi se proveravala vrednost člana niza i, u zavisnosti od vrednosti, on bi se smeštao u odgovarajući odredišni niz (pozitivno/negativno).
 
Poruka
24.983
JavaScript:
 let arr = [12, 23, -22, -765, 43, 545, -4, -55, 43, 12, 0, 351, -999, -87]
  let arr_positive = [];
  let arr_negative = [];

  for (let i in arr){
    if(arr[i] > 0){
        arr_positive.push(arr[i]);
    }
    else if(arr[i] < 0){
        arr_negative.push(arr[i]);
    }
    else{
        continue
    }
  }

  console.log(arr_negative)
  console.log(arr_positive)

Druga varijanta. Ali mislim da gresis sto ovo sama ne resavas jer je bas lako. Nikada neces nauciti programiranje ako ti drugi budu resavali zadatke.
Ovo mora da se vezba. :)
 
Poruka
24.983
Da bi razumela kod, JS nema deklaraciju varijabli kao npr C jezik tipa int x = 8 ili string ime = "Marta", u JS samo napises let,const ili var i upises vrednost.
for i if su ti jasni, verovatno je isto i u tvom jeziku sto ucis.
push ti je metod za nizove kojim se ubacuje element na kraj niza.
a console.log je ispis vrednosti u konzoli, ti verovatno koristis nesto tipa printf, print, println() ili cout.
Ne znam koji jezik ucis u skoli.
 

SilverStar

Poznat
Poruka
7.019
Naravno da može... :)


C#:
using System;
                    
public class Program
{
    public static void Main()
    {
        int[] brojevi = {12, 23, -22, -765, 43, 545, -4, -55, 43, 12, 351, -999, -87};
        
        // niz u c# je struktura podataka sa fiksnom velicinom, pa je potrebno unapred kreirati velicinu
        // niz brojevi ima 13 elemenata, od kojih su 7 pozitivni, a 6 negativni.
        
        int[] pozitivniNiz = new int[7];
        int[] negativniNiz = new int[6];
        // i je indeks za pozitivan niz, j je index za negativan niz
        int i = 0;
        int j = 0;
        
        foreach(int broj in brojevi) {
            if(broj > 0) {
                pozitivniNiz[i] = broj;
                i++;
            }
            else {
                negativniNiz[j] = broj;
                j++;
            }
        }
        
        Console.WriteLine(String.Join(",", pozitivniNiz));
        Console.WriteLine(String.Join(",", negativniNiz));

    }
}
 

ina123

Početnik
Poruka
20
Naravno da može... :)


C#:
using System;
                   
public class Program
{
    public static void Main()
    {
        int[] brojevi = {12, 23, -22, -765, 43, 545, -4, -55, 43, 12, 351, -999, -87};
       
        // niz u c# je struktura podataka sa fiksnom velicinom, pa je potrebno unapred kreirati velicinu
        // niz brojevi ima 13 elemenata, od kojih su 7 pozitivni, a 6 negativni.
       
        int[] pozitivniNiz = new int[7];
        int[] negativniNiz = new int[6];
        // i je indeks za pozitivan niz, j je index za negativan niz
        int i = 0;
        int j = 0;
       
        foreach(int broj in brojevi) {
            if(broj > 0) {
                pozitivniNiz[i] = broj;
                i++;
            }
            else {
                negativniNiz[j] = broj;
                j++;
            }
        }
       
        Console.WriteLine(String.Join(",", pozitivniNiz));
        Console.WriteLine(String.Join(",", negativniNiz));

    }
}
Hvala puno, sada vidim gdje sam pravila gresku. Veliko hvala!
 
Poruka
3.328
E jak mi je vas jezik. :lol: Gledaj ovo.
nisu bas jezici za poredjenje....

jedan je interpreter, drugi je kompajler
(ok jit, mada... itd)

jedan je single threaded drugi je natively multi threaded sa multi thread kontrolnim strukturama u samom jeziku

jedan je prototype based with OO syntaxic sugar, drugi je hijerarhijski namespaced OO with mixins

jedan je functional event driven with callback hell spaghetti execution, drugi je delegative orderly imperative

jedan je predominantely front end purpose (with some backend abilities) other is more application/backend purpose

dizajnirani su za razlicite namene...
 

bmaxa

Buduća legenda
Poruka
40.315
Naravno da može... :)


C#:
using System;
                   
public class Program
{
    public static void Main()
    {
        int[] brojevi = {12, 23, -22, -765, 43, 545, -4, -55, 43, 12, 351, -999, -87};
       
        // niz u c# je struktura podataka sa fiksnom velicinom, pa je potrebno unapred kreirati velicinu
        // niz brojevi ima 13 elemenata, od kojih su 7 pozitivni, a 6 negativni.
       
        int[] pozitivniNiz = new int[7];
        int[] negativniNiz = new int[6];
        // i je indeks za pozitivan niz, j je index za negativan niz
        int i = 0;
        int j = 0;
       
        foreach(int broj in brojevi) {
            if(broj > 0) {
                pozitivniNiz[i] = broj;
                i++;
            }
            else {
                negativniNiz[j] = broj;
                j++;
            }
        }
       
        Console.WriteLine(String.Join(",", pozitivniNiz));
        Console.WriteLine(String.Join(",", negativniNiz));

    }
}
ovo bas i nije resenje, zato sto se unapred zadaju velicine niza, koje trebaju da budu nepoznate.
Zar C# nema mogucnost nekog dinamickog niza? Pa u C to mozes lako da izvedes sa realloc, pa
dodas na kraj, C++ ima vector gde samo opalis push_back?
 

ina123

Početnik
Poruka
20
Па нека прође најпре једном кроз низ и преброји позитивне, па онда на основу тога формира низове фиксне величине.
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.
 

ina123

Početnik
Poruka
20
Daj sledeci zadatak da malo flexujemo programerske vestine. :p
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.
 

SilverStar

Poznat
Poruka
7.019
ovo bas i nije resenje, zato sto se unapred zadaju velicine niza, koje trebaju da budu nepoznate.
Zar C# nema mogucnost nekog dinamickog niza? Pa u C to mozes lako da izvedes sa realloc, pa
dodas na kraj, C++ ima vector gde samo opalis push_back?
Ovaj zadatak je ocigledno srednjoskolski, pa nisam hteo da komplikujem. U C# se kao dinamicki niz koriste liste.
Mogu se ubaciti i brojaci za pozitivni i negativni niz, i na osnovu njih kreirati fiksni niz, ali kao sto sa rekao, nisam hteo da komplikujem posto se ovde fokus stavlja na for petlju i if-else naredbe.
 

bmaxa

Buduća legenda
Poruka
40.315
Ovaj zadatak je ocigledno srednjoskolski, pa nisam hteo da komplikujem. U C# se kao dinamicki niz koriste liste.
Mogu se ubaciti i brojaci za pozitivni i negativni niz, i na osnovu njih kreirati fiksni niz, ali kao sto sa rekao, nisam hteo da komplikujem posto se ovde fokus stavlja na for petlju i if-else naredbe.
Mislim da nije Lista, ime je missleading, ArrayList nije lista nego dinamicki niz...
 

bmaxa

Buduća legenda
Poruka
40.315
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.
Zadatak nije kompletan, koji je delimiter ako grad ima vise reci? Posto nije specificirano podrazumevas tacku. I sta ako ime i prezime ima vise od 3 reci?
Sta ako ima srednje ime?
 

SilverStar

Poznat
Poruka
7.019
Mislim da nije Lista, ime je missleading, ArrayList nije lista nego dinamicki niz...
20221125_160450.jpg
 

bmaxa

Buduća legenda
Poruka
40.315
Ne radim u njemu, imao sam dodir sa njim na faksu. Zadaci koji se u ovoj temi postavljaju, su najosnovniji. Meni se cine srednjoskolski.
Tako da ne verujem da ulaze previse u sustinu. ( na tom nivou nije ni potrebno). Vise se fokusiraju na petlje, naredbe, nizove, objekte.
Al treba da se koristi ArrayList :p
100% je to niz, samo sto, MS ima cudno imenovanje stvari, svi to zovu vector, samo MS ima ideju da od Liste pravi baznu
klasu, za sve zivo ispod :p
 

Top