2015-03-30 6 views
0

Я изучаю C#, и у меня есть проблема с моей функцией. Он должен умножать элементы массива вкладок на вкладку mnoznik и return output, я пытался много способов, но до сих пор не знаю, как ее решить.как вернуть массив int C#

static int mnozenie(int[] tab, int mnoznik) 
    { 
     int[] wyj; 
     wyj = new int[tab.Length]; 
     if (mnoznik != 0) 
     { 
      for (int i = 0; i < tab.Length; i++) 
       wyj[i] = tab[i] * mnoznik; 
      return wyj[]; 
     } 
     else 
      return 0; 
    } 
+0

Иметь свой тип возвращаемого значения, как 'междунар [] []' и 'вернуть null' в остальное части. – Habib

ответ

2

попробовать

static int[] mnozenie(int[] tab, int mnoznik) 
{ 
    int[] wyj = new int[tab.Length]; 
    if (mnoznik != 0) 
    { 
     for (int i = 0; i < tab.Length; i++) 
      wyj[i] = tab[i] * mnoznik; 
    } 
    return wyj; 

} 
+0

OP хочет значение '0', если вход' mnoznik' равен 0. IMHO, это означает, что имеет смысл всегда «возвращать wyj;» и просто пропустить цикл умножения, если 'mnoznik' равен 0. –

+0

, тогда просто return пустой массив ... – puko

+0

возвращает System.Int32 [] ... – woochuck

0

Вы пытаетесь вернуть как массив и целое число, которое вы не можете сделать. Вы можете обернуть все это в кортеже <,> и вернуться как, или вы можете возвратить нуль в случае mnoznik 0.

Что-то вроде:

static Tuple<bool,int[]> mnozenie(int[] tab, int mnoznik) 
{ 
    return (mnoznik == 0) 
      ? new Tuple<bool,int[]>(false, new [] { 0 }) 
      : new Tuple<bool,int[]>(true, tab.Select(i => i*mnoznik).ToArray()); 
} 

или

static int mnozenie(int[] tab, int mnoznik) 
{ 
    return (mnoznik == 0) 
      ? null 
      : tab.Select(i => i*mnoznik).ToArray(); 
} 
+0

в вашем втором примере имеет метод int return type и u возвращенный массив int – puko

+0

Это была опечатка. Я должен был написать int []. Другое дело, что вместо null вы можете вернуть четко определенный массив, как я сделал в первом примере: new [] {0}; – f00f

0
static int[] mnozenie(int[] tab, int mnoznik) 
{ 
    if (tab.Length > 0) 
    { 
     for (int i = 0; i < tab.Length; i++) 
     { 
      tab[i] *= mnoznik; 
     } 
     return tab; 
    } 
    return null; 
} 

или альтернативно вместо возврата null только вернуть tab назад, блок if просто защищает от попыток доступа к нулевой коллекции или просто обрабатывает исключение в каким бы способом вы ни выбрали.

+0

или, альтернативно, вместо возврата null, просто верните вкладку назад, блок if просто защищает от попыток доступа к нулевой коллекции или просто обрабатывает исключение любым способом. – unoriginal

+0

где u хранит результат умножения? – puko

+0

в закладке, проверьте, что блок foreach блокирует его прямо там. – unoriginal

0

этот код может помочь вам попробовать это

static int[] m(int[] a , int low , int big) 
     { 
     int[] re = new int[2]; 
     int min, max, mid ; 
     if (low == big) 
     { 
      min = max = a[low]; 
      re[0] = min; 
      re[1] = max; 
      return (re); 
     } 
     } 
Смежные вопросы