Srovnání dvou polí – .NET – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Srovnání dvou polí – .NET – Fórum – Programujte.comSrovnání dvou polí – .NET – Fórum – Programujte.com

 
Hledat
Vybavení pro Laser Game
Spuštěn Filmový magazín
Laser Game Brno
Pergoly a střechy Brno

12. 8. 2022   #1
-
0
-

Dobrý den vespolek. Jednoduchý kód mi neprochází testy a nevím proč. Může někdo prosím poradit? Díky!

Zadání: dvě int pole, pole a plné x*x, druhé pole b plné x. Pole nejsou setříděná. Úkolem je pole porovnat, zda obsahují ke každému x odpovídající x*x.

Příklad true výsledku:

a = [121, 144, 19, 161, 19, 144, 19, 11]

b = [121, 14641, 20736, 361, 25921, 361, 20736, 361]
 

public static bool comp(int[] a, int[] b)
  {
    if (a == null || b == null || a.Length == 0 || 
    b.Length == 0 || a.Length != b.Length) return false;
    
    Array.Sort(a);
    Array.Sort(b);
    
    for (int i = 0; i < a.Length; i++)
      {
        if (a[i] != b[i] * b[i]) return false;
      }
    return true;
  }
Nahlásit jako SPAM
IP: 178.22.113.–
peter
~ Anonymní uživatel
3894 příspěvků
12. 8. 2022   #2
-
0
-

   

a = [121, 144, 19, 161, 19, 144, 19, 11]
b = [121, 14641, 20736, 361, 25921, 361, 20736, 361]
Array.Sort(a); // 11, 19, 19, ...
Array.Sort(b); // 121, 361, 361, ...
a[i] != b[i] * b[i]
11   != 121 * 121 // ze by divna podminka? :)
19   != 361 * 361
Nahlásit jako SPAM
IP: 2001:718:2601:258:980:294f:8ae5:37c5...–
12. 8. 2022   #3
-
0
-

Ježišmarja omlouvám se, ta podmínka je samozřejmě obráceně if (b[i] != a[i] * a[i]) return false;

Ale tohle právě prochází 12 testů z 13. Jeden dává false místo true. A vstup toho testu je samozřejmě neznámý....

Nahlásit jako SPAM
IP: 178.22.113.–
12. 8. 2022   #4
-
0
-

V prvé řadě jak to máš napsaný, tak pole a neobsahuje x*x a pole b neobsahuje x. Myslím, že je to naopak.

Dělal bych to tak, že pole s x bych procházel po jednotlivých prvcích, u každého prvku spočítal x*x a pak bych prošel druhé pole zda tuto hodnotu obsahuje. To představuje dva vnořené cykly. Vylepšit by to šlo tím, že bys na začátku porovnal velikosti polí. Pole obsahující x*x musí mít stejný nebo větší počet prků než pole obsahující x.

hu

Edit: pro x se může vyskytnout několikrát stejná hodnota a tak to porovnání velikostí polí nedělej. Zajímavá situace by nastala kdyby pro každou položku x musela existovat položka x*x. Tím myslím, že když se v poli pro x vyskytne opakovaně 11, tak v poli x*x se musí opakovaně vyskytovat 121 nejméně ve stejném počtu jako 11.

Nahlásit jako SPAM
IP: 2001:af0:ffe4:85f4:10e7:113e:8802:2e03...–
12. 8. 2022   #5
-
0
-

Ještě pozn. Použití sort se mi jeví nešikovné. Ze zadání, které jsi sem dal, nevyplývá, že pole pro x*x nemůže mít více prvků než pole pro x a tím pádem není vyloučeno, že obsahuje "falešné" hodnoty.

hu

Nahlásit jako SPAM
IP: 2001:af0:ffe4:85f4:10e7:113e:8802:2e03...–
Zjistit počet nových příspěvků

Přidej příspěvek

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 45 hostů

Podobná vlákna

Sčítání dvou polí — založil ondrej77

Porovnani dvou poli — založil lol

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032022 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý