Тема: Правельність ініціалізації
Добро дня у мене виникла невеличка проблема: мені потрібно обробити масив за допомогою метода включення в окремому класі ,а тілі програми тільки задати розмірність ось що я написав:
Ви не увійшли. Будь ласка, увійдіть або зареєструйтесь.
Ласкаво просимо вас на україномовний форум з програмування, веб-дизайну, 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
Для відправлення відповіді ви повинні увійти або зареєструватися