Kvadrati

Kvadrati

Avtor: Vera Kabanova

Navodila

Podane so celoštevilske koordinate n točk, ki ležijo v ravnini. Vsak par teh točk določa pravokotnik, ki ima s koordinatnima osema vzporedne stranice. Napiši program, ki učinkovito poišče število takih pravokotnikov, ki so kvadrati. Štej tudi izrojene kvadrate, pri katerih spodnje levo in zgornje desno oglišče sovpadata. Število točk n je največ 100. Območje, na katerem ležijo točke v ravnini, je znotraj kvadrata: -10 000 ≤ x ≤ 10 000, -10 000 ≤ y 10 000

Rešitev

IDEJA REŠITVE:
Ideja rešitve tega problema je nadvse preprosta. Uvedemo nek števec. Potem za vse pare točk pregledamo, če absolutna vrednost razlike abscis enaka absolutni vrednosti razlike ordinat. Če ta enakost velja, vemo, da imamo kvadrat in števec povečamo za 1.

RAZLAGA ALGORITMA:
Najprej definiramo funkcijo, ki sprejme dve celoštevilski tabeli (ena z x koordinatami, druga z ustreznimi y koordinatami), vrne pa celo število -  public static int Kvadrati(int[] x, int[] y)  . Na začetku programa preverimo, če sta tabeli x in y enake dolžine. Če ugotovimo, da nista, vemo, da je prišlo do napake in sprožimo izjemo: ArgumentException. Uvedemo novo spremenljivko stevec (tipa int) in jo nastavimo na vrednost 0. Nato v zunanji for zanki se sprehodimo po vseh indeksih tabele x, v notranji zanki se pa sprehodimo po indeksih tabele, ki so večji od tekočega indeksa zunanje zanke - tako pokrijemo vse pare točk, nobenega pa dvakrat. V teh zankah preverimo, če tekoči par tvori kavadrat. Par točk tvori kvadrat, če je absolutna vrednost razlike njunih abscis enaka absolutni vrednosti njunih ordinat - Math.Abs(x[i]-x[j])==Math.Abs(y[i]-y[j]) . Če ta enakost velja, vrednost števca povečamo za 1. Ko se zanki izvedeta, vrnemo števec.

Realizacija

KODA:

(kvadrati_koda.jpg)

Testni primeri

Za to nalogo sem izbrala dva testna primera:

  1. Primer na šestih vnaprej določenih točkah. S tem primerom bomo testirali pravilnost delovanja programa. Točkam bomo vnaprej določili koordinate tako, da bomo vedeli s koliko kvadrati imamo opravka. In nato bomo preverili, če nam računalnik vrne pričakovano število. Moj primer:

    (kvadrati1.jpg)

    Podane bodo točke A, B, C, D, E in F. Odgovor, ki ga pričakujemo je 3, saj imamo 3 kvadrate: AJEX, BKFJ in CRFQ.

  2. Simulacija iz navodil. Pri drugem primeru bbo točke podane naključne točke. Najprej bomo izbrali naključno število točk med vključno 2 in 100. Nato bomo dve tabeli zapolnili z ustreznim številom naključnih celih števil med vključno -10000 in 10000. Na teh tabelah bomo testirali naš program.

Test

0%
0%