Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.10.2012, 14:59   #1
Gstar
 
Аватар для Gstar
 
Регистрация: 13.10.2012
Сообщений: 8
Сообщение Передача массива в функцию и возврат массива из функции

Нужно передать массив в функцию, провести над ним некие действия и вернуть его обратно в метод Main.

Код:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace FunctionArrayMy
{
    class Program
    {
        static int[] PrintArray(int[] arr)
        {
            for (int i = 0; i < arr.Length; i++)
            {
                arr[i] = arr[i] * 2; 
            }
            return arr;
        }

    static void Main()
    {
        int[] w = { 1, 2, 3, 4, 5, 6, 7};
        int[] t;int i;
       
        t=PrintArray(w);
        for (i = 0; i < t.Length; i++)
        {
            Console.Write(t);
            Console.Write(' ');
        }
        Console.ReadLine();
    }
    }
    
}

Передал я вроде правильно, а вот возвращаться не хочет.
Подскажите что не так?

Последний раз редактировалось Gstar; 13.10.2012 в 15:06.
Gstar вне форума Ответить с цитированием
Старый 13.10.2012, 15:09   #2
coNsept
Форумчанин
 
Аватар для coNsept
 
Регистрация: 14.12.2009
Сообщений: 716
По умолчанию

Попробуй так return arr[0];
coNsept вне форума Ответить с цитированием
Старый 13.10.2012, 15:10   #3
Gstar
 
Аватар для Gstar
 
Регистрация: 13.10.2012
Сообщений: 8
По умолчанию

Так не работает
Gstar вне форума Ответить с цитированием
Старый 13.10.2012, 15:13   #4
coNsept
Форумчанин
 
Аватар для coNsept
 
Регистрация: 14.12.2009
Сообщений: 716
По умолчанию

Попробуй объявить локальный массив и выделить ему память и передать ему твой параметр и возвращать не параметр а этот локальный массив.

Как-то так:

Код:
static int[] PrintArray(int[] arr)
{
 int[] t_arr = new int [arr.Length];
 t_arr = arr;
 for (int i = 0; i <  t_arr.Length; i++)
 {
  t_arr[i] = t_arr[i] * 2; 
 }
 return t_ arr;
}

Последний раз редактировалось coNsept; 13.10.2012 в 15:16.
coNsept вне форума Ответить с цитированием
Старый 13.10.2012, 15:22   #5
Gstar
 
Аватар для Gstar
 
Регистрация: 13.10.2012
Сообщений: 8
По умолчанию

Сделал.
Console.Write(t) выводит попрежнему не то: SystenInt32[]
Gstar вне форума Ответить с цитированием
Старый 13.10.2012, 15:49   #6
Luuzuk
Форумчанин
 
Аватар для Luuzuk
 
Регистрация: 18.01.2012
Сообщений: 975
По умолчанию

Цитата:
Сделал.
Console.Write(t) выводит попрежнему не то: SystenInt32[]
Консоль выводит то, что вы ей даете. В данном случае она получает на вход переменную "t", и выводит "t.ToString()", унаследованный от базового "object".

И еще: если PrintArray должна отдавать новый массив, и не должна менять старый, то следует немного переписать метод:
Код:
static int[] PrintArray(int[] arr)
        {
		    int[] res = new int[arr.Length];
            for (int i = 0; i < arr.Length; i++)
            {
                res[i] = arr[i] * 2; 
            }
            return res;
        }
Благодарить в репутацию. Проклинать — туда же

Последний раз редактировалось Luuzuk; 13.10.2012 в 15:51.
Luuzuk вне форума Ответить с цитированием
Старый 14.10.2012, 00:38   #7
Gstar
 
Аватар для Gstar
 
Регистрация: 13.10.2012
Сообщений: 8
Хорошо

я туплю, ну как так можно? забыл написать "[i]" и пол дня мучаюсь!!

Вот так теперь все работает!!!!

Код:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace FunctionArrayMy
{
    class Program
    {
        static int[] PrintArray(int[] arr)
        {
            int[] p=new int[arr.Length];
                                     
            for (int i = 0; i < arr.Length; i++)
            {
                
                p[i] = arr[i] * 2; 
            }
            return p;
        }

    static void Main()
    {
        int[] w = { 1, 2, 3, 4, 5, 6, 7};
        int[] t;int i;
       
        t=PrintArray(w);
        for (i = 0; i < t.Length; i++)
        {
            Console.Write(t[i]);
            Console.Write(' ');
        }
        Console.ReadLine();
    }
    }
    
}
Gstar вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
передача массива в функцию Fatal Error Общие вопросы C/C++ 7 09.07.2012 17:45
Возврат массива из функции max_prorok Помощь студентам 2 06.10.2011 12:39
Произведение элементов массива в функции (передача массива в функцию) (Delphi) Toxa16 Помощь студентам 1 23.04.2011 04:42
Возврат массива значений в функцию main. sadf Общие вопросы C/C++ 5 03.03.2010 21:32
Си++. Передача массива в функцию. Diamond2107 Помощь студентам 7 03.12.2009 20:15