Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Структуры в c# 
V
    Опции темы
okaton
Дата 26.9.2007, 22:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 213
Регистрация: 24.11.2006

Репутация: нет
Всего: нет



Доброго времени суток. Мне нужно переработь код с Паскаля на c# и я столкнулся вот с такой трудностью:

здесь описываются типы (структура) и переменные 

Код

TYPE
Ins_Data = Record
              Age     : Word;
              key     : word;
              Data_I  : Array[1..9,1..20] of Word;
     end;

Ins_Tab2 = record
              D_Zad   : Array[0..20,0..10] of Single;
              end;

Ins_Tab3 = record
                D_Zad   : Array[0..20,1..10] of Single;

Out_Data = record
              Test    : Array[1..9,1..7] of Single;
              B5_Shk  : Array[1..9] of Single;
              Zad     : Array[1..10] of Single;
              ko      : Single;
              kpo     : Single;
              ssz     : Single;
              x       : Single;
              ki      : Single;
              pg      : Single;
              ob_sz   : Single;
              i       : Integer;
              end;

VAR
I_Tab3   : Array[1..3] of Ins_Tab3;
O_Data   : Out_Data;


Вот сдесь она используется

Код

For m:=1 To 9 Do
        Begin
        e:=Word(Abs(Trunc(O_Data.Test[m,1])));
        O_Data.Test[m,4]:=
          I_Tab3[I_Data.Age].D_Zad[e,m];
        End;


