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

 

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
3981 příspěvků
12. 8. 2022   #2
-
+1
-
Zajímavé

   

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
-
+1
-
Zajímavé

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
-
+1
-
Zajímavé

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...–
17. 5. 2023   #6
-
0
-

#5 hlucheucho
obsahují ke každému

Nahlásit jako SPAM
IP: 1.53.112.–
Beltonendownload is een plek waar u gratis de beste en nieuwste beltonen naar uw telefoon kunt downloaden. Hier zijn gratis populaire beltonen, beltonen voor meldingen, alarmgeluiden en geluidseffect
Ovrscout
~ Anonymní uživatel
113 příspěvků
18. 5. 2023   #7
-
0
-

#6 beltonendownload

Celá část zní: " zda obsahují ke každému X odpovídající x*x ".
Tj požaduje se kontrola že pro prvky z pole B(x) existuje položka v poli A(x*x). O opačné kontrole se nic nepíše. Takže v poli A mohou být položky navíc a ničemu to nevadí. Tedy,  teoreticky :( , viz níže.

Nicméně začátek zadání je: "dvě int pole, pole A plné x*x, druhé pole B plné x."
Což může taky znamenat že součástí zadání jsou dvě pole které už by měla podmínku splňovat.
Ale protože se následně to má kontrolovat, tak se asi očekává že to zadání vlastně není platné protože seznam hodnot x v poli A asi nebude ten stejný co seznam hodnot x pro pole B.
Což vrhá dost špatné světlo na kvalitu této části zadání a je třeba se ptát zda i další části nelze vyložit jinak.

Takže bych řekl, že to je klasicky mizerné školní zadání, které se dá správně vypracovat jenom tím že se podíváte jak ten konkrétní vyučující s tímto konkrétním typem zadáním obvykle myslí.
Respektive se kouknete do příkladů od něj nebo od někoho zjistíte jaký byl výklad při hodinách.

S vyučujícím se ale nehádejte, protože nejspíš by tvrdil že je to jasné zadání a že se to jinak než on to tak dělá a učí roky, a že se to nedá vyložit jinak, že si vymýšlíte atp. atd.
K ničemu to nepovede a jen zvyšujete riziko že si na vás zasedne.A i kdyby jste tuhle bitvu vyhráli, jste připraveni na dlouhotrvající válku s vyučujícím?
 

P.S. Pro případ výjimečně otevřeného a nemstivého vyučujícího, můžete zkusit na nejednoznačnost upozornit.
       Dva takové jsem měl čest poznat(ale jenom jeden byl matematik), ale dle mé zkušenosti to jsou opravdu výjimky z pravidla, a měl jsem dost štěstí.

Nahlásit jako SPAM
IP: 193.165.79.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×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, 2 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 © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý