Модераторы: Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [C#] ошибки в программе со строкам, индексирование и свойстваНаписал програм 
V
    Опции темы
ArniLand
Дата 11.4.2010, 19:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Написал программу по следующему заданию. При компиляции выдает ошибки помогите их исправить пожалуйста. Если возможно, подправите пожалуйста мою программу и выдайте ее правильный вариант. Также покажите пожалуйста как реализовать в program.cs вывод символов в верхнем регистре и результат подсчета количества гласных букв.
Задание:
Класс инкапсулирует одномерный массив из элементов символьного типа. Создать индексатор, который предотвращает нарушение границы массива и возвращает символ лишь в верхнем регистре. Создать свойство, доступное для чтения закрытого элемента - данного, что содержит количество гласных букв в массиве. Результат выполнение вывести на экран. В Program.cs реализовать сам вывод на экран.

Ошибки:
Цитата

c:\WINDOWS\Microsoft.NET\Framework\v3.5\Csc.exe /noconfig /nowarn:1701,1702 /errorreport:prompt /warn:4 /define:DEBUG;TRACE /reference:"C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.5\System.Core.dll" /reference:"C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.5\System.Data.DataSetExtensions.dll" /reference:c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Data.dll /reference:c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.dll /reference:c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Xml.dll /reference:"C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.5\System.Xml.Linq.dll" /debug+ /debug:full /filealign:512 /optimize- /out:"obj\Debug\laba index.exe" /target:exe Program.cs Properties\AssemblyInfo.cs Row.cs
D:\Мои документы\Visual Studio 2008\Projects\laba index\laba index\Row.cs(13,33): error CS0236: A field initializer cannot reference the non-static field, method, or property 'laba_index.Row.charray'
D:\Мои документы\Visual Studio 2008\Projects\laba index\laba index\Row.cs(12,16): (Related location)
D:\Мои документы\Visual Studio 2008\Projects\laba index\laba index\Row.cs(26,31): error CS0029: Cannot implicitly convert type 'bool' to 'int'
D:\Мои документы\Visual Studio 2008\Projects\laba index\laba index\Row.cs(31,31): error CS0029: Cannot implicitly convert type 'bool' to 'int'
D:\Мои документы\Visual Studio 2008\Projects\laba index\laba index\Row.cs(32,28): error CS0031: Constant value '0' cannot be converted to a 'char'
D:\Мои документы\Visual Studio 2008\Projects\laba index\laba index\Row.cs(39,21): error CS0200: Property or indexer 'string.this[int]' cannot be assigned to -- it is read only
D:\Мои документы\Visual Studio 2008\Projects\laba index\laba index\Row.cs(40,31): error CS0029: Cannot implicitly convert type 'bool' to 'int'
D:\Мои документы\Visual Studio 2008\Projects\laba index\laba index\Row.cs(44,31): error CS0029: Cannot implicitly convert type 'bool' to 'int'
D:\Мои документы\Visual Studio 2008\Projects\laba index\laba index\Row.cs(64,29): error CS0151: A value of an integral type expected
D:\Мои документы\Visual Studio 2008\Projects\laba index\laba index\Row.cs(66,30): error CS0029: Cannot implicitly convert type 'char' to 'method group'
D:\Мои документы\Visual Studio 2008\Projects\laba index\laba index\Row.cs(67,30): error CS0029: Cannot implicitly convert type 'char' to 'method group'
D:\Мои документы\Visual Studio 2008\Projects\laba index\laba index\Row.cs(70,24): error CS0266: Cannot implicitly convert type 'int' to 'char'. An explicit conversion exists (are you missing a cast?)
D:\Мои документы\Visual Studio 2008\Projects\laba index\laba index\Program.cs(12,33): error CS1525: Invalid expression term 'char'
D:\Мои документы\Visual Studio 2008\Projects\laba index\laba index\Program.cs(12,34): error CS0443: Syntax error; value expected
D:\Мои документы\Visual Studio 2008\Projects\laba index\laba index\Program.cs(12,36): error CS1026: ) expected
D:\Мои документы\Visual Studio 2008\Projects\laba index\laba index\Program.cs(12,46): error CS1525: Invalid expression term '{'
D:\Мои документы\Visual Studio 2008\Projects\laba index\laba index\Program.cs(12,47): error CS1002: ; expected
D:\Мои документы\Visual Studio 2008\Projects\laba index\laba index\Program.cs(12,51): error CS1002: ; expected
D:\Мои документы\Visual Studio 2008\Projects\laba index\laba index\Program.cs(12,51): error CS1525: Invalid expression term ','
D:\Мои документы\Visual Studio 2008\Projects\laba index\laba index\Program.cs(12,53): error CS1002: ; expected
D:\Мои документы\Visual Studio 2008\Projects\laba index\laba index\Program.cs(12,57): error CS1002: ; expected
D:\Мои документы\Visual Studio 2008\Projects\laba index\laba index\Program.cs(12,57): error CS1525: Invalid expression term ','
D:\Мои документы\Visual Studio 2008\Projects\laba index\laba index\Program.cs(12,59): error CS1002: ; expected
D:\Мои документы\Visual Studio 2008\Projects\laba index\laba index\Program.cs(12,62): error CS1002: ; expected
D:\Мои документы\Visual Studio 2008\Projects\laba index\laba index\Program.cs(12,62): error CS1525: Invalid expression term ','
D:\Мои документы\Visual Studio 2008\Projects\laba index\laba index\Program.cs(12,64): error CS1002: ; expected
D:\Мои документы\Visual Studio 2008\Projects\laba index\laba index\Program.cs(12,67): error CS1002: ; expected
D:\Мои документы\Visual Studio 2008\Projects\laba index\laba index\Program.cs(12,67): error CS1525: Invalid expression term ','
D:\Мои документы\Visual Studio 2008\Projects\laba index\laba index\Program.cs(12,69): error CS1002: ; expected
D:\Мои документы\Visual Studio 2008\Projects\laba index\laba index\Program.cs(12,72): error CS1002: ; expected
D:\Мои документы\Visual Studio 2008\Projects\laba index\laba index\Program.cs(12,72): error CS1525: Invalid expression term ','
D:\Мои документы\Visual Studio 2008\Projects\laba index\laba index\Program.cs(12,74): error CS1002: ; expected
D:\Мои документы\Visual Studio 2008\Projects\laba index\laba index\Program.cs(12,77): error CS1002: ; expected


