Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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


Донат для форума - использовать для поднятия настроения себе и модераторам

А ещё здесь можно купить рекламу за 25 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

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

Нужно передать массив в функцию, провести над ним некие действия и вернуть его обратно в метод 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
Адрес: Republic of Moldova
Сообщений: 716
Репутация: 44

skype: mr.kernighan
По умолчанию

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

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

skype: mr.kernighan
По умолчанию

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

Как-то так:

Код:
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
Репутация: 10
По умолчанию

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

icq: З7ЧЗЗ89Ч5
По умолчанию

Цитата:
Сделал.
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
Репутация: 10
Хорошо

я туплю, ну как так можно? забыл написать "[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 вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
передача массива в функцию 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 22:32
Си++. Передача массива в функцию. Diamond2107 Помощь студентам 7 03.12.2009 21:15


10:06.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.