Ошибка: Программа не содержит статического метода "Main", подходящего для точки входа - C#

Узнай цену своей работы

Формулировка задачи:

Доброго времени суток! Подскажите, пожалуйста, почему мой Main() является неподходящим для входа? Заранее премного благодарен!
using System;
using System.Net;
using System.Collections.Generic;
using System.Text;
using System.IO;
 
    class ReadDBF
    {
        static byte[] f; 
        static byte[] fut; 
        static int[, , , , ,] t; 
        static int[] p; 
        static ushort[] v0;
        static byte b10 = 10, b0 = 48, b9 = 57, del = 127;
        
        static byte B2(int k)
        {
            byte bn = f[k + 1], b = f[k];
            if (b < b0 || b > (byte)53 || bn < b0 || bn > b9)
            { 
                 b = del; 
                 Console.WriteLine("Ошибка! Нецифровой символ в дате или времени, или >59 - байт №" + k); 
                 return b; 
            }
            b -= b0; 
            bn -= b0; 
            b *= b10; 
            b += bn; 
            return b;
        }
                
        static void Main ()
        {
            bool ch = false;
            int m, h, l, n, last, leng, j = 1, k = 48, j1 = 0, j2 = 0, jb = 0, j0 = 0, sn = 1, s2, s4, s5, i = 0,
                yi, yc, nch = 0, nnoch = 0, near = 0, noint = 0, pi, ds, vi;
            int[] s = new int[10];
            int[] nf = new int[9];
            string[] sf = { "RTS", "SBRF", "Si", "GAZR", "LKOH", "VTBR", "ROSN", "GMKN", "SBPR" };
            int[] maxp = { 252000, 9300, 40000, 39000, 29000, 11000, 30000, 90000, 6000 };
            int[] minp = { 45000, 1300, 20000, 9700, 9300, 1800, 9000, 10000, 600 };
            byte y = b0, mon = 0, dat = 0, hr = 0, mnt = 0, sec = 0, o = 48, q = 0, yn, mn, dn, b23 = 23, b59 = 59, b19 = 19,
               sp = 32, a = 42, hy = 45, po = 46, c = 44, co = 58,
                R = 82, T = 84, S = 83, B = 66, F = 70, G = 71, A = 65, Z = 90, L = 76, K = 75, O = 79, H = 72, V = 86, P = 80,
                N = 78, M = 77, bi = 105;
            DateTime dt = DateTime.Now; 
            yi = dt.Year; 
            if (yi > 2000) 
                yi -= 2000; 
            yn = (byte)yi; 
            mn = (byte)dt.Month; 
            dn = (byte)dt.Day;
            yi = yn << 8; 
            yi += mn; 
            yi <<= 8; 
            yi += dn;
            WebClient user = new WebClient();
...
}}

Решение задачи: «Ошибка: Программа не содержит статического метода "Main", подходящего для точки входа»

textual
Листинг программы
using System;
using System.Net;
 
class ReadDBF
{
    static byte[] f; static byte[] fut; static int[, , , , ,] t; static int[] p; static ushort[] v0;
    static byte b10 = 10, b0 = 48, b9 = 57, del = 127;
 
    static byte B2(int k)
    {
        byte bn = f[k + 1], b = f[k];
        if (b < b0 || b > (byte)53 || bn < b0 || bn > b9)
        { b = del; Console.WriteLine("Ошибка! Нецифровой символ в дате или времени, или >59 - байт №" + k); return b; }
        b -= b0; bn -= b0; b *= b10; b += bn; return b;
    }
 
