Тема: Правельність ініціалізації
Добро дня у мене виникла невеличка проблема: мені потрібно обробити масив за допомогою метода включення в окремому класі ,а тілі програми тільки задати розмірність ось що я написав:
Ви не увійшли. Будь ласка, увійдіть або зареєструйтесь.
Ласкаво просимо вас на україномовний форум з програмування, веб-дизайну, SEO та всього пов'язаного з інтернетом та комп'ютерами.
Будемо вдячні, якщо ви поділитись посиланням на Replace.org.ua на інших ресурсах.
Для того щоб створювати теми та надсилати повідомлення вам потрібно Зареєструватись.
Український форум програмістів → C#, .NET → Правельність ініціалізації
Сторінки 1
Для відправлення відповіді ви повинні увійти або зареєструватися
Добро дня у мене виникла невеличка проблема: мені потрібно обробити масив за допомогою метода включення в окремому класі ,а тілі програми тільки задати розмірність ось що я написав:
Код - в тег [ code ] сюди, будь ласка.
І не зовсім зрозуміло, що вам треба - ініціалізувати масив в окремій функції, чи що?
Я неправильно висловився. У мене є в основному класі(Programm) програми масив цілих чисел, цей масив потрібно передати в інший клас(Rozrahunok) в якому є метод для сортування цього масива після чого повернути в основний клас вже відсортований масив. Я не можу зрозуміти , як відправити масив в клас (Rozrahunok) і потім його повернути вже відсортованим.
using System;
using System.Text.RegularExpressions;
namespace sampleClasses
{
    class Rozrahunok
    {
        public void InsertSort(IComparable[] array)// метод сортування включенням
{
           int i, j;
 
    for (i = 1; i < array.Length; i++)
    {
        IComparable value = array[i];
        j = i - 1;
        while ((j >= 0) && (array[j].CompareTo(value) > 0))
        {
            array[j + 1] = array[j];
            j--;
        }
        array[j + 1] = value;
    }
}     
    class Program
    {
        static void Main(string[] args)
        {
            //Rozrahunok Roz = new Rozrahunok();// ініціалізував обєкт класу 
            int [] array = new int[10];
             Random r = new Random();
             for (int i = 0; i < array.Length; i++)
             {
                 array[i] = r.Next(100);
             }
             Rozrahunok Roz = new Rozrahunok();
             Roz.InsertSort();//не знаю як заповнити дужки , коректно ..
        }
        }
    }
}Два варіанти: "в лоба"
public IComparable[] InsertSort( IComparable[] array )
{
...
return array;
}
...
array = InsertSort( array );//InsertSort приймає масив і повертає відсортованийабо через посилання
public IComparable[] InsertSort( ref IComparable[] array )
...
InsertSort( ref array );//передати функції посилання на масив, щоб вона його змінювалаДва варіанти: "в лоба"
public IComparable[] InsertSort( IComparable[] array ) { ... return array; } ... array = InsertSort( array );//InsertSort приймає масив і повертає відсортованийабо через посилання
public IComparable[] InsertSort( ref IComparable[] array ) ... InsertSort( ref array );//передати функції посилання на масив, щоб вона його змінювала
Не бачить InsertSort  в основному класі всеодно чи може я не правильно записав ?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication8
{ 
    class Rozrahunok
    {
        public IComparable[] InsertSort(IComparable[] array)// метод сортування включенням
{
           int i, j;
    for (i = 1; i < array.Length; i++)
    {
        IComparable value = array[i];
        j = i - 1;
        while ((j >= 0) && (array[j].CompareTo(value) > 0))
        {
            array[j + 1] = array[j];
            j--;            
        }
        array[j + 1] = value;   
    }
    return array; 
}  
        
}
    class Program
    {
        static void Main(string[] args)
        {
            //Rozrahunok Roz = new Rozrahunok();// ініціалізував обєкт класу 
            int [] array = new int[10];
             Random r = new Random();
             for (int i = 0; i < array.Length; i++)
             {
                 array[i] = r.Next(100);
             }
             Rozrahunok Roz = new Rozrahunok();
             array = InsertSort(array);// у цій частині кода не бачить InserSort
             
            
          
        }
        }
    }Звісно, що не бачить - функції без уточнення, звідки вони, викликаються тільки зі свого класу. Треба Roz.InsertSort викликати. Або зробити його статичним, не створювати екземляр класу і робити Rozrahunok.InsertSort.
Всі reference types, до яких відноситься і
IComparable[] arrayпередаються по ссилці (by reference) не залежно від того чи вказаний параметр ref чи ні. Цей параметр відповідає не за те що можна подумати спочатку.
truesupport +1
дійсно,
Because arrays are reference types, the method can change the value of the elements.
Сторінки 1
Для відправлення відповіді ви повинні увійти або зареєструватися