• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

List to Array

Object Storage Arubacloud
0 głosów
316 wizyt
pytanie zadane 6 stycznia 2018 w C# przez macik1423 Początkujący (480 p.)

Witam, próbuję rozwiązywać zadania na codewars i natknąłem się na problem gdy zamieniam listę na tablicę ponieważ w rozwiązaniu wymagane jest aby funkcja zwracała tablicę.

List<int> diff = new List<int>();
if (b.Length > 0)
{
    for (int i = 0; i < a.Length; i++)
    {
       for (int j = 0; j < b.Length; j++)
       {
          if (a[i] != b[j])
          {
               diff.Add(a[i]);
          }
       }
    }
}
return diff.ToArray();

Program ma za zadanie wypisać tablicę "odejmowania" jednej tablicy od drugiej. Proste testy przechodzą ale dla pozostałych pojawia się błąd:

  Expected is <System.Int32[2750]>, actual is <System.Int32[3879026]>
  Values differ at index [0]
  Expected: 276
  But was:  351

Czy ktoś rozwiązuje zadania z tej strony i mógłby mi podpowiedzieć cokolwiek? :)

1
komentarz 6 stycznia 2018 przez adrian17 Ekspert (344,860 p.)
To nie ma związku z "zamianą na tablicę".

Próbowałeś normalnie odpalić program i zobaczyć, jakie wyniki dostaniesz? Na przykład dla a={1,2,3} oraz b={1,2,3}. Wynik może dać olśnienie ;)

Możesz też spojrzeć w debuggerze, co robi program.

1 odpowiedź

+1 głos
odpowiedź 6 stycznia 2018 przez piotrsz109 Stary wyjadacz (13,730 p.)

Odejmowanie tablicy od drugiej robisz tak:

int[] funkcja(int[] array1, int[] array2){
if(array2.Length >= array1.Length){
for(int i=0;i<array1.Length;i++){
array1[i] -= array2[i];
}
}else {
for(int i=0;i<array2.Length;i++){
array1[i] -= array2[i];
}
}
return array1;
}

 

komentarz 7 stycznia 2018 przez macik1423 Początkujący (480 p.)
Bardziej chodziło mi o usuwanie elementów z tablicy a[] które pojawiają się w b[] trochę tak jak jest odejmowanie zbiorów w matematyce, ale dziękuję za zainteresowanie ;)
1
komentarz 8 stycznia 2018 przez piotrsz109 Stary wyjadacz (13,730 p.)

A ok. Kod wtedy taki:

int[] Func(int[] a, int[] b){
List<int> alist = new List<int>(a);
foreach(var item in alist){
if(Array.contains(b, item){
a.Remove(item);
}
}
return alist.ToArray();
}

 

Podobne pytania

0 głosów
1 odpowiedź 719 wizyt
pytanie zadane 27 listopada 2018 w Java przez mn130496 Gaduła (3,530 p.)
0 głosów
1 odpowiedź 2,750 wizyt
pytanie zadane 24 kwietnia 2017 w C# przez asfreestyle Obywatel (1,310 p.)
+1 głos
0 odpowiedzi 132 wizyt
pytanie zadane 26 lutego 2016 w C# przez Adam Nowicki Obywatel (1,600 p.)

92,536 zapytań

141,376 odpowiedzi

319,451 komentarzy

61,920 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...