Код программы:
Код

//Row.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace laba_index
{
    class Row
    {
        public int Length;
        public int errflag;
        char[] charray;
        string str = new string(charray);

        public Row(string str)
        {
            this.str = str;
        }

        public char this[int i]
        {
            get
            {
                if (ok(i))
                {
                    errflag = false;
                    return Char.ToUpper(str[i]);
                }
                else
                {
                    errflag = true;
                    return 0;
                }
            }
            set
            {
                if (ok(i))
                {
                    str[i] = value;
                    errflag = false;
                }
                else
                {
                    errflag = true;
                }
            }
        }
        private bool ok(int i)//метод возвращает значение true, если индекс в пределах границ
        {
            if (i >= 0 & i < Length)
                return true;
            return false;
        }



        public char VowelsCount
        {
            get
            {
                int count = 0;
                foreach (char c in charray)
                {
                    switch (char.ToUpper)
                    {
                        case 'A': count++; break;
                        case 'E': count++; break;
                    }
                }
                return count;
            }
        }
    }
}

//Program.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace laba_index
{
    class Program
    {
        static void Main(string[] args)
        {
            Row r = new Row(char[] charray = {'A' , 'b' , 'E', 'r', 't', 'y'};
        }
    }
}


    
       
   




                
               





        
    



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


Опытный
**


Профиль
Группа: Участник
Сообщений: 373
Регистрация: 31.10.2008
Где: Ростов-на-Дону

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



Скажем, вот так:
Код

 class Row
    {
        private int _length;
        private int _vowelsCount;
        private readonly char[] _vowels = { 'a', 'e', 'y', 'u', 'i', 'o', };
        private char[] _array;

        public Row(char[] chars)
        {
            _array = chars;
            _length = chars.Length;
        }

        public Row()
        {
            _length = 0;
            _array = new char[0];
        }

        public char this[int index]
        {
            get
            {
                // если запрашиваемый элемент находитися
                // за пределами массива, бросам исключение
                if (index < _length || index > _length)
                    throw new ArgumentOutOfRangeException("index", index, "Индекс находился за пределами массива");

                return char.ToUpper(_array[index]);
            }
        }

        public int VowelsCount
        {
            get
            {
                int count = 0;

                // Подсчитываем гласные в массиве
                foreach (char c in _array)
                {
                    switch (char.ToUpper(c))
                    {
                        case 'A': count++; break;
                        case 'E': count++; break;
                        case 'I': count++; break;
                        case 'O': count++; break;
                        case 'U': count++; break;
                        case 'Y': count++; break;
                    }
                }
                return count;
            }
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            try
            {
                Row row = new Row(new char[] { 'i', 't', 's', 't', 'r', 'i', 'n', 'g' });

                // Раскомментировать для исключения
                // Console.WriteLine(row[-1]);

                Console.Write("Vowels count: {0}", row.VowelsCount);
                Console.ReadLine();
            }
            catch (Exception error)
            {
                Console.WriteLine(error.Message);
                Console.ReadLine();
            }
        }
    }

PM MAIL   Вверх
ArniLand
Дата 11.4.2010, 20:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



откомпилировал ваш вариант программы, выдает такие ошибки, как их исправить?
Цитата

D:\Documents\Visual Studio 2008\Projects\ConsoleApplication4\ConsoleApplication4\Program.cs(24,27): error CS0246: The type or namespace name 'ArgumentOutOfRangeException' could not be found (are you missing a using directive or an assembly reference?)
D:\Documents\Visual Studio 2008\Projects\ConsoleApplication4\ConsoleApplication4\Program.cs(59,13): error CS0103: The name 'Console' does not exist in the current context
D:\Documents\Visual Studio 2008\Projects\ConsoleApplication4\ConsoleApplication4\Program.cs(60,13): error CS0103: The name 'Console' does not exist in the current context
D:\Documents\Visual Studio 2008\Projects\ConsoleApplication4\ConsoleApplication4\Program.cs(62,16): error CS0246: The type or namespace name 'Exception' could not be found (are you missing a using directive or an assembly reference?)
D:\Documents\Visual Studio 2008\Projects\ConsoleApplication4\ConsoleApplication4\Program.cs(64,13): error CS0103: The name 'Console' does not exist in the current context
D:\Documents\Visual Studio 2008\Projects\ConsoleApplication4\ConsoleApplication4\Program.cs(65,13): error CS0103: The name 'Console' does not exist in the current context


PM MAIL   Вверх
Fortnox
Дата 11.4.2010, 20:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 373
Регистрация: 31.10.2008
Где: Ростов-на-Дону

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



В начале файла проверьте импорт типов из пространств имен:
(это должно быть в начале файла)
Код
using System;
using System.Collections.Generic;
using System.Text;


Это сообщение отредактировал(а) Fortnox - 11.4.2010, 20:08
PM MAIL   Вверх
ArniLand
Дата 11.4.2010, 20:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



так как я не сильно разбираюсь в шарпе, просьба к вам объяснить пожалуйста, что делают вот эти строчки?:
Код

private readonly char[] _vowels = { 'a', 'e', 'y', 'u', 'i', 'o', };


Код

throw new ArgumentOutOfRangeException("index", index, "Индекс находился за пределами массива");


Код

catch (Exception error)

PM MAIL   Вверх
Fortnox
Дата 11.4.2010, 20:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 373
Регистрация: 31.10.2008
Где: Ростов-на-Дону

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



ArniLand, конечно:
Код

private readonly char[] _vowels = { 'a', 'e', 'y', 'u', 'i', 'o', };

Объявляем массив char, состоящий из гласных, делаем его readonly (инициализация массива во время объявления). 
Эту строчку можно удалить, я недоглядел, что она не используется в принципе.

Код

throw new ArgumentOutOfRangeException("index", index, "Индекс находился за пределами массива");

Сообщаем (throw) об исключении (ошибке) ArgumentOutOfRange (аргумент вне допустимого предела значений, в данном случае либо меньше 0, либо больше размера массива). В качестве информации об ошибке передаем:
"index" - имя параметра (переменной), который вызвал ошибку
index -  значение index
3 параметр - информационное сообщение.
Можно было конечно просто возвращать символ какой-нибудь, например 'N', но лучше вызвать ошибку, чтобы ее можно было перехватить и, если нужно, вывести пользователю сообщение. Для этого, в Main, я использовал связку try-catch - грубо говоря, код, исполняемый в блоке try{...}, защищен, если происходит исключение (возникает ошибка), в зависимости от типа ошибки, она обрабатывается в блоке catch{...}, где выводится сообщение об ошибке для пользователя.

Код

catch (Exception error)

Тут собственно, обработка (перехват) всех ошибок, так как класс Exception является базовым для всех других классов для обработки ошибок.

Это сообщение отредактировал(а) Fortnox - 11.4.2010, 20:32
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




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


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

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