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

List to Array

VPS Starter Arubacloud
0 głosów
348 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 (349,960 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ź 846 wizyt
pytanie zadane 27 listopada 2018 w Java przez mn130496 Gaduła (3,530 p.)
0 głosów
1 odpowiedź 2,846 wizyt
pytanie zadane 24 kwietnia 2017 w C# przez asfreestyle Obywatel (1,310 p.)
+1 głos
0 odpowiedzi 149 wizyt
pytanie zadane 26 lutego 2016 w C# przez Adam Nowicki Obywatel (1,600 p.)

93,028 zapytań

141,991 odpowiedzi

321,294 komentarzy

62,375 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

Wprowadzenie do ITsec, tom 2

Można już zamawiać tom 2 książki "Wprowadzenie do bezpieczeństwa IT" - będzie to około 650 stron wiedzy o ITsec (17 rozdziałów, 14 autorów, kolorowy druk).

Planowana premiera: 30.09.2024, zaś planowana wysyłka nastąpi w drugim tygodniu października 2024.

Warto preorderować, tym bardziej, iż mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy dodatkowe 15% zniżki! Dziękujemy zaprzyjaźnionej ekipie Sekuraka za kod dla naszej Społeczności!

...