powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / инициировать массив структур
12 сообщений из 12, страница 1 из 1
инициировать массив структур
    #32799395
muk07
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Help, please новенькому в С# (старенькому в С++).
В С++ разбирая строку конечным автоматом я пишу:
struct TRANSITION{
int State; // состояние автомата
int Class; // класс входного символа
int Next; // следующее состояние
void (*f)(); // указатель на функцию, выполняемую при переходе
}
// затем инициализирую таблицу переходов автомата
static TRANSITION tr[]={
{1,DIGIT,2,f1},
{2,3,SMALL_LETTER,7},
....................
};

Как это может выглядеть в С#?
Здесь 2 вопроса:
1) как инициализировать массив структур
2) как засунуть делегата в инициализацию
...
Рейтинг: 0 / 0
инициировать массив структур
    #32799629
Фотография Лиман Артём
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
delegate void CallBackDelegate();
struct  TRANSITION{
int State; // состояние автомата
int Class; // класс входного символа
int Next; // следующее состояние
CallBackDelegate func; // указатель на функцию, выполняемую при переходе
public TRANSITION( int state, int class, int next,CallBackDelegate f)
{
 State = state;
 ...
 func = f;
}
}

TRANSITION[] T = new TRANSITION[2] { 
                             new TRANSITION(4,3,6, new CallBackDelegate(MyFunc1)),
                             new TRANSITION(2,4,6, new CallBackDelegate(MyFunc2))
...
Рейтинг: 0 / 0
инициировать массив структур
    #32799656
muk07
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо, понял. Сейчас попробую.
...
Рейтинг: 0 / 0
инициировать массив структур
    #32799856
muk07
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
К сожалению, текст
delegate void TranFun();
struct TRANSITION
{
int State;
int Next;
byte Class;
TranFun f;
TRANSITION(int State,int Next,byte Class,TranFun f)
{
this.State=State;
this.Class=Class;
this.Next=Next;
this.f=f;
}
};
private static void dummy(){}
TRANSITION [] tr= new TRANSITION [2]=
{
new TRANSITION(1,2,DIGIT, new Formula.TranFun(dummy)),
new TRANSITION(2,2,cUPPER,new Formula.TranFun(dummy))
}

Выдает ошибки типа
Class, struct or interface method must have return type.
Это по поводу строки
new TRANSITION(1,2,DIGIT, new Formula.TranFun(dummy)),
есть и другие
...
Рейтинг: 0 / 0
инициировать массив структур
    #32799884
Фотография Лиман Артём
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
честно говоря код набивал в бровзере по-этому и с ошибками...ну ты с ними справился, или все же нужно оторктировать мне?
...
Рейтинг: 0 / 0
инициировать массив структур
    #32800028
muk07
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ответь, пожалуйста, если не очень трудно.
...
Рейтинг: 0 / 0
инициировать массив структур
    #32800101
Фотография josia
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
    delegate void TranFun();
    struct TRANSITION 
    {
      int State;
      int Next;
      byte Class;
      TranFun f;
      public TRANSITION(int State,int Next,byte Class,TranFun f)
      {
        this.State=State;
        this.Class=Class;
        this.Next=Next;
        this.f=f;
      }
    };
    private static void dummy(){}
    TRANSITION [] tr= new TRANSITION [2]
    {
      new TRANSITION(1,2,DIGIT, new Formula.TranFun(dummy)),
      new TRANSITION(2,2,cUPPER,new Formula.TranFun(dummy))
    }; 
...
Рейтинг: 0 / 0
инициировать массив структур
    #32801262
muk07
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Но ведь это точное повторение моего текста, а он выдаёт ошибки. Может быть у вас хватит терпения посмотреть полный текст класса? - ошибка может быть вызвана окружающим контестом. Я помещу его на форум когда вернусь с работы домой - через пару часов.
...
Рейтинг: 0 / 0
инициировать массив структур
    #32801943
muk07
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
// Это почти полный текст
// взгляни пожалуйста ещё раз
using System;

namespace ChemicalEquation
{
/// <summary>
/// Summary description for Formula.
/// </summary>
struct ELEMENT
{
String Name;
int LeftCount,RightCount;
};
struct TRANSITION
{
int State;
int Next;
byte Class;
TranFun f;
TRANSITION(int State,int Next,byte Class,TranFun f)
{
this.State=State;
this.Class=Class;
this.Next=Next;
this.f=f;
}
};

public class Formula
{
private const int MAXELEMENT=20;
private const byte cUPPER=0;
private const byte cLOWER=1;
private const byte DIGIT=2;
private const byte LEFT_BRACKET=3;
private const byte RIGHT_BRACKET=4;
private const byte PLUS=5;
private const byte EQUAL=6;
private const byte OTHER=7;
private ELEMENT [] Elm=new ELEMENT[MAXELEMENT];
private int nElm; // number of elements
private int State;
private String Input;

private byte Classify(char z)
{
if(z>='A' && z<='Z')return cUPPER;
if(z>='a' && z<='z')return cLOWER;
if(z>='0' && z<='9')return DIGIT;
if(z=='(' || z=='[') return LEFT_BRACKET;
if(z==')' || z==']') return RIGHT_BRACKET;
if(z=='=') return EQUAL;
return OTHER;
}
public Formula(String inp)
{
Input=inp; State=1; nElm=0;
}
delegate void TranFun();
private static void dummy(){}
TRANSITION [] tr= new TRANSITION [2]=
{
new TRANSITION(1,DIGIT,2, new Formula.TranFun(dummy)),
new TRANSITION(2,cUPPER,2,new Formula.TranFun(dummy))
}
}
...
Рейтинг: 0 / 0
инициировать массив структур
    #32801988
Фотография Лиман Артём
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
концовка должна быть такой
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
private static void dummy()
		{
			 
			TRANSITION [] tr= new TRANSITION [2]
			{
				new TRANSITION(1,DIGIT,2, new Formula.TranFun(dummy)),																		new TRANSITION(2,cUPPER,2,new Formula.TranFun(dummy))	} ;
		}
	}
}

...
Рейтинг: 0 / 0
инициировать массив структур
    #32801991
Фотография Лиман Артём
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
куда то странным образом при вставке делось еще одно
Код: plaintext
new TRANSITION(2,cUPPER,2,new Formula.TranFun(dummy))
...
Рейтинг: 0 / 0
инициировать массив структур
    #32801994
muk07
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Разобрался. Спасибо, всё работает.
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / инициировать массив структур
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]