Принцип я понял вроде бы, а вот как это отразить в шарпе понять не получается:(
Помогите кто чем сможет

P.S. как объявить массив с заданными параметрами в структуре?

Это сообщение отредактировал(а) okaton - 27.9.2007, 15:13
PM MAIL   Вверх
Bogdan1024
Дата 27.9.2007, 12:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1436
Регистрация: 28.9.2005
Где: Киев

Репутация: 5
Всего: 13



А в чём сама проблема? Ты просишь нас весь этот код набрать под C#?  smile 


--------------------
user posted image
PM MAIL   Вверх
okaton
Дата 27.9.2007, 12:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 213
Регистрация: 24.11.2006

Репутация: нет
Всего: нет



Bogdan1024, Ну вобщем да, я попробовал создать структуру такого рода

Код

struct Ins_Tab3 //Ins_Tab3 = record
        {
            public Single[] D_Zad = new Single [19,10];  //D_Zad   : Array[0..20,1..10] of Single;            
        }


и подцепить к ней    
Код

Ins_Tab3[] I_Tab3 = new Ins_Tab3[3]     //I_Tab3   : Array[1..3] of Ins_Tab3;


неполучилось, вообще я со структурами столкнулся первый раз, как можно записать эту структуру со ссылками а потом воспользоваться ею

и как объявить массив с заданными параметрами в структуре???



Это сообщение отредактировал(а) okaton - 27.9.2007, 15:12
PM MAIL   Вверх
Bogdan1024
Дата 27.9.2007, 15:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1436
Регистрация: 28.9.2005
Где: Киев

Репутация: 5
Всего: 13



Код

        class Ins_Tab3 //Ins_Tab3 = record
        {
            public Single[,] D_Zad = new Single[19,10];  //D_Zad   : Array[0..20,1..10] of Single;            
        }

Ибо у структур не могут быть инициализаторы, они есть только у классов. Или делай класс или инициализируй структуры руками.

Это сообщение отредактировал(а) Bogdan1024 - 27.9.2007, 15:27


--------------------
user posted image
PM MAIL   Вверх
okaton
Дата 27.9.2007, 15:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 213
Регистрация: 24.11.2006

Репутация: нет
Всего: нет



Bogdan1024,  а каким образом можно проинициализировать структуру руками 2 неделю пытаюсь сделать, неполучается решил обратиться за помощью.

Все что у меня получилось это
Код

struct Ins_Tab3 //Ins_Tab3 = record
        {
            public Single[,] D_Zad;
        }

а где мне параметры массива определять и вообще где его создавать?

Это сообщение отредактировал(а) okaton - 27.9.2007, 15:38
PM MAIL   Вверх
bend0r
Дата 27.9.2007, 15:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 76
Регистрация: 14.9.2005

Репутация: 1
Всего: 2



там где ты с ней собираеся работать
Код

class Start
    {
        // The main entry point for the application.
        [STAThread]
        static void Main(string[] args)
        {
            Ins_Tab3[] I_Tab3 = new Ins_Tab3[3];
            Ins_Tab3 test;
            test.D_Zad = new Single[19, 10];
        }
        
    }


    struct Ins_Tab3
    {
        public Single[,] D_Zad;

    }

PM MAIL   Вверх
okaton
Дата 27.9.2007, 21:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 213
Регистрация: 24.11.2006

Репутация: нет
Всего: нет



bend0r,  а как между собой связаны class Start и struct Ins_Tab3?
PM MAIL   Вверх
okaton
Дата 27.9.2007, 21:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 213
Регистрация: 24.11.2006

Репутация: нет
Всего: нет



Что-то совсем ничего не получается:(
Будут рад любой разумной помощи только объясняйте пожалуйста как можно подробней.
PM MAIL   Вверх
bend0r
Дата 28.9.2007, 11:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 76
Регистрация: 14.9.2005

Репутация: 1
Всего: 2



Цитата(okaton @  27.9.2007,  21:17 Найти цитируемый пост)
bend0r,  а как между собой связаны class Start и struct Ins_Tab3? 

они находятся в одном пространстве имен. то что я выложил это консольное приложение в котором метод Main является точкой входа в программу. ты можешь создавать и работать сосвоими структурами в любом другом классе.

посмотри это, мож понятней будет:
Код

using System;
using System.Web.Mail;

namespace Test
{
    class Start
    {
        // The main entry point for the application.
        [STAThread]
        static void Main(string[] args)
        {
            //Создаешь масив из 3 элементов Ins_Tab3
            Ins_Tab3[] massIns_Tab3 = new Ins_Tab3[3];
            //в цикле создаешь, инициализируешь и добавляешь в massIns_Tab3
            for (int i = 0; i < 3; i++)
            {
                Ins_Tab3 test;
                test.D_Zad = new float [,]{{1,2,3,4,},{4,3,2,1}};
                //test.D_Zad = new float[10,10];
                massIns_Tab3[i] = test;
            }
        }
        
    }


    struct Ins_Data
    {
        public string Age;
        public string key;
        public string[,] Data_I;
    }

    struct Ins_Tab2
    {
         public Single[,] D_Zad;
    }

    struct Ins_Tab3
    {
        public Single[,] D_Zad;
    }

   struct Out_Data
   {
       public Single[,] Test;
       public Single[] B5_Shk; 
       public Single[] Zad;
       public Single ko;
       public Single kpo;
       public Single ssz;
       public Single x;
       public Single ki;
       public Single pg;
       public Single ob_sz;
       public int i;
   }

}



PM MAIL   Вверх
okaton
Дата 28.9.2007, 19:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 213
Регистрация: 24.11.2006

Репутация: нет
Всего: нет



bend0r, СПАСИБО ОГРОМНОЕ!!! 


Возникли тупые вопросы
Правильно ли я понимаю что структуры инициализируются в моем случае таки образом 
                                          Out_Data O_Data;         Ins_Tab3 I_Tab3;         Ins_Data I_Data;

А зачем нужен "using System.Web.Mail;"?

Почему структуры находятся в не класса Start?

Как мне заполнить "I_Tab3[I_Data.Age].D_Zad[e,m];" в каждом Age (их всего 3) я так понимаю свой D_Zad[e,m] в котором свои данные?

                                                                                                (так не получается)
Как мне посчитать "O_Data.Test[m, 4] = I_Tab3[I_Data.Age].D_Zad[e, m];" как мне добраться до D_Zad[e, m]?

Вот эту запись я не очень понял test.D_Zad = new float [,]{{1,2,3,4,},{4,3,2,1}}; :(
PM MAIL   Вверх
mr.DUDA
Дата 29.9.2007, 00:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 110
Всего: 232



Цитата(okaton @  28.9.2007,  19:08 Найти цитируемый пост)
А зачем нужен "using System.Web.Mail;"?

Для создания объектов из неймспейса System.Mail

Цитата(okaton @  28.9.2007,  19:08 Найти цитируемый пост)
Почему структуры находятся в не класса Start?

Где объявили класс структуры - там он и находится.

Цитата(okaton @  28.9.2007,  19:08 Найти цитируемый пост)
Как мне заполнить "I_Tab3[I_Data.Age].D_Zad[e,m];" в каждом Age (их всего 3) я так понимаю свой D_Zad[e,m] в котором свои данные?

По порядку заполняйте. В цикле например.

Цитата(okaton @  28.9.2007,  19:08 Найти цитируемый пост)
Вот эту запись я не очень понял test.D_Zad = new float [,]{{1,2,3,4,},{4,3,2,1}}; :(

Синтаксис аналогичен С++



--------------------
user posted image
PM MAIL WWW   Вверх
okaton
Дата 29.9.2007, 10:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 213
Регистрация: 24.11.2006

Репутация: нет
Всего: нет



mr.DUDA, А как мне добраться до D_Zad[e,m] в I_Tab3[I_Data.Age].D_Zad[e,m] - такой ведь записи нет это из паскаля

у меня совсем плохо, я в с++ совсем "не очень", если не сложно, все-таки объясните test.D_Zad = new float [,]{{1,2,3,4,},{4,3,2,1}};

P.S. а какие объектов из неймспейса System.Mail здесь присутствуют?

Это сообщение отредактировал(а) okaton - 29.9.2007, 10:55
PM MAIL   Вверх
okaton
Дата 1.10.2007, 10:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 213
Регистрация: 24.11.2006

Репутация: нет
Всего: нет



Нашел интересный пример

Код

public static class global 
{
    static int[][,] k;
    static global () 
    {
        k = new int[3][,];
        for (int b = 0; b < 3; b++)
        {
            k[b] = new int[21, 10];
        }
    }
}


только не получается добраться до k:(

теперь массивы 0,1 и 2  нужно каким-то образом заполнить по порядку данными из файла

считываю файл таким образом
Код

float[] shorts;
            using (BinaryReader br = new BinaryReader(File.OpenRead("Single.Float")))
            {
                List<float> res = new List<float>();
                for (Int32 i = 0; br.BaseStream.Position < br.BaseStream.Length; i++)
                    res.Add(br.ReadSingle());
                shorts = res.ToArray();                
            }    


Как мне записать этот файл по порядку в массивы к[0], k[1], и k[2] ?



Это сообщение отредактировал(а) okaton - 1.10.2007, 13:25
PM MAIL   Вверх
okaton
Дата 1.10.2007, 13:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 213
Регистрация: 24.11.2006

Репутация: нет
Всего: нет



Справился сам, спасибо тем кто помогал!


 

Это сообщение отредактировал(а) okaton - 1.10.2007, 13:42
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0549 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.