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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблема с циклом удаления символа 
:(
    Опции темы
ArniLand
Дата 31.3.2010, 21:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Нужно чтобы из строчки удалялся символ "а", но почему то у меня этот цикл игнорируется. Подскажите что не так. 

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

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

namespace ConsoleApplication1
{
    class Row
    {

        public String dataRow;


        public Row(String str)
        {
            dataRow = str;
        }

        public string Zamena(String str)
        {
            StringBuilder sb = new StringBuilder(str);

            for (int j = 0; j < sb.Length; j++)
            {
                if (sb[j] == 'a')
                    sb[j] = ' ';
            }
            string corrected = sb.ToString();
            return corrected;
        }
    }
}

//Program.cs
using System;
using System.Collections.Generic;
using System.Linq;
[quote]
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Vedite kolichestvo strochek: ");
            int countRow = Convert.ToInt32(Console.ReadLine());

            Console.WriteLine("Vedite strochki: ");
            
            Text obgText = new Text(countRow);
            for (int i = 0; i < countRow; i++)
            {
                
                obgText.addRow(Console.ReadLine());
            }

            
            Console.WriteLine("----\n\n" + obgText.ToString() + "\n----\n");

            Console.WriteLine("Vedite nomer strochki dla ydalenia ");
            int numberOfRow = Convert.ToInt32(Console.ReadLine());
            if (numberOfRow < countRow)
            {
                
                obgText.remoweRow(numberOfRow - 1);
            }

            Console.WriteLine("----\n\n" + obgText.ToString() + "\n----\n");

            
            Console.WriteLine("Samaja dlinaja strochka v tekste: " + obgText.getMaxLenght());

           ;

            Console.WriteLine("Ochistka teksta.");
            
            obgText.removeAll();
            Console.WriteLine("----\n\n" + obgText.ToString() + "\n----\n");
        }
    }
}

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

namespace ConsoleApplication1
{
    class Text
    {
        
        private const int countRows = 100;
     
        private Row[] texts;
        
        private int amountRows;

        
        public Text(int amountRow)
        {
            amountRows = amountRow;
            texts = new Row[countRows];
            amountRows = 0;
        }

        
        public void addRow(string str)
        {
            texts[amountRows] = new Row(str);
            texts[amountRows].Zamena(str);
            amountRows++;
        }

       
        public void remoweRow(int numberRow)
        {
            for (int i = numberRow; i < (countRows - 1); i++)
            {
                texts[i] = texts[i + 1];
            }
            texts[countRows - 1] = null;
            amountRows--;
        }

      
        public void removeAll()
        {
            for (int i = 0; i < countRows; i++)
            {
                texts[i] = null;
            }
            amountRows = 0;
        }

        
        public string getMaxLenght()
        {
            string max = texts[0].dataRow;
            for (int i = 1; i < amountRows; i++)
            {
                if (texts[i].dataRow.Length > max.Length)
                {
                    max = texts[i].dataRow;
                }
            }

            return max;
        }
        
        public string ToString()
        {
            string str = "";
            for (int i = 0; i < amountRows; i++)
            {
                str = str + " " + texts[i].dataRow;
            }

            return str;
        }
    }
}



PM MAIL   Вверх
Certain
Дата 31.3.2010, 22:50 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Уже давно все реализовано

Код

string str = "sdfsdfsdf";
str = str.Replace('s', ' ');


на выходе str = " df df df"

Это сообщение отредактировал(а) Certain - 31.3.2010, 22:51
--------------------
Работа программиста и шамана имеет много общего - оба боpмочyт непонятные слова, совершают непонятные действия и не могут объяснить, как оно работает.
PM MAIL ICQ   Вверх
Экскалупатор
Дата 1.4.2010, 07:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1746
Регистрация: 1.4.2009
Где: г. Минск

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



Certain, ну вдруг человеку хочется свой собственный велосипед?...


ArniLand, а с чего ты решил что у тебя дело до цикла не доходит? возьми пошагово пройдись по проге и все станет ясно. я думаю дело в том что этот метод:
Код

public string Zamena(String str)
        {
            StringBuilder sb = new StringBuilder(str);
            for (int j = 0; j < sb.Length; j++)
            {
                if (sb[j] == 'a')
                    sb[j] = ' ';
            }
            string corrected = sb.ToString();
            return corrected;
        }

никуда не возвращает результат своей деятельности. т.е. return corrected; хочет вернуть строку, но ты ее никуда не принимаешь:
Код

public void addRow(string str)
        {
            texts[amountRows] = new Row(str);
            texts[amountRows].Zamena(str);
            amountRows++;
        }


отсюда получается что метод все что мог сделал, но результат ты не увидишь, потому что результат просто выбрасывается в мусор. исправь это и все будет нормально.
PM MAIL ICQ   Вверх
A5uKa
Дата 1.4.2010, 10:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


TЋ♥s F1rȜ iƧ BurȠiƞg
***


Профиль
Группа: Awaiting Authorisation
Сообщений: 1928
Регистрация: 30.8.2008

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



Код

    def str = "hellao";
    WriteLine(str.Where(x=>x!='a').ToArray());
    _ = ReadLine();

PM   Вверх
Certain
Дата 1.4.2010, 11:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Велосипед, так велосипед
дополню высказывания Экскалупатора
первое что бросается в глаза

Код

 public void addRow(string str)
        {
            texts[amountRows] = new Row(str);
            texts[amountRows].Zamena(str);
            amountRows++;
        }



возвращает значение типа string, но никуда не записывается
тогда уж
Код

texts[amountRows] = texts[amountRows].Zamena(str);


На твоем бы месте я сделал бы этот метод статическим
--------------------
Работа программиста и шамана имеет много общего - оба боpмочyт непонятные слова, совершают непонятные действия и не могут объяснить, как оно работает.
PM MAIL ICQ   Вверх
A5uKa
Дата 1.4.2010, 12:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


TЋ♥s F1rȜ iƧ BurȠiƞg
***


Профиль
Группа: Awaiting Authorisation
Сообщений: 1928
Регистрация: 30.8.2008

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



bicycle
Код

    mutable NewString;
    foreach(ch in "hellao")
        NewString += if (ch!='a') ch.ToString() else "_" ;
    Write(NewString);


или

Код

    mutable NewString : array[char] = array(10);
    mutable chars = 0 : int;
    foreach(ch in "hellao")
    {
        NewString[chars] = match (ch) {
            | 'a' => ' '
            | _ => ch 
        } ;
        chars++;
    }
    Write(NewString);
    _ = ReadKey();


Это сообщение отредактировал(а) A5uKa - 1.4.2010, 12:17
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Partizan
PashaPash

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


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

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


 




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


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

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