Avatar billede juks Novice
26. juli 2012 - 11:49 Der er 11 kommentarer og
1 løsning

filereader

hej jeg er har brug for hjælp til at lave en class der kan hente nogle testdata ind er der nolge der kan hjælpe mig

Se Filen____ output skulle gerne give

int[] DemandIn = { 0, 19, 21, 6 ,19};
int[] X = { 82, 96, 50, 49,13};
int[] Y = { 76, 44, 5, 8,7};
Int VCAPACITY = 100

 
Filen_____
NAME : A-n32-k5
COMMENT : (Augerat et al, No of trucks: 5, Optimal value: 784)
TYPE : CVRP
DIMENSION : 32
EDGE_WEIGHT_TYPE : EUC_2D
CAPACITY : 100
NODE_COORD_SECTION
1 82 76
2 96 44
3 50 5
4 49 8
5 13 7
6 29 89
7 58 30
8 84 39
9 14 24
DEMAND_SECTION
1 0
2 19
3 21
4 6
5 19
6 7
7 12
8 16
9 6
Avatar billede juks Novice
26. juli 2012 - 11:52 #1
Jeg kan godt læse det ind hvis det kun er  koordinaterne men ikke demand endvidere så er problemet hvor jeg håndtere teksten , ville gerne undgå at skulle rette alle test filerne. hvis muligt.

public class knuder
    {

        List<int> x_coord = null;
        List<int> y_coord = null;
        public int KAntal;
       
        public void read_coordinates(string filename)
        {
            TextReader tr = new StreamReader(filename);

            // Læser textfilen ind i en min liste
            List<string> input = new List<string>();

            string str = tr.ReadLine();
            while (str != null)
            {
                input.Add(str);
                str = tr.ReadLine();
            }

            char[] delimiters = new char[] { ' ' };

            x_coord = new List<int>();
            y_coord = new List<int>();
            KAntal = input.Count ;
            for (int i = 0; i < input.Count; i++)
            {
                string[] split_str = input[i].Split(delimiters);
                x_coord.Add(int.Parse(split_str[1]));
                y_coord.Add(int.Parse(split_str[2]));

            }
         
           
         
        }

        public int get_x(int id)
        {
            return x_coord[id];
        }

        public int get_y(int id)
        {
            return y_coord[id];
                 
        }
        public int KnuderAntal
        {
            get
            {
                return KAntal-1;
            }
     
        }

    }
Avatar billede Syska Mester
26. juli 2012 - 12:32 #2
Hvordan ser indholdet af kun filen ud? Kan ikke lige gennemskue hvad der er attribute på den og hvad der er indhold?

Er det første ID'er du skal sammenkædes på?

Dvs så du får:
"X:82 Y:76 Demand: 0" for første row?

mvh
Avatar billede Syska Mester
26. juli 2012 - 12:36 #3
For at andre nemmere kan læse din kode bør du følge lidt naming conventions: http://msdn.microsoft.com/en-us/library/ms229043.aspx

http://en.wikipedia.org/wiki/Naming_convention_(programming)#.NET
Avatar billede juks Novice
26. juli 2012 - 13:01 #4
Det er lige præcis sådan her
"X:82 Y:76 Demand: 0" for første row

skulle gerne ende med at have det


int[] DemandIn = { 0, 19, 21, 6 ,19....};
int[] X = { 82, 96, 50, 49,13...};
int[] Y = { 76, 44, 5, 8,7....};
Int VCAPACITY = 100
Avatar billede Syska Mester
26. juli 2012 - 13:41 #5
Så mangler jeg kun formatet ... jeg kan ikke lige gennemskue hvad der er indhold og information om den.
Avatar billede juks Novice
26. juli 2012 - 13:52 #6
Avatar billede Syska Mester
26. juli 2012 - 14:07 #7
class Program
{
    public class Foo
    {
        public int X { get; private set; }
        public int Y { get; private set; }
        public int Demand { get; set; }

        public Foo(int x, int y)
        {
            X = x;
            Y = y;
        }

        public override string ToString()
        {
            return string.Format("X: {0}, Y: {1}, Demand: {2}", X, Y, Demand);
        }
    }

    static void Main(string[] args)
    {
        var dictionary = new Dictionary<string, Foo>();

        var allLines = File.ReadAllLines(@"C:\test.vrp.txt", Encoding.Default);

        foreach (var line in allLines.Skip(7))
        {
            var strings = line.Trim().Split(new[] {' '}, StringSplitOptions.RemoveEmptyEntries);
            if(strings.Length == 3)
            {
                var key = strings[0];
                var x = int.Parse(strings[1]);
                var y = int.Parse(strings[2]);

                dictionary.Add(key, new Foo(x, y));
            }
            else if(strings.Length == 2)
            {
                var key = strings[0];

                if(!dictionary.ContainsKey(key))
                    throw new Exception(string.Format("Cannot find the key: '{0}' in the dictionary. This should never happen", key));

                dictionary[key].Demand = int.Parse(strings[1]);
            }
        }

        foreach (var foo in dictionary)
        {
            Console.WriteLine(foo);
        }
    }
}
Avatar billede juks Novice
26. juli 2012 - 14:49 #8
jeg er lige igang med at lære og forstå .. hav tålmodighed :-)
Avatar billede Syska Mester
26. juli 2012 - 14:54 #9
Jeg har skam massere af tid. Du siger bare til hvis der er noget du vil have forklaret.

mvh
Avatar billede juks Novice
26. juli 2012 - 15:28 #10
intet mindre end perfekt . tak endnu engang
Avatar billede juks Novice
26. juli 2012 - 15:32 #11
og jeg VED der kommer mere er ikke super haj til det der programmering og skal aflevere den 1. :-)

smid venligst et svar
Avatar billede Syska Mester
26. juli 2012 - 16:45 #12
Svar.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester



IT-JOB

Udviklings- og Forenklingsstyrelsen

Udbudsjurist til Danmarks største IT-udbud

Politiets Efterretningstjeneste

Netværks- og/eller firewallspecialister til PET

Udviklings- og Forenklingsstyrelsen

Business Analyst med drive og gåpåmod

Udviklings- og Forenklingsstyrelsen

ITSM-koordinator