Создание одномерного массива состоящего из структур.

Язык C#: программирование на C#, портирование кода C# на VB и VB на C#.

Модератор: Ramzes

Thomas
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 246
Зарегистрирован: 12.11.2005 (Сб) 0:17
Откуда: "Сказочное королевство"

Создание одномерного массива состоящего из структур.

Сообщение Thomas » 03.02.2006 (Пт) 22:06

Приветствую всех.
Помогите студенту.
Как обьявить структуру и заполнить ее я понял.
Но как создать из структур массив? :oops:
Все уперлось в СИНТАКСИС!!!

Код: Выделить всё

                private struct Persoon  // обьявил структуру или задал
      {
         public int volgNr;  // типа ID
         public string persNaam; //имя
         public string persVoornaam; //фамилия
         public DateTime gebDatum; // дата рождения
      }

      private Persoon pers; // инициализировал

      // этот обработчик события по идее должен создать массив из структур и вывести в листвью.
      private void btnGen_Click(object sender, System.EventArgs e)
      {
         int getal;
         Random gen = new Random();

         getal=gen.Next(1,101);
         pers.volgNr=getal;
         pers.persNaam=Tools.nrToString(getal); // перевожу цыфры в слова "1" = "один", "2" = "два"
         pers.persVoornaam=Tools.nrToString(getal - 1); // тут типа тоже самое
         //pers.gebDatum=gebDatum;  // это я знаю как потом заполнить датами, я их тоже сгенерю.
      
      }
      // а здесь мы будем сортировать данные  по колонкам в листвью.
      private void listView1_ColumnClick(object sender, System.Windows.Forms.ColumnClickEventArgs e)
      {
         // Установка свойства ListViewItemSorter на новый объект
         // ListViewItemComparer.
         this.listView1.ListViewItemSorter = new ListViewItemComparer(e.Column);
         // Вызов метода сортировки для ручной сортировки.
         listView1.Sort();
      }


Уже полдня лазю по инету и нигде не могу найти. :( На уроке препод говорил , что
Persoon[] studenten - создает типа массив со всеми данными из структуры Persoon.
Но у меня чего-то ничего не получается.
Код события private void btnGen_Click не окончательный. Там надо как раз прописать как из структур создать массив. Поля структуры заполню сгенерированными числами и датами. А потом вывести данные в листвью.

Проблема в СИНТАКСИСЕ создания массива из структур.

Заранее спасибо.

Thomas
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 246
Зарегистрирован: 12.11.2005 (Сб) 0:17
Откуда: "Сказочное королевство"

Сообщение Thomas » 03.02.2006 (Пт) 22:13

Да, может кому пригодиться
Вот функция перевода цыфры в слово
Код: Выделить всё
      public static string nrToString(int x)
      {
         string strx=x.ToString();
         string res="";
         for(int i=0;i<strx.Length;i++)
         {
            switch(strx.Substring(i,1))       
            {         
               case "1":   
                  res += "een";
                  break;                 
               case "2":           
                  res += "twee";
                  break;       
               case "3":           
                  res += "drie";
                  break;
               case "4":   
                  res += "vier";
                  break;                 
               case "5":           
                  res += "vijf";
                  break;         
               case "6":           
                  res += "zes";
                  break;
               case "7":   
                  res += "zeven";
                  break;                 
               case "8":           
                  res += "acht";
                  break;       
               case "9":           
                  res += "negen";
                  break;
               case "0":   
                  res += "nul";
                  break;         
            }
         }
         return res;
      }


Я ее здесь в отдельный класс Tools поместил.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 04.02.2006 (Сб) 6:21

1. Persoon[] studenten объявляет массив, который потом надо создать и заполнять. Точно так же, как и любой другой. Покажи, как ты объявляешь и заполняешь массив int. И объясни, как ты собираешься заполнять массив Persoon. Откуда. Из чего.


2. О ужас...

Даже если возиться со строками, будет что-то типа
Код: Выделить всё
public static string nrToString(int x)
{
  static string[] arr = new string[] {"nul","een","twee","drie","vier","vijf","zes","zeven","acht","negen"};
  string res="";
  string strx=x.ToString();
 
  for(int i=0;i<strx.Length;i++)
  {
    res += arr[int.Parse(strx.Substring(i,1))];
  }
}


Но на самом деле,
Код: Выделить всё
public static string nrToString(int x)
{
  static string[] arr = new string[] {"nul","een","twee","drie","vier","vijf","zes","zeven","acht","negen"};
  string res=""; int r=0;
 
  do
  {
    r=x%10;
    res = arr[r] + res;
    x = (int)x/10;
  } while (x!=0);
}
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Thomas
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 246
Зарегистрирован: 12.11.2005 (Сб) 0:17
Откуда: "Сказочное королевство"

Сообщение Thomas » 04.02.2006 (Сб) 21:32

GSerg
Приветствую.
Спасибо что откликнулся. Я конечно чайник. Ночь поспал, а утром проснулся и пришел к тойже мысли что и ты мне написал.
Persoon[] studenten объявляет массив, который потом надо создать и заполнять.

В общем после описания структуры нужно обьявить массив состоящий из этих структур. А потом в коде обработчика события создать этот массив и заполнить.
Код: Выделить всё
public struct Persoon  // обьявил структуру
      {
         public int volgNr;
         public string persNaam;
         public string persVoornaam;
         public DateTime gebDatum;
      }

      public Persoon[]pers; // обьявил массив состоящий из структур
      
      // этот обработчик события  создаёт массив из структур и выводит  в листвью.
      private void btnGen_Click(object sender, System.EventArgs e)
      {
         pers=new Persoon[20]; // создал массив из 20-ти структур
         int getal;
         Random gen = new Random();
         for(int i=0;i<20;i++)
         {
            getal=gen.Next(1,101); //генерю случайные числа
            pers[i].volgNr=getal; // заполняю массив структур этими числами
            pers[i].persNaam=Tools.nrToString(getal); // перевожу числа в слова "1" = "один", "2" = "два"
            pers[i].persVoornaam=Tools.nrToString(getal - 1); // тут типа тоже самое
            //pers[i].gebDatum=gebDatum;

            // далее вывод этих данных по колоннам в листвью.
            listView1.Items.Add((i+1).ToString());
            listView1.Items[i].SubItems.Add(pers[i].volgNr.ToString());
            listView1.Items[i].SubItems.Add(pers[i].persNaam);
            listView1.Items[i].SubItems.Add(pers[i].persVoornaam);

          }
      }


Данные генерятся от балды конечно. Так это для упражнения чтоб было что сортировать.

В реальной ситуации данные для структуры нужно будет заполнять из формы.

Еще раз спасибо за отклик и подсказки. Твои замечания не остануться без внимания и пригодяться в будущем.

Всего доброго.


Вернуться в C#

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 9

    TopList  
cron