    static void Main(string[] args)
    {
        bool ch = false;
        int m, h, l, n, last, leng, j = 1, k = 48, j1 = 0, j2 = 0, jb=0, j0=0, sn = 1, s2, s4, s5, i = 0,
            yi, yc, nch = 0, nnoch = 0, near=0, noint=0, pi, ds, vi;        
        int[]    s  = new int[10];
        int[]    nf = new int[ 9];
        string[] sf = {  "RTS","SBRF", "Si","GAZR","LKOH","VTBR","ROSN","GMKN","SBPR" };
        int[]  maxp = { 252000, 9300, 40000, 39000, 29000, 11000, 30000, 90000, 6000  };
        int[]  minp = {  45000, 1300, 20000,  9700,  9300,  1800,  9000, 10000,  600  };        
        byte y = b0, mon = 0, dat = 0, hr = 0, mnt = 0, sec = 0, o = 48, q=0, yn, mn, dn, b23=23, b59=59, b19=19,
           sp = 32, a = 42, hy = 45, po = 46, c = 44, co = 58,
            R = 82, T = 84, S = 83, B = 66, F = 70, G = 71, A = 65, Z = 90, L = 76, K = 75, O = 79, H = 72, V = 86, P = 80,
            N = 78, M = 77, bi = 105;
        DateTime dt = DateTime.Now; yi = dt.Year; if (yi > 2000) yi -= 2000; yn = (byte)yi; mn = (byte)dt.Month; dn = (byte)dt.Day;
        yi = yn << 8; yi += mn; yi <<= 8; yi += dn;
        WebClient user = new WebClient();
        // цикл по дате
        string uri = "http://ftp.rtsnet.ru/pub/FORTS/pubstat/20100901/fut_deal.dbf";
        try
        {
            Console.WriteLine("побайтное чтение файла " + uri);
            f = user.DownloadData(uri);
        }
        catch (WebException exc)
        {
            Console.WriteLine(exc);
        }
        catch (NotSupportedException exc)
        {
            Console.WriteLine(exc);
        }
        Console.WriteLine("чтение закончилось");
        /* f[b];
         собственно заголовок b=0-31
         b=04  4   m=RecordsCount  Количество записей в таблице  Все  
         b=08  2   h=HeaderSize  Размер заголовка в байтах  Все  
         b=10  2   l=RecordSize  Размер записи в байтах  Все
         b=16 + начало описания n-го поля  1  Byte  s[n] - Размер поля см. Таблицу 4  Все
         n - число полей (столбцов) */
        m = (((((f[4] << 8) + f[5]) << 8) + f[6]) << 8) + f[7];
        h = (f[8] << 8) + f[9];
        l = (f[10] << 8) + f[11];
        n = (h - 33) / 32;
        last = h + m * l; leng = f.Length;
        if (last + 1 != leng) Console.WriteLine("Внимание!!! last=" + last + ", а f.Length=" + leng);
        s[0] = 1; for (; j <= n; j++, k += 32) { s[j] = f[k]; sn += s[j]; }
        s2 = s[1] + s[2]; s4 = s2 + s[3] + s[4]; s5 = s4 + s[5];
        // запись в файл всех переменных и байтов заголовка
        if (sn != l || f[h - 1] != (byte)13 || f[last] != (byte)26)
        { Console.WriteLine("Заголовок " + uri + " или записи - испорчены!!!"); return; } //goto save; вместо return       
        if (y == b0)
        {
            j1 = h + s[1] - 7;
            dat = B2(j1); if (dat == del || f[j1 + 2] != po) return; if (dat > (byte)31 || dat < (byte)1) { Console.WriteLine("дата=", +dat + "байт №" + j1); return; }
            mon = B2(j1 + 3); if (mon == del || f[j1 + 5] != po) return; if (mon > (byte)12 || mon < (byte)1) { Console.WriteLine("месяц=", +mon + "байт №" + (j1 + 3)); return; }
            y = B2(j1 + 6); if (y == del) return; if (y > (byte)12 || y < (byte)8) { Console.WriteLine("месяц=", +mon + "байт №" + (j1 + 3)); return; }
            yc = (((y << 8) + mon) << 8) + dat; if (yc > yi) { Console.WriteLine("дата ещё не наступила, байт №" + j1); return; }
            y -= (byte)8; mon--; dat--;
            j2 = j1 + 8;
            hr = B2(j2); if (hr == del || f[j2 + 2] != co) return; if (hr > b23) { Console.WriteLine("час=", +hr + "в байте №" + j2); return; }
            mnt = B2(j2 + 3); if (mnt == del || f[j2 + 5] != co) return;
            sec = B2(j2 + 6); if (sec == del) return;
        }
        for (k = h; k < last; k += l)
        {
            if (f[k] != sp || f[k] != a) { Console.WriteLine("Испорчен флаг удаления uri=" + uri + " байт №" + k); return; }//goto save;
            j = k + s[1] - 7;
            if (f[j] != f[j1] || f[j + 1] != f[j1 + 1])
            {
                dat = B2(j); if (dat == del || f[j + 2] != po) return; if (dat > (byte)31 || dat < (byte)1) { Console.WriteLine("дата=", +dat + "байт №" + j); return; }
                mon = B2(j + 3); if (mon == del || f[j + 5] != po) return; if (mon > (byte)12 || mon < (byte)1) { Console.WriteLine("месяц=", +mon + "байт №" + (j + 3)); return; }
                y = B2(j + 6); if (y == del) return; if (y < (byte)8) { Console.WriteLine("месяц=", +mon + "байт №" + (j + 3)); return; }
                yc = (((y << 8) + mon) << 8) + dat; if (yc > yi) { Console.WriteLine("дата ещё не наступила, байт №" + j); return; }
                y -= (byte)8; mon--; dat--;
                j1 = j;
            }
            j += 14;
            ch = f[j + 1] != f[j2 + 7] || f[j] != f[j2 + 6] || f[j - 2] != f[j2 + 4] || f[j - 3] != f[j2 + 3] || f[j - 5] != f[j2 + 1] || f[j - 6] != f[j2];
            if (ch)
            {
                nch++;
                hr = B2(j - 6); if (hr == del || f[j - 4] != co) return; if (hr > b23) { Console.WriteLine("час=", +hr + "в байте №" + (j - 6)); return; }
                mnt = B2(j - 3); if (mnt == del || f[j - 1] != co) return;
                sec = B2(j); if (sec == del) return;
                j2 = j;
                if (hr < b10) continue;
                hr -= b10;
            }
            else nnoch++;
            //DATE,D    TIME,C,8    ISIN,C,25   PRICE,N,20,5    VOL,N,10,0  ID_DEAL,N,10,0  TYPE,N,1,0
            //1             2          3           4                 5           6               7
            //последние п   е   р   в   ы   е   п     о     с     л     е     д     н     и      е
            // sp пробел; a *;  hy -; po .; c ,; co :; b0 символ 0; b9 символ 9; b10 число 10;
            j = k + s2 + 1;
            o = b0; //             0-RTS  1-SBRF 2-Si   3-GAZR 4-LKOH 5-VTBR 6-ROSN 7-GMKR 8-SBPR
            if (f[j] == R)
            {
                if (f[j + 1] == T && f[j + 2] == S && f[j + 3] == hy) { o = 0; j += 4; }
                else if (f[j + 1] == O && f[j + 2] == S && f[j + 3] == N && f[j + 4] == hy) { o = 6; j += 5; } else continue;
            }
            else if (f[j] == S)
            {
                if (f[j + 1] == B && f[j + 4] == hy) if (f[j + 2] == R && f[j + 3] == F) { o = 1; j += 5; }
                    else if (f[j + 2] == P && f[j + 3] == R) { o = 8; j += 5; } else continue;
                else if (f[j + 1] == bi && f[j + 2] == hy) { o = 2; j += 3; } else continue;
            }
            else if (f[j] == G && f[j + 3] == R && f[j + 4] == hy) if (f[j + 1] == A && f[j + 2] == Z) { o = 3; j += 5; }
                else if (f[j + 1] == M && f[j + 2] == K) { o = 7; j += 5; } else continue;
 
            else if (f[j] == L && f[j + 1] == K && f[j + 2] == O && f[j + 3] == H && f[j + 4] == hy) { o = 4; j += 5; }
 
            else if (f[j] == V && f[j + 1] == T && f[j + 2] == B && f[j + 3] == R && f[j + 4] == hy) { o = 5; j += 5; } else continue;
 
            if (o == b0) { Console.WriteLine("Ошибка в программе!!! o>8, т.е. нужного фьючерса нет, но на continue не попадает"); return; }
            if (f[j + 1] == po)
            {
                if (f[j + 4] == po || f[j + 3] == po) { Console.WriteLine("Другой формат даты исполнения фьючерса - байт №" + j); continue; }
                if (f[j + 4] != sp) { Console.WriteLine("Слишком длинная дата исполнения фьючерса - байт №" + j); continue; }
                if (f[j] < b0 || f[j] > b9) { Console.WriteLine("Нецифровой символ вместо месяца исполнения фьючерса - байт №" + j); return; }
                q = B2(j + 2); if (q < (byte)8 || q > yn + (byte)1) { Console.WriteLine("Ошибочный год исполнения фьючерса - байт №" + (j + 3)); return; }
                q = f[j]; q -= b0; if (q != (byte)3 && q != (byte)6 && q != (byte)9) { Console.WriteLine("Промежуточный месяц исполнения фьючерса - байт №" + j); continue; }
            }
            else
            {
                if (f[j + 2] != po) { Console.WriteLine("Нет точки в дате исполнения фьючерса - байт №" + j); return; }
                if (f[j + 5] == po || f[j + 4] == po) { near++; continue; }
                if (f[j + 5] != sp) { Console.WriteLine("Слишком длинная дата исполнения фьючерса - байт №" + j); continue; }
                q = B2(j + 3); if (q < (byte)8 || q > yn + (byte)1) { Console.WriteLine("Ошибочный год исполнения фьючерса - байт №" + (j + 4)); return; }
                q = B2(j); if (q == (byte)0 || q > (byte)12) { Console.WriteLine("Ошибочный месяц исполнения фьючерса - байт №" + j); return; }
                if (q != (byte)12 && q != (byte)3 && q != (byte)6 && q != (byte)9) { Console.WriteLine("Промежуточный месяц исполнения фьючерса - байт №" + j); continue; }
            }
            j0=k+s4; jb=j0-7;
            for (j = j0; j > jb; j--)
            { if (f[j] == c || f[j] == po) { noint++; goto cont_k; }
            if (f[j] == sp) break;
            if (f[j] < b0 || f[j] > b9) { Console.WriteLine("Нецифровой символ в цене фьючерса - байт №" + j); return; }
            }
            if (j == j0) { Console.WriteLine("Ошибка!!! Нет цены в конце её поля - байт №" + j); return; }
            pi = f[j0] - 48; ds = 10;
            for (jb = j0 - 1; jb > j; jb--) { pi += (f[jb] - 48) * ds; ds *= 10; }
            if (pi > maxp[o] || pi < minp[o]) { Console.WriteLine("Ошибка!!! Цена - вне диапазона - байт №" + jb); return; }
 
            j0 = k + s5; jb = j0 - 7;
            for (j = j0; j > jb; j--)
            {                
                if (f[j] == sp) break;
                if (f[j] < b0 || f[j] > b9) { Console.WriteLine("Нецифровой символ в объёме" + j); return; }
            }
            if (j == j0) { Console.WriteLine("Ошибка!!! Нет объёма в конце его поля - байт №" + j); return; }
            vi = f[j0] - 48; ds = 10;
            for (jb = j0 - 1; jb > j; jb--) { vi += (f[jb] - 48) * ds; ds *= 10; }
            if (vi == 0) {Console.WriteLine("Ошибка!!! Нулевой объём, o=" + o + "байт №" + jb); return; }
            if (vi > 65535) { vi = 65535; Console.WriteLine("Объём > 65535 o=" + o + "байт №" + jb); }
            nf[o]++;
            p[i] = pi; v0[i] = (ushort)vi;
            if (ch) { t[y, mon, dat, hr, mnt, sec] = i; ch = false; }
            o <<= 4; o += q; fut[i] = o;
            i++;
cont_k:;}       
            for (j=0; j <= n; j++)  Console.WriteLine("s[" + j  + "]=" + s[j]);
            Console.WriteLine("m=" + m + " i=" + i + " nch=" + nch + " nnoch=" + nnoch + " near" + near + " noint=" + noint);
        // конец цикла по датам
        // чтение не существующего файла
        uri = "http://ftp.rtsnet.ru/pub/FORTS/pubstat/20100828/fut_deal.dbf";
            try
            {
                Console.WriteLine("побайтное чтение файла " + uri);
                f = user.DownloadData(uri);
            }
            catch (WebException exc)
            {
                Console.WriteLine(exc);
            }
            catch (NotSupportedException exc)
            {
                Console.WriteLine(exc);
            }
            Console.WriteLine("чтение закончилось");
 
            for (j = 0; j < 9; j++) Console.WriteLine(sf[j] + "- " + nf[j]);
          dialog:  Console.WriteLine("час :"); hr = Convert.ToByte(Console.ReadLine());
            if (hr > b23) { Console.WriteLine("час > 23"); goto dialog; }
            if (hr > b19) { mon = 7; dat = 30; }
            hr -= b10;
          dm:  Console.WriteLine("минута :");  mnt = Convert.ToByte(Console.ReadLine());
          if (mnt > b59) { Console.WriteLine("минута > 59"); goto dm; }
          sm:  Console.WriteLine("секунда :"); sec = Convert.ToByte(Console.ReadLine());
          if (sec > b59) { Console.WriteLine("секунда > 59"); goto sm; }
            k = t[y, mon, dat, hr, mnt, sec];
        if(k==(byte)0) {Console.WriteLine("на этой секунде не было тиков"); goto sm;}
            for (n = sec + 1; n < 60; n++) { j = t[y, mon, dat, hr, mnt, n]; if (j > k) goto end; }
            if (mnt >= b59) { if (h >= b23) j = k; else {sec = 0; mnt = 0; hr++;  j = t[y, mon, dat, hr, mnt, sec];} }
            else { mnt++; sec = 0; }
        end: for (i = k; i <= j; i++) { o = fut[i]; q=o; o >>= 4; q <<= 4; q >>= 4;
            Console.WriteLine(sf[o] + "-" + q + "." + (y + 8) + " p=" + p[i] + " v=" + v0[i]);}
        goto dialog;
    }      
    }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4.167 из 5
Похожие ответы