количество слов в строке C#

Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain

Ответить
drumer91
Сообщения: 8
Зарегистрирован: 20 ноя 2009, 22:29

помогите написать программу. которая бы считала количество слов в строке, слова разделены пробелами
вот я сам писал...

Код: Выделить всё

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
class Lord
{
    public int kolvo(string s)
    {
        int i;
        int n = 0;
        for (i = 1; i <= s.Length; i++)
        {
            if (s == "")
                break;
            else
            {

                if ((i<=s.Length)&&(s[i]==' '))
                    continue;
                if (s[i]!=' ')
                {
                    if (i == s.Length)
                    {
                        n++;
                        break;
                    }
                    
                    
                        if ((i+1<s.Length)&&(s[i + 1] == ' '))
                        {
                            n++;
                            continue;
                        }
                    if ((i+1<s.Length)&&(s[i + 1] != ' '))
                    {
                        continue;

                    }

                }

            }
            

        }
        return (n);
    }
}


namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            string ss;
            int c;
            Lord Max = new Lord();
            Console.WriteLine("Введите строку");
            ss = Console.ReadLine();
            c = Max.kolvo(ss);
            Console.WriteLine("Количество слов в строке = " + c);
            Console.ReadLine();


        }
    }
}

выдаёт ошибку Индекс находился вне границ массива.
помогите пожалуйста
Аватара пользователя
WinMain
Сообщения: 929
Зарегистрирован: 14 янв 2005, 10:30
Откуда: Москва
Контактная информация:

Слишком запутанный у тебя код. Вот как это делается...

Код: Выделить всё

[size=84][color=#0000ff][size=84][color=#0000ff]using[/color][/size][/color][/size][size=84] System;[/size]
[size=84][color=#0000ff][size=84][color=#0000ff]using[/color][/size][/color][/size][size=84] System.Collections.Generic;[/size]
[size=84][color=#0000ff][size=84][color=#0000ff]using[/color][/size][/color][/size][size=84] System.Text;[/size]
 
[size=84][color=#0000ff][size=84][color=#0000ff]namespace[/color][/size][/color][/size][size=84] WordCount[/size]
[size=84]{[/size]
[size=84][color=#0000ff][size=84][color=#0000ff]class [/color][/size][/color][/size][size=84][color=#2b91af][size=84][color=#2b91af]Program[/color][/size]
[/color][/size][size=84]{[/size]
[size=84][color=#0000ff][size=84][color=#0000ff]  static [/color][/size][/color][/size][size=84][color=#0000ff][size=84][color=#0000ff]void[/color][/size][/color][/size][size=84] Main([/size][size=84][color=#0000ff][size=84][color=#0000ff]string[/color][/size][/color][/size][size=84][] args)[/size]
[size=84]  {[/size]
[size=84][color=#0000ff][size=84][color=#0000ff]    int[/color][/size][/color][/size][size=84] nCount = GetWordCount(text);[/size]
[size=84][color=#008000][size=84][color=#008000]    //[/color][/size]
[/color][/size][size=84][color=#2b91af][size=84][color=#2b91af]    Console[/color][/size][/color][/size][size=84].WriteLine(nCount);[/size]
[size=84][color=#2b91af][size=84][color=#2b91af]    Console[/color][/size][/color][/size][size=84].ReadLine();[/size]
[size=84]  }[/size]
[size=84][color=#008000][size=84][color=#008000]  // Подсчёт числа слов в строке...[/color][/size]
[/color][/size][size=84][color=#0000ff][size=84][color=#0000ff]  static [/color][/size][/color][/size][size=84][color=#0000ff][size=84][color=#0000ff]int[/color][/size][/color][/size][size=84] GetWordCount([/size][size=84][color=#2b91af][size=84][color=#2b91af]String[/color][/size][/color][/size][size=84] str)[/size]
[size=84]  {[/size]
[size=84][color=#0000ff][size=84][color=#0000ff]    int[/color][/size][/color][/size][size=84] nCount = 0;[/size]
[size=84][color=#0000ff][size=84][color=#0000ff]    bool[/color][/size][/color][/size][size=84] alpha = [/size][size=84][color=#0000ff][size=84][color=#0000ff]false[/color][/size][/color][/size][size=84];[/size]
[size=84][color=#0000ff][size=84][color=#0000ff]    for[/color][/size][/color][/size][size=84] ([/size][size=84][color=#0000ff][size=84][color=#0000ff]int[/color][/size][/color][/size][size=84] i = 0; i < str.Length; i++)[/size]
[size=84]    {[/size]
[size=84][color=#0000ff][size=84][color=#0000ff]      if[/color][/size][/color][/size][size=84] (str[i] == [/size][size=84][color=#a31515][size=84][color=#a31515]' '[/color][/size][/color][/size][size=84] || str[i] == [/size][size=84][color=#a31515][size=84][color=#a31515]'\t'[/color][/size][/color][/size][size=84])[/size]
[size=84]      {[/size]
[size=84]        alpha = [/size][size=84][color=#0000ff][size=84][color=#0000ff]false[/color][/size][/color][/size][size=84];[/size]
[size=84]      }[/size]
[size=84][color=#0000ff][size=84][color=#0000ff]      else[/color][/size]
[/color][/size][size=84]      {[/size]
[size=84][color=#0000ff][size=84][color=#0000ff]        if[/color][/size][/color][/size][size=84] (alpha == [/size][size=84][color=#0000ff][size=84][color=#0000ff]false[/color][/size][/color][/size][size=84])[/size]
[size=84]        {[/size]
[size=84]          alpha = [/size][size=84][color=#0000ff][size=84][color=#0000ff]true[/color][/size][/color][/size][size=84];[/size]
[size=84]          nCount++;[/size]
[size=84]        }[/size]
[size=84]      }[/size]
[size=84]    }[/size]
[size=84][color=#0000ff][size=84][color=#0000ff]    return[/color][/size][/color][/size][size=84] nCount;[/size]
[size=84]  }[/size]
[size=84][color=#008000][size=84][color=#008000]  // Текстовая строка для примера...[/color][/size]
[/color][/size][size=84][color=#0000ff][size=84][color=#0000ff]  static [/color][/size][/color][/size][size=84][color=#2b91af][size=84][color=#2b91af]String[/color][/size][/color][/size][size=84] text = [/size][size=84][color=#a31515][size=84][color=#a31515]"Буря мглою небо кроет, вихри снежные крутя."[/color][/size][/color][/size][size=84];[/size]
[size=84]}[/size]
[size=84]}[/size]
Правда у меня строка задана статически прямо в тексте программы, но это не принципиально.
drumer91
Сообщения: 8
Зарегистрирован: 20 ноя 2009, 22:29

большое Вам спасибо)
Newbie
Сообщения: 148
Зарегистрирован: 06 сен 2009, 19:45

что-то вы фигней страдаете господа)

Код: Выделить всё

string s = "234 234 23 s dwg re 34 3 tf gr rt et 35 3 sf";
string[] st = s.Split(' ');
int count = 0;
foreach (string _s in st)
{
     count++;
}
Аватара пользователя
Decoder
Сообщения: 308
Зарегистрирован: 19 фев 2008, 23:11
Откуда: Moscow

Код: Выделить всё

int count = 0;
foreach (string _s in st)
{
     count++;
}
Вместо этого наверно было бы проще так сделать...

st.GetLength();



Поумнеть несложно, куда труднее от дури избавиться.
Ответить